Linux

如果源和目標的時間戳相同,rsync 中的更新標誌是否會傳輸文件?文件不清楚

  • February 28, 2017

我只想rsync在 Ubuntu 14.04 上傳輸更改的文件和新文件。我不想每次都轉移一切。我不擔心檢查文件的內容是否真的改變了。存在類似的文章,但我不確定,因為文件與這些文章中所說的不一致。

中的文件rsync說:

-u, --update

這會強制 rsync 跳過目標文件已存在且日期晚於源文件的任何文件。

http://ss64.com/bash/rsync_options.html

編輯:找到另一個(可能更官方的)文件頁面。它說:

-u, --update跳過接收器上較新的文件

https://download.samba.org/pub/rsync/rsync.html

我覺得這些措辭不好。首先,第一個說“日期”。我認為它實際上意味著“時間戳”。其次,更重要的是,這似乎意味著源和目標中具有相同時間戳的文件將被重新傳輸。文件明確表示,它只會在目標文件的時間戳(T_d)比源文件時間戳(T_s源文件:跳過傳輸 ifT_d > T_s意味著它在T_d <= T_s.

這對我來說是一個重要的問題,因為如果您想以盡可能少的工作(網路/io/cpu/時間)將所有新的和更改的文件從源文件夾傳輸到目標文件夾,更新標誌可能只是重新傳輸每次的一切。

或者也許我錯過了什麼,或者誤解了什麼?

(由於題外話,這篇文章被 stackoverflow.com 拒絕。添加它和答案,以防將來可能對人們有所幫助。)

man在標誌的擴展中發現以下內容:

-u, --update

這會強制 rsync 跳過目標上存在的任何文件,並且修改時間比源文件新。(如果現有目標文件的修改時間等於源文件的修改時間,則如果大小不同,它將被更新。)

https://download.samba.org/pub/rsync/rsync.html

因此,相等的情況檢查文件的大小,並且僅在它們不同時才傳輸。我對此很好。

引用自:https://serverfault.com/questions/833526