
次の要件を満たす tar コマンドを探しています。
backwpup と .zip で終わるすべてのファイルを除外します (その間の文字は何でも構いません。例: uploads/123backwpup-123.zip) /media/backup/ と /application/cache/ の領域にあるすべてのフォルダーを除外します
私は次のようなレベルから始めます:
- 例.com
- 例:
- 例:
それぞれにサブディレクトリがあります:
- /等/
- /httpdocs/
- /ライブラリ/
- ...
/httpdocs/ の内容のみを保存する必要があります。
コマンドで試してみました:
tar --exclude={"*backwpup*.zip", "*/media/backup/*", "*/application/cache/*"} -czvf backup.tar.gz **/httpdocs
しかし残念ながらパス付きのバックアップwp-content/uploads/backwpup-4578-backups/2022-10-31_12-22-31_IKXUCSLD01.zipまだ含まれています。
答え1
次の tar コマンドを使用してみてください。
tar --exclude='backwpup.zip' --exclude='/media/backup/' --exclude='/application/cache/' -czvf backup.tar.gz example.com/httpdocs example.de/httpdocs example.org/httpdocs
このコマンドは、「backwpup」または「.zip」で終わるすべてのファイルと、指定された場所にあるフォルダを除外します。また、各ドメインディレクトリの「httpdocs」サブディレクトリのみが含まれます。
答え2
たぶんこの方法でしょうか?
find * -type d \( -path '*/media/backup/*' -o -path '*/application/cache/*' \) -prune -o -path '*/httpdocs/*' -type f ! -name '*backwpup*.zip' -print0 | tar -czvf backup.tar.gz --null -T -
答え3
GNU tar を使用している場合は、ファイルを除外する方法についてのドキュメントを参照してください。https://www.gnu.org/software/tar/manual/html_node/exclude.html パターン マッチングの詳細は次のとおりです。詳しくは、man7.org をご覧ください。
GNU BASH を使用している場合は、for ループを使用してディレクトリをループできます。https://www.gnu.org/software/bash/manual/html_node/Looping-Constructs.htmlファイル名の拡張を使用する(https://www.gnu.org/software/bash/manual/html_node/ファイル名展開.html)
このページの最後には良い例があります: https://linuxize.com/post/bash-for-loop/