1. ホーム
  2. linux

[解決済み] 特定のファイル/フォルダを除外してディレクトリをtarするシェルコマンド

2022-03-16 17:23:25

質問

特定のファイルやフォルダーをアーカイブから除外するための簡単なシェルコマンド/スクリプトはありますか?

私は、バックアップする必要がない非常に大きなファイルの数を持つサブディレクトリとアーカイブする必要があるディレクトリを持っています。

解決策とまではいかないが

tar --exclude=PATTERN コマンドは与えられたパターンにマッチし、それらのファイルを除外しますが、私は無視する特定のファイル&フォルダ(フルファイルパス)が必要です、そうでなければ、有効なファイルが除外されるかもしれません。

また、findコマンドでファイルのリストを作成し、アーカイブしたくないものを除外して、そのリストをtarに渡すこともできますが、これは少量のファイルに対してのみ機能します。私は数万個あります。

唯一の解決策は、除外するファイル/フォルダのリストを含むファイルを作成し、rsyncに --exclude-from=file ですべてのファイルをtmpディレクトリにコピーし、tarでそのディレクトリをアーカイブします。

どなたか、より良い、あるいはより効率的な解決策をお考えになりませんか?

EDIT チャールズ・マー の解決策はうまくいきます。大きな欠点は --exclude='./folder' マスト をtarコマンドの先頭に記述してください。フルコマンド(cdが先なので、バックアップはそのディレクトリからの相対パスとなります)。

cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .

解決方法は?

tarの除外オプションは複数設定できますので

$ tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .

などが動作します。作る 確実 を付けてください。 --exclude 以前 は、送信元と送信先の項目です。