Linux
Rsync 仍然複製文件,即使校驗和相同
我想使用 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=…
根據物理目錄結構建構參數。