如何配置rsync以在远程服务器上创建目标目录?

13 浏览
0 Comments

如何配置rsync以在远程服务器上创建目标目录?

我想从本地计算机同步到服务器,同步的目录在服务器上不存在,我希望rsync先在服务器上创建该目录。如何实现?

0
0 Comments

问题的原因是用户ufk想要知道如何在远程服务器上使用rsync配置来创建目标目录。解决方法是通过在rsync连接之前发送一个ssh命令来创建目标目录。如果目录已经存在,则不会发生任何操作。这种方法只适用于使用ssh连接rsync的情况,如果不支持ssh而是通过rsync守护进程连接远程端,则无法使用此方法。

0
0 Comments

问题的原因是,旧版本的rsync工具没有提供一个选项来在远程服务器上创建目标目录。解决方法是使用rsync 3.2.3版本及更高版本中添加的--mkpath选项来创建目标目录。这个选项允许用户在同步文件时自动创建目标路径的组成部分。用户只需在源路径和目标路径的末尾都留下一个斜杠,所有递归的文件/文件夹将自动在两者之间同步。

要在旧系统上安装支持--mkpath选项的rsync 3.2.3版本(不建议用于生产环境),可以参考以下链接:askubuntu.com/questions/1389729/…

0
0 Comments

问题出现的原因:在使用rsync配置远程服务器时,有时候需要创建目标目录。然而,如果目标目录的层级较多,需要使用一些技巧来解决该问题,否则rsync命令可能会报错。

解决方法1:可以先运行一个独立的ssh ... mkdir -p命令来创建目标目录,然后再运行rsync命令。具体命令如下:

rsync -a --rsync-path="mkdir -p /tmp/x/y/z/ && rsync" $source user:/tmp/x/y/z/

解决方法2:可以使用--relative选项,只需指定目标目录的根目录,无需指定源目录的目录结构,rsync命令会自动创建相应目录。具体命令如下:

rsync -a --relative /new/x/y/z/ user:/pre_existing/dir/

解决方法3:如果只想要创建"y/z/"目录,而不是在"new/x/"目录下创建,可以在想要使用--relative的地方添加./。具体命令如下:

rsync -a --relative /new/x/./y/z/ user:/pre_existing/dir/

解决方法4:如果服务器上没有mkdir命令,可以使用如下hack方法:--rsync-path="echo f > /public/.keep && rsync /public/.keep /public/newfolder/ && rsync" \。虽然会创建一个额外的文件,但可以之后再删除。

解决方法5:如果在使用--rsync-path选项时出现错误,可以尝试对&&进行转义处理。

解决方法6:如果以上方法都无法解决问题,可以参考相关链接中的其他解决方案。

通过以上几种方法,可以解决使用rsync配置远程服务器时需要创建目标目录的问题。具体的解决方法根据不同情况选择,可以根据实际需要来配置rsync命令。

0