1 부 : 성능
다음은 두 가지 별도의 워크 플로와 그 작업을 비교 한 것입니다.
blah.tar.gz
압축되지 않은 경우 2GB (압축률 50 %)를 차지하는 1GB의 gzip 압축 데이터 인 디스크에 파일 이 있습니다.
보관 및 압축을 별도로 수행하는 경우이를 만드는 방법은 다음과 같습니다.
tar cf blah.tar files ...
이것은 압축되지 않은 형태 blah.tar
의 단순한 집합입니다 files ...
.
그럼 당신은 할 것
gzip blah.tar
blah.tar
디스크 의 내용을 읽고 gzip 압축 알고리즘을 통해 압축하고 내용을에 쓴 blah.tar.gz
다음 파일의 링크를 해제 (삭제)합니다 blah.tar
.
이제 압축을 풀자!
방법 1
당신은 blah.tar.gz
어떤 식 으로든 가지고 있습니다 .
다음을 실행하기로 결정했습니다.
gunzip blah.tar.gz
이것은 것입니다
- 의 1GB 압축 데이터 내용을 읽습니다
blah.tar.gz
.
gzip
메모리 의 압축 해제 기를 통해 압축 된 데이터를 처리하십시오 .
- 메모리 버퍼가 "블록"에 해당하는 데이터로 채워지면 압축되지 않은 데이터를
blah.tar
디스크 의 파일 에 기록하고 모든 압축 된 데이터를 읽을 때까지 반복합니다.
- 파일을 링크 해제 (삭제)하십시오
blah.tar.gz
.
이제 blah.tar
디스크에 압축되지 않았지만 데이터 구조 오버 헤드가 매우 낮은 하나 이상의 파일이 들어 있습니다. 파일 크기는 아마도 모든 파일 데이터의 합보다 몇 바이트 더 클 것입니다.
당신은 실행 :
tar xvf blah.tar
이것은 것입니다
- 파일 권한, 파일 이름, 디렉토리 등에 대한 정보를 포함하여 2GB의 압축되지 않은 데이터 내용
blah.tar
과 tar
파일 형식의 데이터 구조를 읽습니다.
- 2GB의 데이터와 메타 데이터를 디스크에 기록하십시오. 여기에는 데이터 구조 / 메타 데이터 정보를 적절하게 디스크에 새 파일 및 디렉토리 작성으로 변환하거나 기존 파일 및 디렉토리를 새 데이터 컨텐츠로 다시 작성하는 작업이 포함됩니다.
이 프로세스에서 디스크에서 읽은 총 데이터는 1GB (gunzip의 경우) + 2GB (tar의 경우) = 3GB입니다.
이 프로세스에서 디스크에 기록한 총 데이터는 2GB (gunzip의 경우) + 2GB (tar의 경우) + 메타 데이터의 경우 몇 바이트 = 약 4GB입니다.
방법 2
당신은 blah.tar.gz
어떤 식 으로든 가지고 있습니다 .
다음을 실행하기로 결정했습니다.
tar xvzf blah.tar.gz
이것은 것입니다
blah.tar.gz
한 번에 한 블록 씩 의 1GB 압축 데이터 내용 을 메모리로 읽습니다.
gzip
메모리 의 압축 해제 기를 통해 압축 된 데이터를 처리하십시오 .
- 메모리 버퍼가 가득 차면 메모리의 해당 데이터를 파일 형식 파서로 파이프
tar
하여 메타 데이터 등에 대한 정보와 압축되지 않은 파일 데이터를 읽습니다.
- 메모리 버퍼가
tar
파일 구문 분석기 에 가득 차면 파일과 디렉토리를 작성하고 압축되지 않은 내용으로 채워서 압축되지 않은 데이터를 디스크에 씁니다.
이 프로세스에서 디스크에서 읽은 총 데이터는 1GB의 압축 데이터입니다.
이 프로세스에서 디스크에 기록한 총 데이터는 2GB의 압축되지 않은 데이터 + 메타 데이터의 경우 몇 바이트 = 약 2GB입니다.
당신이 통지하는 경우, 디스크 I의 양 /의 O 방법 2 입니다 동일 의 I / O를, 말하자면, 수행하는 디스크 Zip
또는 7 - 우편 압축 비율의 차이에 대한 조정 프로그램.
압축 비율이 문제가된다면 컴프레서를 사용하여 Xz
캡슐화하십시오 tar
. LZMA2의 TAR 아카이브는 7-Zip에서 사용할 수있는 가장 진보 된 알고리즘만큼 효율적입니다.
2 부 : 기능
tar
유닉스 권한을 파일 메타 데이터 내에 저장하고, 모든 종류의 다른 권한, 심볼릭 링크 등으로 디렉토리를 성공적으로 압축하는 것으로 잘 알려져 있으며 테스트되었습니다. 여러 파일을 가져와야하는 경우가 몇 개 이상 있습니다. 하나의 파일 또는 스트림으로 압축하지만 반드시 압축 할 필요는 없습니다 (압축이 유용하고 자주 사용되지만).
3 부 : 호환성
대부분의 Windows 사용자가 .zip 또는 .rar 압축 풀기 프로그램에 액세스 할 수있는 것과 같이 대부분의 도구는 "최소 공통 분모"파일 형식이므로 소스 또는 이진 형식으로 .tar.gz 또는 .tar.bz2로 배포됩니다. , 심지어 가장 기본적인 것조차, 나이와 상관없이 적어도 tar와 gunzip에 접근 할 수 있습니다. 안드로이드 펌웨어조차도 이러한 도구에 액세스 할 수 있습니다.
최신 배포를 실행하는 청중을 대상으로하는 새로운 프로젝트는 .tar.xz (gzip 또는 bzip2보다 더 잘 압축되는 Xz (LZMA) 압축 형식 사용) 또는 .7z와 같은보다 현대적인 형식으로 배포 할 수 있습니다. ZIP 또는 RAR 파일 형식은 여러 파일을 단일 파일로 캡슐화하기위한 레이아웃을 압축하고 지정합니다.
당신은 .7z 음악 같이 새로운 형식의 온라인 다운로드 상점에서 판매되지 않는 것과 같은 이유에서 더 자주 사용 표시되지 않는 작품 으로, 또는 비디오 의 WebM . 고대 또는 매우 기본적인 시스템을 사용하는 사람들과의 호환성.
tar xvzf
보다 더 어렵습니다7z -x
...