私は何をしていますか:
XZ_OPT='-T0 -9 -vv' tar -vvcJf ~/backup.tar.xz ...FILES
与えられたオプションが実際に合格したかどうか疑わしいですtar
。以下を試しました。
-vv
使用しましたが、XZ_OPT
出力にメッセージがありません。xz
--verbose
- また、他のプロセスがあるかどうかを
ps aux | grep xz
確認しましたが、どのプロセスも作成されているのを見ませんでした。tar
spawn
xz
tar
質問
- 環境は実際に動作しますか
XZ_OPT
?これを確認する方法は? - 実行中に
xz
プロセスが見つからないのはなぜですかtar
?tar
実際にファイルを圧縮するプロセスはありますか?
環境
$ xz --version
xz (XZ Utils) 5.2.5
liblzma 5.2.5
$ tar --version
bsdtar 3.3.2 - libarchive 3.3.2 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.6
答え1
- 環境は実際に動作しますか
XZ_OPT
?これを確認する方法は?
間違ったコンテンツを配信してください。
% XZ_OPT='--this-wont-work' tar -cJf foo.tar.xz foo
xz: unrecognized option '--this-wont-work'
xz: Try `xz --help' for more information.
tar: foo.tar.xz: Cannot write: Broken pipe
tar: Child returned status 1
tar: Error is not recoverable: exiting now
xz
tarの実行中にプロセスが見つからないのはなぜですか?tar
実際にファイルを圧縮するプロセスはありますか?
上記の出力を見ると、実際にそうです。プロセスが持続するようにアーカイブを作成するのに時間がかかりますか?ps aux | grep xz
どちらもpgrep -fa xz
私にその過程を示しました。xz
tar
呼び出すプログラムの出力は、失敗しない限り表示されない可能性があります。そうしないと、意図しない出力に制御できないノイズが追加される可能性がありますtar
。
答え2
ほとんどのシェルで使用される構文は、この環境変数を生成して「エクスポート」します。それ以降はtar以外環境から明示的に削除、すべてのサブルーチンでこれを見ることができます。
ある程度効果はあると思います。これを以下と比較してみてください。
$ XZ_OPT='-T0 -9 -vv' tar -cJf junk.tar.xz ~/.config
tar: Removing leading `/' from member names
xz: Filter chain: --lzma2=dict=64MiB,lc=3,lp=0,pb=2,mode=normal,nice=64,mf=bt4,depth=0
xz: Using up to 4 threads.
xz: 4,997 MiB of memory is required. The limiter is disabled.
xz: Decompression will need 65 MiB of memory.
100 % 2,541.8 KiB / 5,930.0 KiB = 0.429 0:01
これで(私が削除した-vv
):
$ XZ_OPT='-T0 -9' tar -cJf junk.tar.xz ~/.config
tar: Removing leading `/' from member names