特定のファイル/フォルダをアーカイブから除外することをサポートする簡単なシェル コマンド/スクリプトはありますか?
バックアップする必要のない非常に大きなファイルが多数あるサブディレクトリでアーカイブする必要があるディレクトリがあります。
完全な解決策ではありません:
コマンドは指定されたパターンに一致し、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 .