1つのコマンドで.tar.xz
圧縮アーカイブを作成しようとしています。そのための具体的な構文は何ですか?
tar cf - file | xz file.tar.xz
を試しましたが、うまくいきません。
スイッチ-J
は、新しいシステムでのみ機能します。ユニバーサルコマンドは次のとおりです。
。tar.xzアーカイブを作成するには
tar cf - directory/ | xz -z - > directory.tar.xz
説明
tar cf - directory
はdirectory /を読み取り、TAR形式への書き込みを開始します。この操作の出力は、標準出力に生成されます。
|
は、標準出力を別のプログラムの入力にパイプします...
...たまたまxz -zf -
です。 XZは、標準入力(-z
)であるファイル(-f
)からアーカイブを作成(-
)するように構成されています。
出力をxz
からtar.xz
ファイルにリダイレクトします。
パイプモードが好きな場合、これが最もクリーンなソリューションです。
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
を使用します。
xz
の圧縮オプションを使用する場合、またはMacOSでtar
を使用している場合は、おそらくtar -cJf
構文を避けたいでしょう。
man xz
によると、これを行う方法は次のとおりです。
tar cf - baz | xz -4e > baz.tar.xz
私は Wojciech Adam Koszekのフォーマット が好きだったが、情報は好きではなかったから:
c
は、指定されたファイルの新しいアーカイブを作成します。f
はディレクトリから読み取ります(-cf
!= -fc
であるため、この2番目を置くのが最善です)-
は標準出力に出力します|
は次のコマンドに出力をパイプしますxz -4e
は、-4e
圧縮オプションを使用してxz
を呼び出します。 (-4
--extreme
と等しい)> 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
を使用する習慣を持つことをお勧めします。ただし、必要な場合は、コマンドラインからこれらのコマンドを使用しても問題ありません。
これを試してください:tar -cf file.tar file-to-compress ; xz -z file.tar
注意:
|
を使用しないでください。 ;
または&
を使用すると、コマンドが次々に実行されます。