rsync 下载到临时目录直到文件完成,然后移动到完成目录

rsync 下载到临时目录直到文件完成,然后移动到完成目录

因此,我试图理解 rsync。我已经连续研究了至少 5 个小时,但我对此却一无所知。我正在连接到远程服务器,尝试从那里下载文件;到我的本地机器。问题是我收到了完整的消息,但没有下载任何文件,或者目录结构根本没有变化。我已经阅读了 rsync 的文档,并获得了我认为传递给 rsync 的正确参数。运行 rsync 命令时收到的消息如下:

sending incremental file list
drwxrwxr-x          4,096 2022/03/20 19:30:59 .

sent 60 bytes  received 64 bytes  248.00 bytes/sec
total size is 0  speedup is 0.00

我运行的命令是这样的:

sshpass -p "###" rsync -avzPe myhost:/path/ /home/user/Downloads/rsync/tmp/ --time-limit=420 --bwlimit=7680 --remove-source-files --port=2100 --log-file=/home/user/Downloads/rsync/rsync.log

它不会创建远程服务器所具有的空目录,也不会下载任何目录中的文件。我传递的参数中是否遗漏了什么?这样做的目的是将文件下载到临时目录中,然后在文件完成后将文件移动到已完成的文件夹而不是临时目录中。

如果有人能给我指明正确的方向,我提前谢谢了。

答案1

man rsync

 --rsh=COMMAND, -e        specify the remote shell to use

您似乎没有在命令中指定 shell,而是告诉 rsync 用作myhost:/path/远程 shell。

通过添加-e "ssh -p 2100"它应该可以工作。

完整命令:

rsync -avzP -e "ssh -p 2100" myhost:/path/ /home/user/Downloads/rsync/tmp/ --time-limit=420 --bwlimit=7680 --remove-source-files --log-file=/home/user/Downloads/rsync/rsync.log

请注意,您可能希望使用基于密钥的身份验证,而不是将密码放在命令中。

请注意,你应该非常小心使用该--remove-source-files选项,并且只有当您绝对确定自己在做什么时才使用它。

相关内容