rsync同步太多的文件

我有以下目录结构:

/tmp1 \_ file1.txt \_ file2.txt /tmp2 \_ file1.txt \_ file2.txt \_ file3.txt /changes 

使用rsync的–compare-dest选项,我想要将/ tmp1中不存在的所有文件同步到/ tmp2中。 / tmp2中与/ tmp1不同的修改过的文件也应该同步到/ changes。

当我执行以下命令时:

 rsync -acvu --compare-dest=/tmp1/ /tmp2/ changes 

file3.txt将保存在更改中。 但也是file1.txt,尽pipe在这两个目录中的文件的MD5总和是相等的!

我错过了一些rsync参数吗? 提前致谢!

更新:

我发现不应该同步的文件具有文件权限-rw-rw-r-其他文件具有-rwxrwxr-x。 我无法find关于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是相等的!

rsyncman页指出

从版本2.6.4开始,可能会提供多个–compare-dest目录,这将导致rsync按照指定的顺序search列表以进行完全匹配。 如果发现只有属性不同的匹配项,则创build本地副本并更新属性。 如果找不到匹配项,则会select来自其中一个DIR的基础文件来尝试加快传输速度。

当我阅读它时,这意味着如果find的文件除了源和目的地的属性都是相同的,则不会从远程源服务器传输文件; 相反, rsync知道这些文件是相同的,所以使得拷贝在本地存储的changes/ ,但是将修改时间设置为远程实例的较新时间戳。

要确认这一点,请看下面的输出:

 [madhatta@risby test]$ ls -la tmp1 total 36 drwxrwxr-x. 2 madhatta madhatta 4096 Feb 3 10:50 . drwxrwxr-x. 4 madhatta madhatta 4096 Feb 3 11:01 .. -rw-rw-r--. 1 madhatta madhatta 23150 Feb 3 10:59 file1 -rw-rw-r--. 1 madhatta madhatta 224 Feb 3 10:50 file2 [madhatta@risby test]$ ls -la tmp2 total 36 drwxrwxr-x. 2 madhatta madhatta 4096 Feb 3 10:51 . drwxrwxr-x. 4 madhatta madhatta 4096 Feb 3 11:01 .. -rw-rw-r--. 1 madhatta madhatta 23150 Feb 3 11:00 file1 -rw-rw-r--. 1 madhatta madhatta 224 Feb 3 10:50 file2 -rw-rw-r--. 1 madhatta madhatta 0 Feb 3 10:51 file3.txt [madhatta@risby test]$ rsync -acvu --compare-dest=/home/madhatta/tmp/test/tmp1 tmp2/ changes sending incremental file list created directory changes ./ file1 file3.txt sent 215 bytes received 71 bytes 572.00 bytes/sec total size is 23,374 speedup is 81.73 

虽然它将file1报告为已被复制,但接收到的数据量(70多个字节)还不足以复制file1 (23kB),是否压缩。