파일 압축을위한 최상의 아카이브 형식 선택을 어떻게 평가할 수 있습니까?


24

일반적으로 다음을 관찰했습니다.

  • Linux-y 파일 또는 도구는 아카이브 배포에 bzip2 또는 gzip 을 사용합니다.
  • Windows-y 파일 또는 도구는 ZIP을 사용하여 아카이브 배포
  • 많은 사람들이 7-Zip 을 사용 하여 자신의 아카이브를 만들고 배포합니다.

질문 :

  • 이러한 형식의 장단점은 무엇입니까? 언제 / 왜 다른 하나 (예 : ZIP)를 선택해야합니까 (예 : 7-Zip)?
  • 이러한 형식이 모두 휴대용 형식인데도 왜 이러한 추세가 유지되는 것처럼 보입니까? 특정 플랫폼에서 특정 아카이브 형식을 사용하면 특별한 이점이 있습니까?



@Sathya, @Andreas : 링크에 감사드립니다. :)
Mehrdad

1
압축은 매우 복잡한 분야이며, 하나의 알고리즘으로 모든 것에 대해 최적의 결과를 생성 할 수는 없습니다. 또한 리소스를 던져 더 나은 결과를 얻을 수있는 문제이지만 훨씬 적은 시간 안에 거의 수행 할 수있는 문제입니다. 일부 알고리즘은 속도와 메모리 사용량에 중점을두고 있으며, 시간이 오래 걸리거나 12GB RAM (과장하지 않음)이 필요한지 여부에 관계없이 가능한 가장 작은 파일을 생성하는 데 중점을 둡니다.
Phoshi

1
@Phoshi, 이것은 대답해야합니다.
Yitzchak

답변:


16

사용할 수있는 다양한 압축 형식과 방법이 있으며, 일부는 전혀 압축되지 않으며 하나의 아카이브에 많은 파일을 저장하도록 설계되었으며, 다른 최신 실험 압축기 ( PAQ 기반)는 가능한 한 적극적으로 압축하도록 설계되었습니다. 상기 동작을 수행하는데 걸리는 시간에 관계없이.

압축 방법 선택에서 필요한 기능을 평가하고 사용할 컨텍스트를 고려해야합니다.

다른 기능과 고려 사항은 다음과 같습니다.

  • 압축 능력 -파일을 충분히 축소합니까?
  • 사용 편의성- 파일이 다른 사용자에게 전달 될 경우 아카이브를 쉽게 추출 할 수 있습니까? 아니면 더 많은 소프트웨어를 설치해야합니까?
  • 비밀번호 보호 및 / 또는 암호화 -이러한 보안 조치가 필요합니까?
  • 다중 볼륨 지원 -대상 매체에서 파일을 적절한 청크로 분할해야하는 경우 형식이이를 우아하게 지원합니까? 예를 들어 CD의 경우 650MB입니다.
  • 복구 및 복구 -파일이 부분적으로 손상된 경우 데이터 복원을 돕기 위해 복구 레코드를 제공합니까?
  • 유니 코드 지원 -아카이버가 국제 파일 이름 또는 표준 ASCII 만 지원합니까?
  • 시스템 요구 사항 -7-Zip 과 같은 최신 압축기 는 더 큰 사전 (사전은 압축 파일에서 일반적으로 반복되는 데이터의 참조 임)을 사용하여 압축 효율을 높일 수있는 기능을 제공하지만 압축 및 압축 모두에서 메모리 소비를 증가시킵니다. 감압 시간.
  • 자동 압축 풀림 지원 -아카이브를 필요한 사람이 쉽게 사용할 수 있도록 실행 파일로 롤백 할 수 있습니까? (단일 플랫폼에 대한 자체 추출기 만 작성할 수 있음을 명심하십시오. 일반적으로 Windows 자체 추출기는 기본적으로 Wine과 같은 호환성 계층을 통해 실행하지 않으면 Linux에서 작동하지 않습니다).
  • 파일 시스템 속성 -압축기는 추출 시점에서 보존 할 가치가있는 관련 파일 시스템 메타 데이터 및 권한을 저장합니까?

일반적으로 ZIP 은 가장 보편적으로 사용되는 형식이지만 4GB를 초과하는 크기는 일반적으로 지원되지 않으며 (있는 경우) 보안 지원은 일반적으로 열악한 것으로 간주됩니다 (표준 텍스트는 일반 텍스트 공격으로 인해 손상 될 수 있으며 추가 암호화는 다음과 같습니다). 일반적으로 상용 ZIP 소프트웨어 공급 업체에서 형식의 비공식 파생물로 구현).

그 외에도 대부분의 다른 인기있는 형식은 더 많은 소프트웨어를 설치하여 모든 운영 체제에서 어떤 형태의 지원을 제공합니다.

제 개인의 선택은 7-Zip입니다 . Windows에서 독특한 사용자 인터페이스를 가지고 있음에도 불구하고. Linux 및 Mac OS X 용 압축 풀기 프로그램이 있습니다 (GUI 기반 표준은 아니지만).


3
아카이브가 배포 용인 경우 대상 독자를 고려하고 해당 플랫폼에서 기본적으로 지원되는 형식을 사용해야합니다. 이 경우 다른 고려 사항보다 내게 필요한 옵션이 더 중요 할 수 있습니다.
hammar

정보에 대해 +1 감사하지만 글 머리 기호를 지원 하는 형식 을 언급 하는 것이 훨씬 낫습니다 . :)
Mehrdad

나는 유혹을 받았지만 많은 형식이 있는데 목록을 작성하는 데 시간이 오래 걸린다. Wikipedia에는 ​​다음과 같은
유용한

1
역사는 자동 압축 풀림 보관 파일에 관한 중요한 교훈을 가르쳐줍니다. 컴퓨터가 MS / PC-DOS 프로그램을 실행할 수 없기 때문에 또는 자체 변경 프로그램이 프로세서 변경으로 인해 또는 자체 변경으로 인해 자체 추출 프로그램이 충돌하여 20 년 전 자체 추출을 수행 할 수없는 자체 추출 아카이브가 있습니다. 추출기는 디스크가 너무 클 것으로 기대하지 않기 때문에 디스크가 꽉 찼을 때 디스크가 가득 차 있다고 불평합니다.
JdeBP

그 점은 분명히 논쟁의 여지가 있습니다. 나는 그 특정한 문제에 직면하지는 않았지만 그것이 일어나는 것을 볼 수 있습니다. 나는 그것이 아카이브를 만드는 최종 목표와 파일 사용의 예상 수명에 대한 질문이라고 생각합니다. DOS 시대에서 추출하기 어려운 오래된 아카이브가 있다면 DOSBox를 사용하거나 필요한 경우 VM을 만들 수도 있습니다.
Ruairi Fullam

8

염두에 두어야 할 것은 Jeff Atwood의 블로그 게시물 ( 멀티 코어 시대의 파일 압축)입니다 . 이 기사에서 그는 bzip2가 두 개 이상의 코어를 실행할 때 7-zip보다 우수한 것을 발견했습니다.


+1 omg! 나는 몰랐다. 그러나 압축 비율은 그만한 가치가없는 것 같습니다. :)
Mehrdad

2
그 게시물은 2 세 이상입니다. 현재 3 개 이상의 코어에서 7-zip이 더 잘 작동하지 않습니까?
cregox

BZIP2는 100-900KB 블록으로 압축되므로 여러 코어에서보다 효율적으로 압축되므로 별도의 코어로 블록을 분산시킬 수 있지만 이러한 블록이 서로 다른 것으로 간주되어 압축 효율이 손실됩니다.
Ruairi Fullam

4

첫 번째 질문으로, 7-Zip은 많은 알고리즘을 사용하여 데이터를 압축 및 압축 해제 할 수있는 것보다 아카이버입니다.

두 번째 질문으로 플랫폼이 주어진 형식을 지원하는 도구를 지원하는지 확인하십시오. 예를 들어 Mac에서는 RAR 을 사용하지 않습니다. 사용할 수 있고 지원하는 무료 유틸리티가 있지만 RAR을 지원하는 Windows 유틸리티가 가지고있는 훨씬 풍부한 인터페이스가 부족합니다 (제 경험상).


개인적으로 그래픽 rar 프로그램을 싫어하고 Windows에서도 항상 명령 행을 사용합니다.
CarlF

4

다른 사람들이 언급했듯이 특정 압축 형식의 선택은 사용 및 의도 된 대상에 따라 크게 달라집니다.

  • .tar.gz 및 tar.bz2 아카이브는 tar, gzip 및 bzip2 도구가 플랫폼에서 널리 사용되며 .tar 형식이 가득 차서 Linux 시스템 (및 Linux 사용자와 파일을 공유하기위한 확장명)에 사용하기에 이상적입니다. Unix 권한 및 기타 플랫폼 별 속성 지원 tar 아카이브를 압축하기 위해 gzip과 bzip2 중에서 선택하는 것은 주로 속도 대 압축 비율에 대한 결정이며, bzip2는 더 작은 파일을 제공하지만 압축 속도는 훨씬 느립니다. 이러한 형식의 단점은 Windows와의 호환성이 떨어지고 단일 파일을 추출하기 위해 전체 아카이브를 압축 해제해야 할 가능성이 있다는 것입니다.

  • ZIP 아카이브는 기본 도구를 사용하여 대부분의 플랫폼에서 추출 할 수 있으므로 7-Zip과 같은 타사 아카이브 소프트웨어를 설치하는 데 불편한 기술이 아닌 사용자에게 아카이브를 보내는 데 이상적입니다. 압축 수준은 고급 알고리즘만큼 좋지 않고 Unix 권한을 지원하지 않지만 휴가 사진 아카이브를 할머니에게 보내려는 경우 훌륭한 형식입니다. ZIP은 기본적인 암호 보호 기능을 제공하며 아카이브의 어느 곳에서나 파일을 빠르게 추출 할 수 있습니다.

  • 최상의 압축비를 원한다면 7-Zip이 좋습니다. ZIP과 마찬가지로 Unix 파일 권한 또는 소유권을 지원하지 않으며 대부분의 플랫폼에서 기본적으로 설치되지 않아 사용하기가 약간 더 많지만 압축 비율이 중요한 경우 Windows에서는 그만한 가치가 있습니다. 모든 Linux 환경에서는 tar와 함께 'xz'또는 'lzma'압축 도구를 사용하는 것이 좋습니다.이 도구는 'gzip'및 'bzip2'와 동일한 방식으로 작동하지만 7과 같은 고급 LZMA 알고리즘을 사용합니다 -지퍼.


2

예를 들어, 다음과 같은 경우 언급 된 형식을 사용합니다.

  • 텍스트 파일 (특히 로그) : bz2
  • 배포 할 파일 모음 (예 : 소스 코드) : gz (tar.gz really).
  • 모듬 파일 : 7zip. 거의 모든 것을 매우 효율적으로 압축 할 수 있습니다. 플랫폼 간, 오픈 소스, 안정적이고 가벼운 파일 (헤더 및 데이터) 암호화 ... 다른 질문이 있습니까? :)

나는 RAR을 완전히 피하고 내가 아는 누군가로부터 RAR 파일을받을 때마다 그 형식이 독점적이기 때문에 그 형식의 사용을 중단하고 라이센스가없는 소프트웨어를 사용하고 있다고 말할 것입니다 (대부분의 사람들은 WinRAR의 평가판을 다운로드하여 계속 사용합니다) 영원히).

추신 : 우분투 (주로)와 Windows (듀얼 부팅 및 VirtualBox)를 실행합니다.


1

널리 사용되는 도구가 통합되어 있기 때문에 종종 서로 혼동되는 최소한 4 개의 개별 작업이 있습니다.

  1. 아카이빙 : 여러 파일 (메타 데이터 포함)을 단일 파일로 결합하여 가능한 많은 것을 보존하는 기능. Linux / Unix 세계에서 아카이브는 전통적으로 TAR 파일 형식으로 수행됩니다.
  2. 압축 : 이진 데이터 스트림의 크기를 무손실로 최소화하는 기능. Linux / Unix 세계에서는 전통적으로 GZip 및 BZip2가이를 수행합니다.
  3. 암호화 : 키를 사용하여 데이터를 스크램블하는 기능
  4. 체크섬 : 오류를 감지하고 수정하는 기능.

.tar.gz 및 .tar.bz의 편재는 모든 작업을 수행하는 단일 도구보다 단일 작업을 잘 수행하는 작은 도구의 Unix 철학에 해당합니다. TAR 파일 형식은 압축 또는 암호화를 지원하지 않지만 모든 압축기 (.tar.zip 또는 .tar.7z 포함)를 통해 추가로 압축 할 수 있습니다. GZip 및 BZip2의 작업은 단순히 파일 스트림을 다른 파일 스트림으로 압축하는 것이므로 압축 계층은 메타 데이터 또는 암호화 또는 체크섬을 보존하는 방법을 신경 쓸 필요가 없습니다. 그러나 시간이 지남에 따라 tar컴프레서와 더 편리하게 작업 할 수 있도록 프로그램 에서 몇 가지 단축키가 만들어졌습니다 .

zip 및 7z 파일 형식에서 이러한 개별 작업은 단일 수퍼 파일 형식의 단일 프로그램에 의해 수행됩니다.

이러한 형식이 모두 휴대용 형식인데도 왜 이러한 추세가 유지되는 것처럼 보입니까? 특정 플랫폼에서 특정 아카이브 형식을 사용하면 특별한 이점이 있습니까?

프로그램 소스 코드는 완료된 방식이므로 전통적으로 .tar.gz 또는 .tar.bz2로 배포됩니다. 파일 권한, 수정 시간 등을 유지하는 것은 프로그래밍에 사용되는 다양한 도구 (예 : 제작)에 중요하기 때문입니다.

별도의 보관 및 압축 단계는 수년간 잘 작동했으며 보관 및 압축을 자유롭게 혼합하고 일치시킬 수 있다는 분명한 이점이 있으며 더 똑똑한 도구를 개발하여 단점 (2 단계 압축 프로세스)을 쉽게 우회 할 수 있습니다 ( 대부분의 최신 Linux 압축 프로그램은 중간 단계를 숨기고 .tar.gz 또는 .tar.bz2로 직접 압축합니다.

다른 파일 형식으로 이동할 강력한 이유가 없으며, 최신 압축기는 전통을 깨는 것을 정당화하기 위해 압축률이 크게 향상되지 않으며 tar는 모든 것을 충분히 보존 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.