tar 명령이 'z' 옵션과 함께 gzip 명령을 사용하는 이유는 무엇입니까?

tar 명령이 'z' 옵션과 함께 gzip 명령을 사용하는 이유는 무엇입니까?

Linux Ubuntu에서 "tar" 명령의 다음 버전과 관련하여:

tar -tzf  /path/to/filename.tar.gz # Show the content
tar -xzf  /path/to/filename.tar.gz # Extract the content 

두 명령 모두 이 z옵션을 사용하고 예상대로 작동하는지 확인하십시오.

man tarz옵션 과 관련하여 Pass 는 다음을 나타냅니다.

   -z, --gzip, --gunzip, --ungzip
          Filter the archive through gzip(1).

질문

  • tar명령이 옵션을 gzip통해 명령을 사용하는 이유는 무엇 입니까 'z'?

추가 질문

섹션 에 대해 Filter the archive through gzip(1)..

  • "filter"위에 표시된 두 명령에 왜 필요한가요? 또는 의 의미나 맥락은 무엇입니까 filter?

답변1

보관과 압축은 서로 다른 것입니다.

Windows의 대부분의 보관 프로그램(예 zip: 7z, , rar, 등)은 두 가지를 보관과 압축을 모두 수행하는 하나의 프로그램으로 결합하므로 Windows에 익숙한 사람들은 이 둘을 분리할 수 없는 하나로 생각하는 경향이 있습니다.

이러한 프로그램은 주로 UNIX가 아닌 시스템과의 호환성을 위해 UNIX/Linux에 존재하지만 별도의 프로그램이 압축 및 보관 기능을 수행하는 것이 더 일반적입니다. MS-DOS/Windows 보관 프로그램과 달리 Unix 기본 프로그램은 Unix 파일 메타데이터(예: 소유권 및 권한)를 이해하고 활용하며 일부는 ACL을 올바르게 처리할 수도 있습니다.

tar아카이빙 프로그램이다. 하나 이상의 파일을 .tar 아카이브에 저장할 수 있습니다. 아카이브가 압축되지 않았습니다. 원래는 여러 파일과 관련 메타데이터(파일 이름, 소유권, 권한 등)가 포함된 스트림을 테이프에 기록하는 데 사용되었습니다. 또는 파일로. 모든 바이트 스트림을 파일로 리디렉션하거나 다른 프로그램으로 파이프할 수 있기 때문입니다. 는 유일한 보관 프로그램이 아니며 , , , 등을 tar포함한 많은 다른 프로그램이 있습니다 .cpioarafiopax

gzip압축 프로그램입니다. 단일 파일을 자체 압축 버전으로 압축할 수 있습니다. 또는 표준 입력의 데이터를 압축하여 표준 출력으로 출력할 수 있습니다(즉, "필터" 역할을 할 수 있음). 다시 말하지만, gzip이것은 유일한 압축/압축 해제 프로그램이 아니라 많은 프로그램 중 하나입니다.

targzip.tar 아카이브를 디스크에 쓰기 전에 압축하는 데 사용할 수 있습니다 . 압축된 아카이브를 읽기 전에 압축을 푸세요.

사용 중인 버전 에 따라 tar다른 압축 프로그램을 대신 사용할 수도 있습니다 gzip. 예를 들어 GNU tar에는 다음과 같은 압축 관련 옵션이 있습니다.

압축 옵션

-a, --auto-compress압축 패키지 접미사를 사용하여 압축 프로그램을 결정합니다.

-I, --use-compress-program=COMMANDCOMMAND를 통해 데이터를 필터링합니다. -d압축을 풀려면 이 옵션을 수락해야 합니다 . 매개변수에는 명령줄 옵션이 포함될 수 있습니다.

-j, --bzip2bzip2(1)을 통해 아카이브를 필터링합니다.

-J, --xzxz(1)을 통해 아카이브를 필터링합니다.

--lziplzip(1)을 통해 아카이브를 필터링합니다.

--lzmalzma(1)을 통해 아카이브를 필터링합니다.

--lzoplzop(1)을 통해 아카이브를 필터링합니다.

--no-auto-compress압축기를 결정하기 위해 아카이브 접미사를 사용하지 마십시오.

-z, --gzip, --gunzip, --ungzipgzip(1)을 통해 아카이브를 필터링합니다.

-Z, --compress, --uncompress압축(1)을 통해 아카이브를 필터링합니다.

--zstdzstd(1)를 통해 아카이브를 필터링합니다.

그리고 다른 아카이버를 압축기와 함께 사용할 수 있다는 점은 주목할 가치가 있습니다. 또는 등과 같은 명령줄 옵션을 통해 -z또는 -Z압축기의 출력을 파일로 리디렉션하기 전에 아카이버의 출력을 압축기로 파이프함으로써(또는 반대로 내용을 나열하거나 추출하기 위해 압축을 아카이버로 압축 해제)

필요에 따라 보관 및 압축 프로그램을 "혼합"하여 보관 및/또는 압축 기술의 향상을 활용할 수 있습니다.

GNU tar를 포함한 대부분의 아카이브 프로그램은 파이프를 통해 이를 지원하지만 GNU tar는 일부 잘 알려진 프로그램에 대한 여러 내장 옵션과 -I자체 내장 옵션이 없는 다른 압축 프로그램을 사용하기 위한 편리한 옵션 도 제공합니다. - 아마도 새로운 압축 알고리즘을 구현하거나 기존 알고리즘을 새로 구현할 수도 있습니다. 예를 들어, pigz( ,, 등 이 아닌 )과 같은 pixz프로그램은 이러한 압축 프로그램의 병렬 버전이며 멀티 코어/멀티 스레드 CPU를 활용하여 데이터를 압축하거나 압축 해제하는 데 필요한 시간을 크게 줄일 수 있습니다.pbzip2gzipxzbzip2


"필터"는 출력이 파일로 리디렉션되거나 파이프라인 출력의 다음 프로그램으로 파이프되기 전에 하나의 프로그램을 처리(및 어떤 방식으로든 수정)하기 위해 파이프라인에서 사용되는 프로그램에 대한 일반적인 용어입니다.

일부 프로그램(예: tarwith -z등)은 사용자가 셸에서 수행할 필요 없이 필터링 파이프라인 자체를 설정할 수 있습니다(예: tar xfz filename.tar.gz기본적으로 와 동일 gzip -d filename.tar.gz | tar xf -, tar cfz filename.tar.gz ...본질적으로 와 동일 tar cf - ... | gzip > filename.tar.gz).

많은 유닉스 프로그램은 파이프에서 필터로 사용할 수 있도록 작성되었습니다. 예를 들어 gzip기존 파일을 압축하거나 입력 스트림(stdin)을 압축하고 출력을 stdout으로 보낼 수 있습니다. 예를 들어, 간단한 프로그램은 cat단순히 stdin을 stdout에 직접 전달하거나 선택적으로 행에 번호를 지정하여( 를 사용하여 -n) 행의 끝과 제어 및 기타 코드를 표시할 수 있습니다( -v, -E, -A등 의 옵션 사용 -t).

그런데, 파이프는 매우 유용하기 때문에 사람들이 stdin에서 입력을 받아 stdout에 쓸 수 있도록 자신만의 스크립트(awk, perl 또는 기타 언어로)를 작성하는 것이 매우 일반적입니다. 즉, 사람들은 일반적으로 자신만의 스크립트를 필터로 작성합니다.

관련 정보