Rsync

rsync 聲明不同的文件,但 diff 沒有?

  • January 12, 2018

我在本地和伺服器上都有一個文件。我首先嘗試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

對於我自己的使用,目錄時間戳的更改相對不重要。我使用的腳本僅顯示已更改的文件:

rsync:顯示何時覆蓋目標上的較新文件

引用自:https://unix.stackexchange.com/questions/293048