因此,我试图理解 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
选项,并且只有当您绝对确定自己在做什么时才使用它。