
我編寫了一個 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