Rsync
rsync 聲明不同的文件,但 diff 沒有?
我在本地和伺服器上都有一個文件。我首先嘗試
rsync
在“dry-run”模式下執行,看看文件之間是否存在一些差異:$ rsync -aP --dry-run USER@192.168.0.55:/home/dir . USER@192.168.0.55's password: receiving incremental file list dir/myfile.txt
這顯然意味著該文件
dir/myfile.txt
是不同的,因為它將被更新。然後我用 a 檢查相同的文件diff
:$ ssh USER@192.168.0.55 'cat /home/dir/myfile.txt' | diff --report-identical-files - dir/myfile.txt USER@192.168.0.55's password: Files - and dir/myfile.txt are identical
因此,這些文件顯然是相同的。
那麼為什麼
rsync
要更新此文件-我如何從命令行確認原因?
rsync
將報告更改
- 權限差異
- 時間戳差異
- 內容(和文件大小)差異
在評論中,@roaima 指出,在rsync 手冊頁中可以選擇對這些更改進行總結:
-i, --itemize-changes output a change-summary for all updates
您可能會發現它很有用,儘管摘要很簡潔並且(在我手頭的版本中)僅報告類型(文件、連結或目錄)和名稱。這是我在 Debian 7 和測試機器上使用 rsync 3.0.9-4 和 3.1.1-3 看到的:
cd+++++++++ backup-invisible-island/ >f+++++++++ backup-invisible-island/.bash_history cL+++++++++ backup-invisible-island/conf -> ../system/invisible-island.net/conf cL+++++++++ backup-invisible-island/statistics -> ../system/invisible-island.net/statistics cd+++++++++ backup-invisible-island/anon_ftp/ cL+++++++++ backup-invisible-island/anon_ftp/AdaCurses -> pub/AdaCurses cL+++++++++ backup-invisible-island/anon_ftp/DEBS -> pub/DEBS cL+++++++++ backup-invisible-island/anon_ftp/GIT -> pub/GIT
對於我自己的使用,目錄時間戳的更改相對不重要。我使用的腳本僅顯示已更改的文件: