rsync 檔案重複忽略未如預期工作

rsync 檔案重複忽略未如預期工作

我對 rsync 的工作感到困惑。這是我所做的和所期望的。

我建立了兩個名為「sbck」和「dbck」的資料夾。

場景一:

我創建了一個名為的文件a.txt,並使用cp -rp a.txt aa.txt.我將這兩個文件都放在sbck資料夾中。接下來我做了rsync -rvch sbck/ dbck/。這將這兩個檔案移動到 dbck 中。

問題:既然a.txt和aa.txt都是一樣的,為什麼rsync允許這樣複製呢?難道不應該只是兩者之一嗎?

場景2:

我創建了一個名為的文件a.txt,並使用cp -rp a.txt aa.txt.我將這兩個文件都放在sbck資料夾中。接下來,我做到了cp -rp sbck/a.txt dbck/。後來,我做到了rsync -rvch sbck/ dbck/。這將 移動aa.txt到 dbck 中。

問題:由於a.txt和aa.txt是相同的,並且我已經將a.txt移至dbck。為什麼rsync允許aa.txt複製到dbck?在這種情況下 -c 究竟如何幫助我?

答案1

我認為你誤解了它的-c作用。rsync無論有或沒有該選項,都不進行檔案重複資料刪除-c。所做的只是-c更改rsync決定文件是否需要在目標上更新的方式。

假設sbck/a.txtdbck/a.txt,然後您運行rsync -rvh sbck/ dbck/(注意:沒有-c選項)。作用rsync是比較這兩個文件的大小和修改時間,如果它們匹配,它將假定文件的內容也匹配,並且不會費心複製sbck/a.txtdbck/a.txt.

現在,假設你rsync -rvch sbck/ dbck/(用-c這個時間)跑步。這次,rsync將計算 和 的校驗sbck/a.txtdbck/a.txt,並使用這些校驗和(而不是它們的大小和修改時間)來確定檔案是否相同,因此sbck/a.txt不需要將 的新內容複製到dbck/a.txt。它不會將 的校驗sbck/a.txt和與來源樹或目標樹中的任何其他檔案的校驗和進行比較。

相關內容