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

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

関連情報