Linux NTFS 到 NTFS rsync 反復重新復製文件
我希望將掛載在 linux 機器的 NTFS 分區上的數據備份到另一台 linux 機器的 NTFS 分區。本地 NTFS 驅動器掛載了 root.root 擁有的所有文件,但遠端 NTFS 驅動器使用 plugdev 掛載(因此文件所有權是 root.plugdev)。
在這種情況下,rsync 顯然無法複製所有者/組和權限資訊,所以我一直在嘗試執行
sudo rsync -rltDvO --delete /ntfs/src/ user@remote.example.com:/ntfs/dest/
但是,每次我執行此命令時,它都會重新複製所有文件,而不僅僅是傳輸更改的文件。我曾嘗試使用 –modify-window 標誌,但這也無濟於事。
**更新:**它不是重新複製所有文件,而是重新計算每個文件的校驗和(或進行一些其他處理,導致列印文件名)。這與 e2fs 驅動器之間發生的情況相反,如果自上次 rsync 以來沒有對源和目標進行任何更改,則不會列印文件名。我猜這個處理是因為時間戳在 NTFS 上不可用(?)
**下一次更新:**權限似乎是其中的一部分:首先,也使用 -u 作為 rsync 標誌停止處理目標上的所有文件,但這不是我想要的。其次,如果我在遠端機器上使用具有 root 訪問權限(和 rsync 標誌 -avz)的帳戶,我實際上可以更改文件和目錄的時間戳。但是,某些文件會繼續被重新複製,而 –modify-window 似乎對此有所幫助(但似乎並不完全 - 我仍在嘗試找出原因。)
根據我的第二次更新,我的使用者權限不允許我設置時間。使用目標機器上的 root 帳戶執行 rsync,並
--modify-window=5
給了我合適的行為。(如果您在目標上沒有 root 訪問權限,-u 標誌可能會有所幫助,但前提是您確定沒有人會更改遠端系統上的文件。)
理想情況下,您總是希望使用
robocopy
它來處理時間戳的變化(FAT 最多 2 秒)。您可以在 Wine 中執行,但連接到遠端主機可能不方便。http://technet.microsoft.com/en-us/library/cc733145(WS.10).aspx
**編輯:**根據史蒂夫的評論,這個功能現在似乎在 rsync 3.0 中:
–修改視窗
當比較兩個時間戳時,如果它們的差異不超過 modify-window 值,rsync 會將它們視為相等。這通常為 0(對於精確匹配),但您可能會發現在某些情況下將其設置為更大的值很有用。特別是,在與 MS Windows FAT 文件系統(以 2 秒解析度表示時間)之間進行傳輸時, –modify-window=1 很有用(允許時間最多相差 1 秒)。