複数のファイルを .xz アーカイブに圧縮するにはどうすればよいですか?

複数のファイルを .xz アーカイブに圧縮するにはどうすればよいですか?

複数の画像を .xz アーカイブに圧縮したいのですが、どうすればいいでしょうか?

答え1

tarオプションと一緒に使用-J:

tar -cvJf images.tar.xz /directory/containing/images/*

tar複数のファイルを 1 つ (アーカイブ) に結合するために使用され、その後、XZ 圧縮アルゴリズムを使用してアーカイブを圧縮する必要があります。

からman tar:

-c, --create
       create a new archive
-v, --verbose
       verbosely list files processed
-J, --xz

-f, --file ARCHIVE
       use archive file or device ARCHIVE

また、 はimages.tar.xz現在のディレクトリに作成されるので、別の場所に保存したい場合は を使用してください/full/path/to/images.tar.xz

答え2

ただし、tar cJf archive files...Zacharee1 による詳細そしてheemayl より通常はこれが望ましい方法ですが、別の方法としては、tarされたデータをxz指示:

tar c files... | xz > archive.tar.xz

Ubuntuのtarは オプションをサポートしているためJ、この代替方法は にオプションを渡す場合に特に便利ですxz

この例では、いくつかの TIFF ファイルを高レベルの圧縮 (-9からxz) と詳細な出力 (vからtar-vからxz) で tar および xzip します。

ek@Io:~/Pictures$ tar vc *.tif{,f} | xz -9v > pics.tar.xz
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
  100 %       207.3 KiB / 290.0 KiB = 0.715

もちろん、これを 2 つの明示的に別々のステップで実行することもできます。

ek@Io:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
ek@Io:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
  100 %       207.3 KiB / 290.0 KiB = 0.715

これら 2 つの方法は、実際に動作する方法は同じではありませんが、.tar.xz最終的に生成されるファイルは同じになるはずです (実際にテストしたときは同じでした)。

  • まず、出力tarパイプ|)に入力xz。はほぼ即座xzにデータを受信しtar、中間の非圧縮tarファイルは作成されません。つまり、最初の方法は本質的に同等です。tar cJf archive files...ただし、 に渡される追加の引数は除きますxz
  • 2 番目では、最初のコマンドによって圧縮されていない tar アーカイブが作成され、xz2 番目のコマンドによって圧縮されます。( /xzで呼び出されない限り、完了すると元のファイルが自動的に削除されます。)-k--keep

詳細については、この投稿はラファエル・ファン・ホーンによるものですおよびtarmanxzページ。

答え3

このコマンドを使用します:tar cJf <archive.tar.xz> <files>ファイル パスはスペースで区切ります。

関連情報