特定のファイル/フォルダーをアーカイブから除外することをサポートする簡単なシェル コマンド/スクリプトはありますか?
バックアップする必要のない非常に大きなファイルが多数含まれるサブディレクトリとともにアーカイブする必要があるディレクトリがあります。
完全な解決策ではない:
コマンドtar --exclude=PATTERN
は指定されたパターンに一致し、それらのファイルを除外しますが、特定のファイルとフォルダーを無視する必要があります (完全なファイル パス)。そうしないと、有効なファイルが除外される可能性があります。
find コマンドを使用してファイルのリストを作成し、アーカイブしたくないファイルを除外してそのリストを tar に渡すこともできますが、これは少量のファイルに対してのみ機能します。私のファイルには数万個あります。
唯一の解決策は、除外するファイル/フォルダーのリストを含むファイルを作成し、rsync を使用して--exclude-from=file
すべてのファイルを tmp ディレクトリにコピーし、tar を使用してそのディレクトリをアーカイブすることだと考え始めています。
もっと良い/効率的な解決策を思いつく人はいますか?
編集: Charles Maの解決策はうまく機能します。大きな問題は、 がtar コマンドの先頭になければ--exclude='./folder'
ならないことです。完全なコマンド (最初に cd を実行すると、バックアップはそのディレクトリに相対的になります):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
ベストアンサー1
tarには複数の除外オプションがあるので、
$ tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
などが機能します。ソース項目と宛先項目の前に必ず配置してください。--exclude