디스크에 쓰기와 동시에 xz로 압축

디스크에 쓰기와 동시에 xz로 압축

디스크에 트레이스를 쓰는 프로그램이 있는데 크기가 매우 커집니다. 일반적으로 다음 명령을 사용합니다.

./run output.txt
xz output.txt

output.txt를 작성하는 동안 xz를 파이프할 수 있나요?

나는 읽었다모든 파일을 gzip에서 xz로 동적으로(재귀적으로) 변환하는 방법은 무엇입니까?, 하지만 제 경우에는 작동하는지 잘 모르겠습니다.

답변1

./run파일 인수(Unix/Linux의 규칙)를 제공하지 않고 출력을 stdout으로 인쇄하는 경우 간단히 다음을 사용할 수 있습니다.

./run | xz -c >output.txt.xz

파일 이름 인수가 필요하지만 파이프에 문제없이 쓸 수 있는 경우 다음과 같이 /dev/stdout또는 같은 특수 장치를 사용할 수 있습니다 /dev/fd/1(둘 다 동일해야 함).

./run /dev/stdout | xz -c >output.txt.xz

아니면 당신은 사용할 수 있습니다프로세스 교체일반적으로 bash, zsh 또는 ksh와 같은 대부분의 최신 셸에서 사용할 수 있는 는 궁극적으로 /dev/fd동일한 작업을 수행하기 위해 배후에서 장치를 사용합니다.

./run >(xz -c >output.txt.xz)

마지막 항목도 ./run파이프에 쓸 수 있어야 하지만 ./run파이프에 쓰면 다른 것보다 더 잘 작동합니다.output.txt 그리고정상 작동 시 stdout으로 리디렉션됩니다. 이 경우 둘 다 stdout으로 리디렉션되면 출력이 혼동됩니다.

프로그램은 일반적으로 파이프에 쓸 수 있지만 그 중 일부는 파이프로는 불가능한 오프셋을 찾아서 출력 파일로 되감기를 원할 수 있습니다. 이 경우 임시 파일에 쓴 다음 압축하는 것이 아마도 할 수 있는 전부일 것입니다.

관련 정보