Linux

Rsync 仍然複製文件,即使校驗和相同

  • June 7, 2021

我想使用 rsync 比較兩個目錄及其文件內容並將其傳輸到一個新的空目錄。所以我創建了一個小型 POC:

OLD/
...main.js

NEW/
...main.js

CHANGES/

NEW 和 OLD 中的 main.js 文件是相同的,並且具有相同的校驗和。但是,當我使用:

rsync -rvcm --compare-dest=OLD/ NEW/ CHANGES/

main.js 文件仍然被複製到 CHANGES 文件夾中。我如何確保它不會那樣做?我只想複製具有不同校驗和的文件。

--compare-dest=DIR

$$ … $$ 如果DIR是相對路徑,則相對於目標目錄。

$$ … $$

(來源man 1 rsync:)

在你的命令下

rsync -rvcm --compare-dest=OLD/ NEW/ CHANGES/

OLD/是相對路徑。目標目錄是CHANGES/. OLD/“相對於目標目錄”意味著它實際上CHANGES/OLD/是相對於目前工作目錄。此目錄很可能在您的設置中不存在。即使它存在,它也不是你想要的目錄。

您的意思是OLD/在目前工作目錄中,可以稱為CHANGES/../OLD/. 因此,相對於 的部分CHANGES/../OLD/

rsync -rvcm --compare-dest=../OLD/ NEW/ CHANGES/

請注意,如果CHANGES是指向目錄的符號連結,則CHANGES/../不一定./(比較當我在符號連結目錄中時為什麼ls ..顯示真實的父內容? )。在這種情況下CHANGES/../OLD/並不意味著OLD/--compare-dest=…根據物理目錄結構建構參數。

引用自:https://unix.stackexchange.com/questions/653199