
フォルダーとファイルをマシンからバックアップ サーバーにバックアップする 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
manページによると、
--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」行は同じままです。
find . -type f -mtime -200 -fprintf $SCRIPT_DIR/includes.txt "%P\n"
そして、「--exclude-from」の代わりに「--files-from」オプションを使用します
rsync . -e ssh -qrtl --files-from=$SCRIPT_DIR/includes.txt $USER@$DEST_SRV:$DEST_DIR