web-dev-qa-db-ja.com

親なしでディレクトリの内容をtarし、サブディレクトリ/ファイルを除外します

簡略化されたディレクトリ構造:

/root/test
/root/test/dir1
/root/test/dir2
/root/test/dir3
/root/test/dir4

/ root/testをtarして、アーカイブを抽出したときにdir1とdir2を取得したいと思います。コマンドの特定のアプリケーションに応じて、dir3とdir4、および場合によっては他のファイルとサブディレクトリを除外したいと思います。

ネット上にはタールの例やスニペットがたくさんあることに気づきましたが、特定の例を入手したり、オンラインで入手できるものを組み合わせて上記のように機能させることはできないようです。どんな助けでも大歓迎です。

2
Joe

ここで言ったことを実験してまとめることで、なんとかできたと思います。

tar -cvf test.tar --exclude-from=exclude --directory="/root/test" .

Excludeは、次のファイルです。

dir3
dir4
3
Joe

どうですか

cd /
tar cvf /tmp/test.tar --exclude="./root/test/dir[34]" ./root/test
3
MadHatter

tarしたいフォルダの数が限られている場合は、

tar -C /root/test -cf Arch.tar dir1 dir2



root@pinkpony:~# ls /root/test/
dir1  dir2  dir3
root@pinkpony:~# pwd
/root
root@pinkpony:~# tar -C /root/test -cf Arch.tar dir1 dir2
root@pinkpony:~# tar tf Arch.tar 
dir1/
dir2/

編集(コメントに含まれるコードを読みやすくする):

tarするディレクトリのリストを作成するための複雑なルールがある場合は、スクリプトを開始することをお勧めします。

root@pinkpony:~# (cd /root/test/ ; ls |grep -E '^dir(1|2)$' | xargs  tar cf /tmp/blah.tar )
root@pinkpony:~# tar tf /tmp/blah.tar 
dir1/
dir2/

そのばかげたls | grepthingieの代わりに、必要なものを何でも使用できます。これは単なる例です。 xargsは私があなたの注意を向けたい部分です

2
user237419

FWIWは、ファイルまたはディレクトリのより長いリストの除外をリストするファイルを指定することもできます。長いコマンドラインを調整するよりも簡単です。

迅速で安全な暗号化方法については、mycrptも確認してください。申し訳ありませんが、少しOTです。

0
Jonathan Ross