我有以下目录结构:
/tmp1
\_ file1.txt
\_ file2.txt
/tmp2
\_ file1.txt
\_ file2.txt
\_ file3.txt
/changes
使用 rsync 的 --compare-dest 选项,我想将所有文件同步到 /tmp1 中但 /tmp2 中不存在的 /changes 中。/tmp2 中与 /tmp1 不同的修改文件也应同步到 /changes。
当我执行以下命令时:
rsync -acvu --compare-dest=/tmp1/ /tmp2/ changes
file3.txt 将保存在更改中。而且 file1.txt 虽然两个目录中文件的 md5 总和是相等的!
我错过了 rsync 的一些参数吗?提前致谢!
更新:
我发现不应该同步的文件有文件权限-rw-rw-r--其他人有-rwxrwxr-x。我找不到与 rsync 相关的这种行为。
两个目录上“ls -la”的输出:
# ls -la /tmp1
-rw-rw-r-- 1 1001 1001 4 Dec 31 15:00 file1.txt
-rwxrwxr-x 1 1001 1001 6 Dec 31 15:00 file2.txt
# ls -la /tmp2
-rw-rw-r-- 1 1001 1001 4 Dec 31 19:31 file1.txt
-rwxrwxr-x 1 1001 1001 6 Dec 31 15:00 file2.txt
-rwxrwxr-x 1 1001 1001 2 Dec 31 15:00 file3.txt
# ls -la /changes
-rw-rw-r-- 1 1001 1001 4 Dec 31 19:31 file1.txt
-rwxrwxr-x 1 1001 1001 2 Dec 31 15:00 file3.txt
两个目录中 file1.txt 的 md5sum 相等!
注释
man
页面_rsync
当我读到它时,这意味着如果它找到一个除了源和目标中的属性之外相同的文件,则该文件不会从远程源服务器传输;相反,
rsync
知道文件是相同的,因此changes/
从本地存储复制,但将修改时间设置为远程实例的较新时间戳。要确认这一点,请查看以下输出:
虽然它报告
file1
已被复制,但接收到的数据量(70 多个字节)不足以复制file1
(23kB),无论是否压缩。