Rsync 正在重新傳送所有文件,因為文件具有不同的時間戳記(相差 1 秒?)

Rsync 正在重新傳送所有文件,因為文件具有不同的時間戳記(相差 1 秒?)

我正在使用 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 秒)。

相關內容