我正在运行一个脚本来将文件夹从客户端同步到服务器。
应用于脚本的语法是
rsync -avzP --append-verify --delete -e "SSH parameters" source_dir user@host:destination
但是,当 rsync 由于网络问题而中断时,rsync 重新启动时源文件会损坏。
例子: 传输前的源文件。
root@localhost:~# ls -Alth
total 1.1G
-rw-r--r-- 1 root root 1.0G Nov 12 08:56 testfile1GB
源文件传输中断后重新启动。
root@localhost:~# ls -Alth
total 152M
rw------- 1 root root 152M Nov 15 17:46 testfile1GB
目前使用的rsync版本3.1.1协议版本31。
请注意 rsync 版本无法更新。
如果有任何建议请告诉我。
答案1
除非您使用--remove-source-files
,rsync
否则永远不会更改源中的任何内容(即使如此,它也只会在确认目标具有准确的副本时才会删除源文件)。因此,您写入目的地的更改一定会以其他方式影响源。
请仔细检查您user@host:destination:
是否意外覆盖了源文件。换句话说,请确保该主机不是您的客户端,并且该主机没有与您的客户端共享相同的文件系统(例如,使用 NFS 或 Samba)。您可以按如下方式验证这一点:
本地系统,与您的示例位于同一目录中,source_dir
根据需要进行替换
touch source_dir/620014.tmp
ls -ld source_dir/620014.tmp
远程系统,酌情source_dir
更换destination
。 (如果您的rsync
命令实际上有source_dir/
而不是,source_dir
则该命令不得包含source_dir
在其路径中。)
ssh -nq user@host ls -ld destination/source_dir/620014.tmp
如果您获得相同的文件,则两个系统共享相同的文件系统,并且您的文件系统rsync
既不必要也不合适。