iT邦幫忙

0

儘管檔案大小內容相同 , 做rsync後 , 目的端最後修改時間還是會變跟來源端最後修改時間一樣?

  • 分享至 

  • twitterImage

大家好 , 我剛接觸Linux沒有很久 , 想請教大家一個問題

最近碰到一個rsync的問題 , 儘管來源端與目的端檔案的內容與大小相同 , 但是只要目的端最後修改時間不是最新的 , 目的端還是會更新成來源端最後修改時間

狀況是這樣子 , 我在來源端更改 A檔案 , 又改回成原本的內容 , 這時候檔案內容跟最原本的時候一樣 , 只有最後修改時間是最新的 , 執行rsync -avu --ignore-times /tmp/A.txt ubuntu@IP:/tmp/
目的端 B檔案的最後修改時間就變成跟來源端的最後修改時間一樣

想請教大家 , 比對完檔案內容跟大小後 , 確定一樣應該就不會做差異備份 , 為何最後修改時間會更改

weiclin iT邦高手 4 級 ‧ 2019-01-05 09:53:33 檢舉
因為 -a 等於 -rlptgoD, 那個 -t 就會讓你的檔案修改時間同步
然後那個 --ignore-times 指的是就算時間相同也同步檔案, 而不是不要同步修改時間
感謝回覆 @weiclin

所以只要來源端最後修改時間有異動過 , 儘管檔案內容 與 大小一樣 , rsync 過去之後 , 目的端的最後修改時間也會變得跟來源端一樣囉 ?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
唬爛
iT邦好手 1 級 ‧ 2019-01-04 23:02:51

時間戳記不算『屬性』嗎?
單向可能比較單純
但如果是雙向,時間戳記可是非常重要的一項『屬性』=> 決定A覆蓋B或B覆蓋A

唬爛 iT邦好手 1 級 ‧ 2019-01-13 17:50:54 檢舉

下列指令我不熟悉,但有忽略『時間戳記』的選項嗎?
rsync -avu --ignore-times /tmp/A.txt ubuntu@IP:/tmp/
ignore-times => Google一下,好像會強制同步為相同的『時間戳記』?

0
Ray
iT邦大神 1 級 ‧ 2019-01-05 11:54:27

大小相同 ≠ 內容相同!!
大小相同 ≠ 內容相同!!
大小相同 ≠ 內容相同!!

a.txt內容:
12345
你把它改成:
67890

兩者檔案大小仍相同, 但是內容卻天差地遠, 沒有一個字一樣!!
rsync 只要看到 metadata 不同, 他就會複製, 不管你的內容.

所以, 不能用「檔案大小是否相同」來決定要不要同步檔案?
時間戳記才是最準確的, 一定是時間晚的去覆蓋時間早的檔案,
不要大小是否一樣....

wwx iT邦好手 1 級 ‧ 2019-01-05 12:13:12 檢舉

他的問題好像還要多一步
12345 的時候 rsync 過
然後改成
67890
又再改成
12345
這時才又執行 rsync
他的癥結在這時後明明檔案內容確實是一樣的
只有檔案時間不一樣,且認為下了 -ignore-times
覺得rsync的行為不符合他的預期 XD

感謝各位回覆 @raytracy @wwx

可能我表達沒有完整 , 我的問題就像是 @wwx 所講的一樣

原本來源端 a.txt 是 12345
後來改成 67890
最後又改成 12345

此時 a.txt & b.txt 內容 與 大小是一樣的 , 只是最後修改時間不同
在執行rsync 後發現 , 目的端的最後修改時間變的跟來源端一樣

所以才想請問各位 , 是否不管檔案內容與檔案大小 , 只要執行過rsync , 最後修改時間就會同步呢

我要發表回答

立即登入回答