별개의 두 가지 관련 작업이 있습니다. 파일 트리 (파일 이름, 디렉토리 구조, 파일 시스템 권한, 소유권 및 기타 메타 데이터 포함)를 바이트 스트림으로 압축하는 것을 보관 이라고
합니다. 더 작은 바이트 스트림을 생성하기 위해 바이트 스트림에서 중복성을 제거하는 것을 압축 이라고 합니다.
유닉스에서는 두 가지 작업이 각각 별개의 도구로 분리되어 있습니다. 대부분의 다른 플랫폼 (현재 및 과거)에서 결합 된 도구는 보관 및 압축을 모두 수행합니다.
gzip의 인터페이스를 모방 한 gzip 및 기타 프로그램에는 압축 된 출력에 원래 파일 이름을 저장하는 옵션이 있지만 CRC 또는 손상을 감지하기위한 기타 검사와 함께 이들이 저장할 수있는 유일한 메타 데이터입니다.
압축을 아카이브와 분리하면 이점이 있습니다. 아카이빙은 플랫폼에 따라 다르지만 (보존이 필요한 파일 시스템 메타 데이터는 매우 다양 함) 구현은 간단하고 대부분 I / O 바운드이며 시간이 지남에 따라 거의 변경되지 않습니다. 압축은 플랫폼에 독립적이지만 구현은 CPU 바운드이며 최신 하드웨어가 문제를 해결할 수있는 증가 된 리소스를 활용하기 위해 알고리즘이 지속적으로 개선되고 있습니다.
가장 인기있는 유닉스 아카이버는 tar
이 같은 다른 사람을 존재하지만, cpio
하고 ar
. (데비안 패키지는 ar
아카이브이며,
cpio
종종 램 디스크에 사용됩니다.) 가장 오래된 것에서 가장 어린 것까지 (.Z), (.gz),
(.bz2) 및 (.xz) 와 tar
같은 압축 도구와 결합되거나 결합 된 경우가 많습니다 . 최악의 압축에서 최상의 압축으로의 우연이 아닙니다.compress
gzip
bzip2
xz
메이킹 tar
아카이브를하고 압축은 별개의 단계는 다음과 같습니다 압축기가에 대해 아무것도 모르는 tar
파일 형식을. 즉, 압축 된 tar
아카이브 에서 단일 파일을 추출 하려면 이전 파일을 모두 압축 해제해야합니다. 이것을 종종 "고체"아카이브라고합니다.
마찬가지로 tar는 파이프 라인에 유용하기 위해 필요한 "스트리밍"형식이므로 tar 아카이브에는 글로벌 인덱스가 없으며 tar 아카이브의 내용을 추출하는 것만 큼 비용이 많이 듭니다.
이와 대조적으로 Zip 및 RAR 및 7-zip (최신 Windows 플랫폼에서 가장 많이 사용되는 아카이브)은 일반적으로 각 파일을 개별적으로 압축하고 메타 데이터를 약간 압축합니다. 따라서 아카이브에서 파일을 저렴하게 나열하고 개별 파일을 추출 할 수 있지만 동일한 아카이브에있는 여러 파일 사이의 중복성을 활용하여 압축률을 높일 수는 없습니다. 일반적으로 이미 압축 된 파일을 압축해도 파일 크기가 더 줄어들지는 않지만 때때로 압축 파일 내에 zip 파일이 표시 될 수 있습니다. 첫 번째 압축은 많은 작은 파일을 하나의 큰 파일 (압축이 비활성화 된 경우)로 바꿨습니다. 그런 다음 압축하여 단일 엔티티로 압축합니다.
다른 플랫폼과 철학 사이에는 교차 수분 gzip
이 있습니다. 본질적 zip
으로 아카이버 xz
가 7-zip
없는 압축기이며 아카이버가없는 압축기입니다.
다른 특수 압축기가 있습니다. PPM 변형 및 후속 제품 ZPAQ
은 리소스 소비와 상관없이 최대 압축을 위해 최적화되었습니다. 압축을 풀 때만 큼 많은 CPU와 RAM을 쉽게 씹을 수 있으며 압축 해제는 압축과 마찬가지로 과세됩니다 (반면에 가장 널리 사용되는 압축 도구는
비대칭입니다 . 압축 해제는 압축보다 저렴합니다).
스펙트럼의 다른 말단에서 lzo
, snappy
및 LZ4
압축 비용으로 최대 속도와 최소의 자원 소비 설계된 "빛"압축기이다. 파일 시스템 및 기타 객체 저장소에서 널리 사용되지만 독립형 도구만큼 사용되지 않습니다.
어느 것을 골라야합니까?
보관 :
Ubuntu를 사용하기 때문에 tar
다른 곳에서 쉽게 읽을 수있는 파일을 만들려고하지 않는 한 보관 이외의 다른 것을 사용할 이유가 없습니다 .
zip
유비쿼터스는 이길 수 없지만 유닉스 중심이 아니며 파일 시스템 권한 및 소유권 정보를 유지하지 않으며 구운 압축은 구식입니다. 7-zip 및 RAR (및 ZPAQ)은 최신 압축 기능을 제공하지만 Unix 파일 시스템 보관에는 적합하지 않습니다 (압축기로 사용하는 것을 막을 수는 없지만). RAR도 독점적입니다.
압축:
최대 압축을 위해 http://mattmahoney.net/dc/text.html 의 거대한 벤치 마크와 같은 벤치 마크를 볼 수 있습니다 . 이를 통해 관련된 트레이드 오프에 대한 더 나은 아이디어를 얻을 수 있습니다.
그래도 최대 압축을 원하지 않을 것입니다. 너무 비싸요.
xz
최신 Unix 시스템에서 가장 널리 사용되는 범용 압축 도구입니다. 나는 7-zip이 밀접하게 관련되어 있기 때문에 xz 파일도 읽을 수 있다고 생각합니다.
마지막으로 : 단기 스토리지 이외의 데이터를 보관하는 경우 나중에 두통을 최소화하기 위해 오픈 소스를 선택해야합니다.