tar: 텍스트 표준 입력 및 표준 출력 압축

tar: 텍스트 표준 입력 및 표준 출력 압축

를 사용하면 tar표준 입력 텍스트를 압축하고 압축된 데이터를 표준 출력에 표시할 수 있습니까? 예:

$ echo "test" | tar c - 
<compressed blob here>

저는 macOS 모하비를 사용하고 있습니다.

답변1

간단히 말해서, stdin의 전체 내용을 파일이나 임시 파일(예: 메모리)에 저장하지 않으면 이 작업을 수행할 수 없습니다.

이는 tar 파일 형식 자체의 한계입니다. tar는 파일 내용을 저장하기 전에 파일 이름 등을 포함한 파일 설명자와 파일을 저장하기 때문입니다.크기. 따라서 tar는 파일을 저장하기 전에 파일 크기를 알아야 합니다. stdin에서 읽을 때 tar는 내용을 모두 읽지 않는 한 내용의 크기를 알 수 없습니다. 이 경우 내용이 tarball 자체에 저장되도록 어딘가에 저장해야 합니다.

당신은 또한 볼 수 있습니다"표준 입력에서 직접 .tar.gz 파일을 생성할 수 있습니까? 아니면 이미 gzip으로 압축된 파일을 함께 패키지해야 합니다."답변 중 하나는 먼저 파일 내용을 저장한 다음 파일 설명자를 찾아서 업데이트하여 내용의 실제 크기를 쓰는 방법을 나열합니다. 하지만 이를 위해서는 출력 파일을 조회할 수 있어야 하는데, stdout에 쓰는 경우에는 일반적으로 그렇지 않습니다.

즉, tarball에 추가할 수 있도록 임시 파일에 입력을 작성해야 합니다.

관련 정보