tar가 실제로 XZ_OPT를 xz로 전달하는지 어떻게 알 수 있나요?

tar가 실제로 XZ_OPT를 xz로 전달하는지 어떻게 알 수 있나요?

나는 무엇을하고 있는가:

XZ_OPT='-T0 -9 -vv' tar -vvcJf ~/backup.tar.xz ...FILES

주어진 옵션이 실제로 통과되었는지 의심스럽습니다 tar. 다음을 시도했습니다.

  1. -vv사용 했지만 XZ_OPT출력에 메시지가 없습니다.xz--verbose
  2. 또한 다른 프로세스 가 있는지 ps aux | grep xz확인 하곤 했지만 어떤 프로세스도 생성되는 것을 보지 못했습니다 .tarspawnxztar

질문

  1. 환경이 실제로 작동합니까 XZ_OPT? 이를 확인하는 방법은 무엇입니까?
  2. 실행 중에 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

  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
  1. xztar 실행 중에 프로세스를 찾을 수 없는 이유는 무엇입니까? 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

관련 정보