답변:
타르 여러 파일 중에서 하나의 아카이브 파일을 만들지 만 압축하지는 않습니다.
tar 파일은 하나 이상의 파일을 연결 한 것입니다. 각 파일 앞에 512 바이트 헤더 레코드가옵니다. 파일 데이터는 길이가 512 바이트의 배수로 반올림되고 여분의 공간이 0으로 채워진다는 것을 제외하고는 변경되지 않고 기록됩니다. 아카이브의 끝은 최소 두 개의 연속 된 0으로 채워진 레코드로 표시됩니다.
GZIP 단일 파일을 다른 단일 파일로 압축하지만 아카이브는 생성하지 않습니다.
... 파일 형식이 여러 개의 스트림을 연결할 수도 있지만 (압축 된 파일은 원래 하나의 파일 인 것처럼 간단하게 압축 해제됩니다), gzip은 일반적으로 단일 파일을 압축하는 데 사용됩니다. [4] 압축 된 아카이브는 일반적으로 파일 모음을 단일 tar 아카이브에 모은 다음 gzip으로 압축합니다.
tar -xzvf tarball.tar.gz single/file.txt
. 뒤에서는 약간의 추가 작업이 필요하지만 외모에서는 단일 파일을 추출합니다.
.tar.*
압축 된 아카이브는 항상 "솔리드"입니다. 하나의 압축 된 스트림으로 구성됩니다. 에이 .zip
반면에 압축 파일은 전혀 안정적이지 않습니다. 압축 알고리즘은 각 파일에 대해 새로 시작됩니다. 무작위 액세스 속도를 높이기 위해 압축 효율성을 희생합니다. .7z
아카이브는 견고하고 비 견고하거나 견고한 블록을 가질 수 있습니다.
타르 (Tar)는 단 한가지 일을 잘 담당하고있다. 하나의 아카이브 파일에 아카이브한다. 어떤? 단 한가지 : a 세트 파일 수
Gzip은 단 한 가지 일을 잘 담당합니다. 압축합니다. 어떤? 한 가지만 한 가지 : 하나의 파일 어떤 유형의 ... 그리고 여기에는 tar로 만든 파일이 포함됩니다.
이것은 유닉스 철학 인 파이프 라이닝, 기본 "파이프 및 필터"아키텍처로 돌아갑니다. 모든 것을 하나의 파일로 취급하고 "one-thing-does-one-thing-only-and-does-it-well"이라는 사운드 아키텍처의 목표 (매우 우아하고 단순한 플러그 앤 플레이 방식 .)
그것의 단순함에서, 그것은 본질적으로 거의 대수적입니다 (시스템 설계에서 상당한 목표). 그리고 그건 쉬운 일이 아닙니다.
여러면에서 (결함이없는 것은 아니지만) 이것은 합성 가능성, 모듈성, 느슨한 결합 및 높은 응집도에서 거의 절정입니다. 이 네 가지를 이해한다면 (그리고 나는 정말로 이해하다 ), 왜 tar와 gzip이 쌍으로 작동하는지 분명해질 것입니다.
우선, TAR이 생성되지 않았습니다. 파일 보관소. 그 테이프 ARchiver . 테이프에서 /로 아카이브에 기록하거나로드하는 것이 일입니다.
그만큼 -에프 옵션을 사용하면 파일을 "가상 테이프"로 사용하고 다른 프로그램에서 압축 할 수 있습니다. 실제로 이러한 압축은 실세계 테이프 드라이브에서도 발생합니다.
물론, 하나의 프로그램을 사용하는 철학이이 경우에도 중요하지만, TAR 아카이브가 컨텐츠 + 컨텐츠 디렉토리가 아닌 스트림으로 구성된 이유를 놓칠 수도 있습니다.
전통적으로 유닉스 시스템은 하나의 프로그램을 사용하여 유닉스 철학 : tar
원래 테이프 백업을 위해 여러 파일을 단일 파일로 패키지하기위한 수단이었습니다 (따라서 tar
, 티 원숭이 ar 골파). tar
압축을 제공하지 않습니다. 결과 압축되지 않은 아카이브는 일반적으로 다음과 같은 다른 프로그램으로 압축됩니다. gzip
, bzip2
, 또는 xz
. 옛날에, 그들은 compress
이것을하기위한 명령; 새로운 압축 알고리즘이 이것보다 훨씬 효과적입니다.
유닉스 철학에 의해 규정 된 고도로 모듈화 된 접근법은 각 프로그램이 적절하게 개별적으로 사용되거나 여기에 설명 된 압축 된 아카이브 생성을 포함하여 더 복잡한 작업을 수행하도록 결합 될 수 있음을 의미합니다. 이러한 종류의 작업을 위해 필요에 따라 개별 도구를 쉽게 교체 할 수 있습니다. 다른 압축 알고리즘을 사용하도록 압축 프로그램을 변경하면됩니다. tar
유틸리티 자체.
이러한 모듈 방식은 단점이 없습니다. 같이 말하는 다른 답변에 대한 의견, 전용 압축 아카이브 형식 .zip
개별 파일의 추출을보다 잘 처리 할 수 있습니다. 압축 된 tarball은 아카이브의 끝 부분에서 파일을 추출하기 위해 거의 전체를 압축 해제해야하며 .zip
아카이브는 내용에 임의로 액세스 할 수 있습니다. (예 : .7z
솔리드 및 비 솔리드 아카이브뿐만 아니라 더 큰 아카이브에서 다양한 크기의 솔리드 블록을 지원합니다.) tar
별도의 압축 유틸리티와 함께 전통과 호환성의 문제입니다; 또한, .7z
과 .zip
권한과 같은 유닉스 파일 시스템 메타 데이터를 지원하지 않는다.