アーカイブから特定のファイル/フォルダーを除外することをサポートする単純なシェルコマンド/スクリプトはありますか?
バックアップする必要のない非常に大きなファイルが多数あるサブディレクトリを使用してアーカイブする必要があるディレクトリがあります。
完全なソリューションではありません:
tar --exclude=PATTERN
コマンドは、指定されたパターンと除外これらのファイルと一致しますが、私は特定のファイル&フォルダを無視する(完全なファイルパス)、そうでない場合は、有効なファイルが除外される可能性がありますが必要です。
また、findコマンドを使用してファイルのリストを作成し、アーカイブしたくないファイルを除外してtarにリストを渡すこともできますが、これは少量のファイルに対してのみ機能します。何万人もいます。
唯一の解決策は、除外するファイル/フォルダーのリストを含むファイルを作成し、次にrsync with --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 .
--exclude
最初にする必要はありませんが、ソースディレクトリの前のどこかに置く必要があります(Cygwinのtar 1.29でテスト済み)。