Ubuntu
rsync 同步太多文件
我有以下目錄結構:
/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),無論是否壓縮。