
我正在使用 rsync 將檔案從 Mac 筆記型電腦備份到 Windows 筆記型電腦上的 USB 隨身碟 (exFAT)。 USB 隨身碟在我的家庭網路中共用,並安裝在我的 Mac 上。
當 rsync 重新發送所有檔案時,我注意到一個奇怪的問題,即使我沒有對它們進行任何修改。
當我打開時,--itemize-changes
我可以看到t
每個文件的輸出中都有該訊息,表明文件時間戳記是重新發送的原因。
>f..t.... netstat.txt
ls -lT
(macOS) 指示秒格式的時間戳,顯示檔案之間的一秒差異,來源較新。
$ ls -lT source/file.txt
-rwxr----- 1 user group 1176 Sep 19 22:32:59 2014 file.txt
$ ls -lT destination/file.txt
-rwx------ 1 user group 1176 Sep 19 22:32:58 2014 file.txt
在 rsync新增-c
選項會忽略時間戳差異,並跳過不必要的傳輸。但是,我想知道為什麼我的來源檔案和目標檔案的時間戳記差異為 1 秒(據我費心檢查)。
答案1
我知道檔案系統可以以不同的方式處理時間,因此這可能是差異的根源。您可以使用 調整 mod-time 比較的閾值--modify-window
。
# Ignore up to a 5 second difference. Tighten up as desired.
rsync --modify-window=5 do whatever...
更多詳細資訊可以在Rsync 的手冊頁。
--修改視窗
比較兩個時間戳記時,如果它們的差異不超過修改視窗值,則 rsync 會將時間戳視為相等。通常為 0(用於精確匹配),但您可能會發現在某些情況下將其設定為更大的值很有用。特別是,當與 MS Windows FAT 檔案系統(以 2 秒解析度表示時間)之間傳輸時,--修改視窗=1很有用(允許時間最多相差 1 秒)。