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 tar
이 z
옵션 과 관련하여 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
포함한 많은 다른 프로그램이 있습니다 .cpio
ar
afio
pax
gzip
압축 프로그램입니다. 단일 파일을 자체 압축 버전으로 압축할 수 있습니다. 또는 표준 입력의 데이터를 압축하여 표준 출력으로 출력할 수 있습니다(즉, "필터" 역할을 할 수 있음). 다시 말하지만, gzip
이것은 유일한 압축/압축 해제 프로그램이 아니라 많은 프로그램 중 하나입니다.
tar
gzip
.tar 아카이브를 디스크에 쓰기 전에 압축하는 데 사용할 수 있습니다 . 압축된 아카이브를 읽기 전에 압축을 푸세요.
사용 중인 버전 에 따라 tar
다른 압축 프로그램을 대신 사용할 수도 있습니다 gzip
. 예를 들어 GNU tar에는 다음과 같은 압축 관련 옵션이 있습니다.
압축 옵션
-a
,--auto-compress
압축 패키지 접미사를 사용하여 압축 프로그램을 결정합니다.
-I
,--use-compress-program=COMMAND
COMMAND를 통해 데이터를 필터링합니다.-d
압축을 풀려면 이 옵션을 수락해야 합니다 . 매개변수에는 명령줄 옵션이 포함될 수 있습니다.
-j
,--bzip2
bzip2(1)을 통해 아카이브를 필터링합니다.
-J
,--xz
xz(1)을 통해 아카이브를 필터링합니다.
--lzip
lzip(1)을 통해 아카이브를 필터링합니다.
--lzma
lzma(1)을 통해 아카이브를 필터링합니다.
--lzop
lzop(1)을 통해 아카이브를 필터링합니다.
--no-auto-compress
압축기를 결정하기 위해 아카이브 접미사를 사용하지 마십시오.
-z
,--gzip
,--gunzip
,--ungzip
gzip(1)을 통해 아카이브를 필터링합니다.
-Z
,--compress
,--uncompress
압축(1)을 통해 아카이브를 필터링합니다.
--zstd
zstd(1)를 통해 아카이브를 필터링합니다.
그리고 다른 아카이버를 압축기와 함께 사용할 수 있다는 점은 주목할 가치가 있습니다. 또는 등과 같은 명령줄 옵션을 통해 -z
또는 -Z
압축기의 출력을 파일로 리디렉션하기 전에 아카이버의 출력을 압축기로 파이프함으로써(또는 반대로 내용을 나열하거나 추출하기 위해 압축을 아카이버로 압축 해제)
필요에 따라 보관 및 압축 프로그램을 "혼합"하여 보관 및/또는 압축 기술의 향상을 활용할 수 있습니다.
GNU tar를 포함한 대부분의 아카이브 프로그램은 파이프를 통해 이를 지원하지만 GNU tar는 일부 잘 알려진 프로그램에 대한 여러 내장 옵션과 -I
자체 내장 옵션이 없는 다른 압축 프로그램을 사용하기 위한 편리한 옵션 도 제공합니다. - 아마도 새로운 압축 알고리즘을 구현하거나 기존 알고리즘을 새로 구현할 수도 있습니다. 예를 들어, pigz
( ,, 등 이 아닌 )과 같은 pixz
프로그램은 이러한 압축 프로그램의 병렬 버전이며 멀티 코어/멀티 스레드 CPU를 활용하여 데이터를 압축하거나 압축 해제하는 데 필요한 시간을 크게 줄일 수 있습니다.pbzip2
gzip
xz
bzip2
"필터"는 출력이 파일로 리디렉션되거나 파이프라인 출력의 다음 프로그램으로 파이프되기 전에 하나의 프로그램을 처리(및 어떤 방식으로든 수정)하기 위해 파이프라인에서 사용되는 프로그램에 대한 일반적인 용어입니다.
일부 프로그램(예: tar
with -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 또는 기타 언어로)를 작성하는 것이 매우 일반적입니다. 즉, 사람들은 일반적으로 자신만의 스크립트를 필터로 작성합니다.