web-dev-qa-db-ja.com

1つのコマンドでtar.xzを作成します

1つのコマンドで.tar.xz圧縮アーカイブを作成しようとしています。そのための具体的な構文は何ですか?

tar cf - file | xz file.tar.xzを試しましたが、うまくいきません。

115
George K.

xzには-J圧縮オプションを使用します。 man tar を忘れないでください:)

tar cfJ <archive.tar.xz> <files>

編集2015-08-10:

引数をtarにダッシュで渡す場合(例:tar -cfではなくtar cf)、then -fオプションはファイル名を指定するため、最後に指定する必要があります@ ABB に感謝します!)。その場合、コマンドは次のようになります。

tar -cJf <archive.tar.xz> <files>
187
user2062950

スイッチ-Jは、新しいシステムでのみ機能します。ユニバーサルコマンドは次のとおりです。

。tar.xzアーカイブを作成するには

                tar cf - directory/ | xz -z - > directory.tar.xz

説明

  1. tar cf - directoryはdirectory /を読み取り、TAR形式への書き込みを開始します。この操作の出力は、標準出力に生成されます。

  2. |は、標準出力を別のプログラムの入力にパイプします...

  3. ...たまたまxz -zf -です。 XZは、標準入力(-z)であるファイル(-f)からアーカイブを作成(-)するように構成されています。

  4. 出力をxzからtar.xzファイルにリダイレクトします。

38

パイプモードが好きな場合、これが最もクリーンなソリューションです。

tar c some-dir | xz > some-dir.tar.xz

ファイルを処理するためにfオプションを配置し、その後-を使用してファイルが標準入力であることを指定する必要はありません。また、xz-zオプションを指定する必要もありません。これはデフォルトです。

gzipおよびbzip2でも動作します:

tar c some-dir | gzip > some-dir.tar.gz

または

tar c some-dir | bzip2 > some-dir.tar.bz2

解凍も非常に簡単です。

xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x

tarアーカイブのみがある場合は、catを使用できます。

cat archive.tar | tar x

ファイルのみをリストする必要がある場合は、tar tを使用します。

30
Rafael van Horn

Xz圧縮オプションを使用する

xzの圧縮オプションを使用する場合、またはMacOSでtarを使用している場合は、おそらくtar -cJf構文を避けたいでしょう。

man xz によると、これを行う方法は次のとおりです。

tar cf - baz | xz -4e > baz.tar.xz

私は Wojciech Adam Koszekのフォーマット が好きだったが、情報は好きではなかったから:

  1. cは、指定されたファイルの新しいアーカイブを作成します。
  2. fはディレクトリから読み取ります(-cf!= -fcであるため、この2番目を置くのが最善です)
  3. -は標準出力に出力します
  4. |は次のコマンドに出力をパイプします
  5. xz -4eは、-4e圧縮オプションを使用してxzを呼び出します。 (-4--extremeと等しい)
  6. > baz.tar.xzは、tarおよび圧縮されたファイルをbaz.tar.xzに送信します

-4eには、独自の圧縮オプションを使用します。私はよく-kを使用して元のファイルを--keepし、-9を使用して非常に重い圧縮を行います。 -zは手動でxzをZipに設定しますが、特に指示がない限り、デフォルトでzip圧縮します。

解凍して解凍する

エコーするには Rafael van Horn 、uncompress&untar(下記の注を参照):

xz -dc baz.tar.xz | tar x

注: ラファエルの答え とは異なり、catxzの代わりにxz -dcを使用します。スクリプトでこれを使用している場合、ドキュメントはこれを推奨します。 unxzの代わりに-dまたは--decompressを使用する習慣を持つことをお勧めします。ただし、必要な場合は、コマンドラインからこれらのコマンドを使用しても問題ありません。

4
Connor

これを試してください:tar -cf file.tar file-to-compress ; xz -z file.tar

注意:

  1. tar.gzとtar.xzは同じではありません。 xzはより良い圧縮を提供します。
  2. コマンドを同時に実行するため、パイプ|を使用しないでください。 ;または&を使用すると、コマンドが次々に実行されます。
4
Jhim Preston