Bash 腳本 rsync --include-from 失敗

Bash 腳本 rsync --include-from 失敗

我編寫了一個 bash 腳本來將資料夾和檔案從電腦備份到我們的備份伺服器。我的目標是從每週備份中排除所有超過 6 個月的文件。為此,我使用 find 命令建立一個 txt 文件,其中包含這些文件的路徑。

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/Exclusions.txt "%P\n"

然後我使用了rsync的選項「--include-from」。

rsync . -e ssh -qrtl --exclude-from=$SCRIPT_DIR/Exclusions.txt $USER@$DEST_SRV:$DEST_DIR

結果是備份有效,但包含失敗。因此,所有文件都已備份,即使是超過 6 個月的文件。

為此我該怎麼辦?

先致謝

答案1

根據手冊頁,

--exclude=PATTERN       exclude files matching PATTERN
--exclude-from=FILE     read exclude patterns from FILE
--include=PATTERN       don't exclude files matching PATTERN
--include-from=FILE     read include patterns from FILE

排除是從檔案中讀取模式,而不是根據檔案名稱本身。

我同意根據名稱包含/排除文件也可能很少,但這不是它的工作原理。

您可以嘗試這樣的操作來包含 1 週前更新的文件:

--files-from=<(find . -mtime -7 -print0)

答案2

好的,我解決了我的問題! 「查找」行保持不變:

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/includes.txt "%P\n"

我使用“--files-from”選項而不是“--exclude-from”

rsync . -e ssh -qrtl --files-from=$SCRIPT_DIR/includes.txt $USER@$DEST_SRV:$DEST_DIR

相關內容