하나의 큰 아카이브로 압축하면 폴더를 개별적으로 압축하는 것보다 더 나은 압축 결과를 얻을 수 있습니까?

하나의 큰 아카이브로 압축하면 폴더를 개별적으로 압축하는 것보다 더 나은 압축 결과를 얻을 수 있습니까?

약 8GB 정도의 폴더가 여러 개 있습니다. 이 폴더들을 합치면 총 데이터 용량은 약 60GB입니다. 이러한 폴더를 두 가지 방법 중 하나로 압축할 수 있습니다. 개별적으로 각 폴더에 대해 하나의 압축 아카이브를 생성하거나 모두 하나의 대규모 압축 아카이브로 압축할 수 있습니다.

일반적으로 말하면,압축할 모든 데이터의 유형이 동일하고 사용된 압축 알고리즘이 동일하다고 가정하면(그리고 더 큰 파일의 압축을 푸는 데 걸리는 시간도 신경 쓰지 않음) 두 방법 모두 압축이 더 나은 결과를 얻을 수 있습니다. 아니면 두 시나리오에서 압축 파일의 총 크기가 같은 경향이 있습니까?

답변1

하나의 큰 아카이브로 압축하면 폴더를 개별적으로 압축하는 것보다 더 나은 압축 결과를 얻을 수 있습니까?반드시 그런 것은 아닙니다.

아카이브가 사용 중인 경우에만견고한 압축. 비고체 아카이브(예: Zip 아카이브)는 파일을 개별적으로 압축합니다. 이를 통해 아카이브에서 단일 파일의 압축을 쉽게 풀 수 있습니다. 또한 모든 것을 다시 압축할 필요 없이 아카이브에 파일을 추가할 수 있습니다.

견고한 아카이브를 사용하면 이 모든 것이 훨씬 더 어렵습니다. 스트림의 맨 끝에서 파일의 압축을 풀려면 모든 것을 압축을 풀어야 합니다(반드시 디스크에 기록할 필요는 없음). 파일을 추가할 때 알고리즘도 모든 과정을 거쳐야 합니다.

그러나 중간 지점이 있습니다. "단단한 블록"을 사용하는 것입니다. 이제 아카이버는 전체 파일을 항상 처리할 필요가 없고 파일 중 일부만 처리합니다.

7-Zip GUI에서는 다음 옵션을 사용합니다.

7-Zip 추가 대화 상자

압축되는 데이터를 고려하지 않으면 정말 간단합니다.

  • Non-solid: 빠른 대화형 액세스, 최악의 압축
  • 견고한 블록: 다소 효율적인 대화형 액세스, 더 나은 압축
  • 견고함: 대화형 액세스 없음, 최상의 압축

예측된 액세스 패턴에 따라 적합한 변형을 선택해야 합니다.

답변2

절대적으로 확실하게 말할 수는 없지만 더 많은 데이터 블록이 반복적으로 발견될 수 있으므로 이론적으로 하나의 더 큰 아카이브는 더 작은 아카이브 크기를 가져옵니다. 이는 귀하가 말한 것처럼 데이터가 균질화되어 있다고 가정합니다.

그러나 특정 폴더에는 더 유사한 데이터 블록이 있는 파일이 포함되어 있으므로 자체 개별 아카이브로 더 잘 압축할 수 있습니다.

어떤 방법이 가장 좋은지 알 수 있는 유일한 방법은 두 가지 방법을 모두 테스트하는 것입니다.

답변3

단일 아카이브는 생각하는 이유 때문은 아니지만 거의 항상 더 작습니다.

간단히 말해서, 하나의 아카이브만 보유하면 여러 개의 아카이브 파일 헤더로 인해 공간을 낭비하지 않습니다. 유효한 아카이브가 되기 위해 아카이브 파일이 차지하는 최소한의 공간이 있으며, 결국 생성하는 각 아카이브에서 그만큼의 공간을 차지하게 됩니다. 널리 사용되는 유일한 예외는 cpio아카이브 자체에 대한 헤더가 없고 대신 파일별 헤더만 있는 형식입니다.

좀 더 현실적으로, 당신은대개둘 이상의 아카이브 대신 하나의 아카이브를 사용하여 적어도 비슷한 압축 비율을 얻으며 일부 아카이버의 경우 훨씬 더 나을 수 있습니다(예: zpaq중복 제거이내에보관하므로 중복된 데이터가 많을 경우 공간을 많이 절약할 수 있습니다.)

결정하기 전에 물어봐야 할 또 다른 질문이 있습니다. 여러 개의 작은 아카이브 대신 하나의 큰 아카이브를 처리해야 하는 오버헤드가 공간을 절약할 가치가 있습니까? 데이터를 저장하는 위치에 따라 더 작은 아카이브를 사용하는 것이 더 경제적일 수 있습니다. 특히 한 번에 폴더 중 하나만 필요할 경우에는 더욱 그렇습니다.

하지만 전반적으로 Keltari가 정확합니다. 확실히 알 수 있는 유일한 방법은 테스트하는 것입니다.

관련 정보