我正在上大量語音和文法分析的課程。他們給了我一個 Windows 10 網路帳戶。由於我對 Mac 和 Linux 更加熟悉(並且 Windows 的可用時間有限),因此我在 Mac 筆記型電腦上完成工作。
我自動掛載了我的 NTFS 目錄,但是他們的 LAN 有點不穩定,所以很多時候有些應用程式具有唯讀存取權或根本沒有存取權限。
因此,我在本地副本中工作並經常同步變化。但 rsync* 總是更新每個 NTFS 目錄——僅更新目錄,從不更新任何檔案(除了我實際更改的檔案)。大多數目錄我還沒瀏覽過同步報告子目錄樹中的所有更新。這不是什麼大事——幾秒鐘內就完成了——但它仍然很奇怪。
Windows 和 NTFS 對從未訪問過的目錄做了什麼操作,使 rsync 認為它們已更改?
答案1
允許以降低的精度比較修改時間
在這種類型的設定中,當您掛載到 NTFS 分割區時,您需要確保使用適當的參數,例如--modify-window=5
增加預設值,以允許以降低的精確度比較修改時間。
--modify-window When comparing two timestamps, rsync treats the timestamps as being equal if they differ by no more than the modify-window value. This is normally 0 (for an exact match), but you may find it useful to set this to a larger value in some situations. In particular, when transferring to or from an MS Windows FAT filesystem (which represents times with a 2-second resolution), --modify-window=1 is useful (allowing times to differ by up to 1 second).
更多資源
答案2
首先回答程式只讀的問題。由於網路共享是由windows控制的,windows只允許某些使用者權限做事。它可能是公共共享,IE 任何人都可以查看它以下載文件等,但不能更改它,除非專門添加以便能夠這樣做。由於您使用的是 Mac,這與 Linux 類似。並非您使用的每個 Linux 應用程式都使用您目前在 Mac 或 Linux 上登入的相同使用者名稱。因此,由於程式沒有使用您登入的使用者名,因此由於使用者名稱不匹配,因此它沒有獲得根據 Windows 編輯檔案的權限。
其次,Rsync是遞歸的。這意味著,它將遍歷所有目錄。除非您將其限制為特定目錄,但即使您將其限制為 1 個目錄,它也會繼續遍歷其起始目錄中的所有目錄。這就是它的設計目的。因此,它被稱為遞歸同步。現在更新目錄而不是檔案的原因可能是 rysnc 從目錄取得時間戳記的方式。可能是因為它的 Windows 10 目錄沒有修改或存取的時間戳,只有建立目錄時的時間戳,而檔案確實具有所有這些時間戳,這就是 rsync 用來確定是否需要更新目錄或檔案。