ディレクトリツリーを複数のtarアーカイブで単一のxzに圧縮します。

ディレクトリツリーを複数のtarアーカイブで単一のxzに圧縮します。

rootdir次のように、多くのsubdir_iフォルダツリーを含む大きなフォルダを圧縮しようとしています。

./rootdir
./rootdir/subdir_1
./rootdir/subdir_2
...

私はこれを単一の圧縮アーカイブとして出力したいのですが、各サブディレクトリは独自のtarアーカイブにあります。

rootdir.tar.xz  # containing:
     subdir_1.tar
     subdir_2.tar

私は以下を試しました:

for foo in `find rootdir -maxdepth 1 -name "subdir_*" -type d`
do
     tar --create --verbose --file=- --directory="rootdir" `basename ${foo}` 
     # in shorter form:  tar -cvf - -C rootdir subdir_i
done | xz -zc9 > rootdir.tar.xz 

サブディレクトリをxzとして分離しますが、内部には最後のディレクトリのみを含むtarアーカイブのみがあります。

rootdir.tar.xz
     rootdir.tar # containing subdir_2/

ただし、このアーカイブのサイズはツリー全体の圧縮と一致しますrootdir。中間アーカイブを使用せずに私が望むことをするようにするアイデアと方法はありますか?

ベストアンサー1

tar各ディレクトリのファイル(たとえばdirectory-1.tardirectory-2.tar...、など)を作成し、directory-n.tarすべての部分を含むtarファイルを作成し、.zipで圧縮できますtar Jcf whole-shebang.tar.xz directory-*.tar

できますが、なぜですかtar Jcf whole-shebang.tar.xz directory-*?もちろん、そのタールボールから個々のディレクトリ/ファイルを抽出することもできます。設定から特定のタールボールを最初に抽出し、必要なものを取得するにはその中で掘り下げる必要があります。

おすすめ記事