Ubuntu

rsync 同步太多文件

  • February 3, 2016

我有以下目錄結構:

/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

從版本 2.6.4 開始,可以提供多個 –compare-dest 目錄,這將導致 rsync 以指定的順序搜尋列表以獲得精確匹配。 如果找到僅在屬性上有所不同的匹配項,則會製作本地副本並更新屬性。 如果未找到匹配項,則將選擇來自其中一個 DIR 的基礎文件以嘗試加快傳輸速度。

當我讀到它時,這意味著如果它找到一個除了源和目標中的屬性之外相同的文件,則該文件不會從遠端源伺服器傳輸;相反,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),無論是否壓縮。

引用自:https://serverfault.com/questions/753599