rsync 中断时源文件损坏

rsync 中断时源文件损坏

我正在运行一个脚本来将文件夹从客户端同步到服务器。

应用于脚本的语法是

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-filesrsync否则永远不会更改源中的任何内容(即使如此,它也只会在确认目标具有准确的副本时才会删除源文件)。因此,您写入目的地的更改一定会以其他方式影响源。

请仔细检查您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既不必要也不合适。

相关内容