簡略化されたディレクトリ構造:
/root/test
/root/test/dir1
/root/test/dir2
/root/test/dir3
/root/test/dir4
/ root/testをtarして、アーカイブを抽出したときにdir1とdir2を取得したいと思います。コマンドの特定のアプリケーションに応じて、dir3とdir4、および場合によっては他のファイルとサブディレクトリを除外したいと思います。
ネット上にはタールの例やスニペットがたくさんあることに気づきましたが、特定の例を入手したり、オンラインで入手できるものを組み合わせて上記のように機能させることはできないようです。どんな助けでも大歓迎です。
ここで言ったことを実験してまとめることで、なんとかできたと思います。
tar -cvf test.tar --exclude-from=exclude --directory="/root/test" .
Excludeは、次のファイルです。
dir3
dir4
どうですか
cd /
tar cvf /tmp/test.tar --exclude="./root/test/dir[34]" ./root/test
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は私があなたの注意を向けたい部分です
FWIWは、ファイルまたはディレクトリのより長いリストの除外をリストするファイルを指定することもできます。長いコマンドラインを調整するよりも簡単です。
迅速で安全な暗号化方法については、mycrpt
も確認してください。申し訳ありませんが、少しOTです。