7 Zip을 사용하여 파일을 압축 할 때 사용하는 가장 좋은 옵션은 무엇입니까?


61

종종 로그 파일을 수집하여 중앙 서버 (다른 회사 소유)에 업로드해야합니다. 중앙 서버에는 파일의 크기 제한이 있으므로 여전히 zip 형식으로 가능한 가장 작은 파일을 만들려고합니다.

필요한 파일 크기가 작은 경우 텍스트 파일을 zip 형식으로 압축 할 때 사용하는 가장 좋은 설정은 무엇입니까?

7zip 옵션

나는 명백하고 선택된 초 압축을 해왔고, LZMA가 수축보다 더 잘 작동한다는 것을 알았지 만, 그것들을 모두 테스트하기에는 너무 많은 다른 옵션 순열이 있습니다.


1
Zip을 여러 파일로 분할하는 것이 옵션입니까?
JaredMcAteer

@Original, 나는 그렇게 생각하지 않습니다. ( 'split to volume'옵션은 무엇입니까?) 오히려 간단하게 유지하고 파일이 하나만 있습니다. 실제로 필요한 경우 원래 파일 (과거에 수행 한 파일)을 분할 할 수 있지만 목표는 파일을 하나의 파일로 유지하는 것입니다.
jjnguy

아, 그리고 나는이 질문 superuser.com/questions/178111/을 보았습니다 ... 그러나 그것은 실제로 내 질문에 전혀 대답하지 않습니다.
jjnguy

나는 당신이 묻는 정확한 질문에 대답 할 수 없다고 생각합니다. 일부 텍스트 파일은 다른 알고리즘으로 더 잘 압축됩니다. 때로는 zip이 더 좋으며 때로는 gzip도 좋습니다. 때로는 압축 수준에 차이가 생기고 때로는 그렇지 않습니다. 그것은 모두 파일에 달려 있습니다. 따라서 정확한 질문에 대답하는 대신 허용되는 최대 크기를 다루는 동기 부여 예를 설명했습니다. 최상의 알고리즘을 사용하더라도 크기는 여전히 제한되어 있으며 특히 큰 로그는 해당 임계 값 아래로 압축되지 않을 수 있으므로 어쨌든 분할해야합니다.
Rob Kennedy

2
Deflate형식 이외의 것을 선택 하면 "정상".zip 파일이 아니라 WinZip이 개척 한 "확장 된"zip 파일입니다. 원래 확장 기능을 .zip으로 유지하여 대부분의 압축을 유지했지만 (대부분의 일반 zip 처리 도구로는 처리 할 수 ​​없기 때문에) 대부분의 아카이버는 .zipx를 사용하여 기존 .zip 파일과 구별합니다. LZMA를 사용할 수 있다면 .7z로 전환하고 PPMd를 선택하십시오. 텍스트 파일의 압축률이 향상됩니다!
afrazier

답변:


61

7-Zip이 생성 할 수있는 가장 작은 표준 ZIP 파일을 만들려면 다음을 시도하십시오.

7z a -mm=Deflate -mfb=258 -mpass=15 -r foo.zip C:\Path\To\Files\*

출처 : 최고의 표준 ZIP 압축을 어떻게 얻을 수 있습니까?

그렇지 않으면 ZIP 표준에 신경 쓰지 않으면 다음과 같은 울트라 설정을 사용하십시오.

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1

어느 것이 :

-t7z   7z archive

-m0=lzma
       lzma method

-mx=9  level of compression = 9 (Ultra)

-mfb=64
       number of fast bytes for LZMA = 64
-md=32m
       dictionary size = 32 megabytes

-ms=on solid archive = on

2
@ 텍 : 왜? 좋은 것이 아닙니다. 문제는 "표준 ZIP 형식"을 사용하는 것에 관한 것이 었으므로 LZMA를 지정해서는 안됩니다. -ms = on은 표준 zip 파일이 아닌 .7z 용입니다. -md는 BZip2와 관련이 있으므로 ZIP (또는 LZMA)에 영향을 미치지 않을 것으로 예상됩니다. -mfb = 64는 최적화되지 않은 값입니다. -mfb = 258은 작은 zip 파일을 만듭니다. 그리고이 답변에는 zip 파일에 영향을 줄 수있는 -mpass = 15도 언급되어 있지 않습니다. 이것은 불행히도 여러 가지 방법으로 잘못된 형식의 답변입니다.
TOOGAM


@bers 네, 맞습니다. 오타 수정.
kenorb

7-zip FAQ를 보면 어떤 상황에서는 최신 버전의 7z가 이전 버전보다 성능이 떨어질 수 있다고합니다. 자세한 내용은 FAQ를 읽으십시오. 그러나 GUI의 매개 변수 필드에서 'qs'를 사용하거나 명령 행 버전에서 -mqs를 사용하여 파일 정렬 방법으로 이전 정렬을 사용하십시오. 7-zip.org/faq.html .
drojf

13

단지 .zip이 아닌 .7z 형식을 사용할 수 있다면 PPMD 를 다음 옵션과 함께 사용 하고 압축 수준에서 설정 한대로 다른 모든 것을 그대로 둡니다.

  • 보관 형식 : 7z
  • 압축 방법 : PPMD
  • 압축 수준 : 울트라

이 옵션을 사용하여 서버 / 텍스트 로그 (60MB +)를 정기적으로 압축하며 일반적으로 원래 크기의 1-2 % 로 나옵니다 .


로그 파일과 같은 텍스트의 경우 ppmd를 사용하는 것이 좋습니다. 그러나 문제는 zip 형식으로 유지해야하며 PPMD에서는 작동하지 않을 수 있다고 언급했습니다.
Brian Minton

PPMD로 압축을 시도하면 Windows 탐색기가 Windows 7에서 불만을 제기하지 않고 내용을 엽니 다
Umber Ferrule

2
나도 그것을 알아 차렸다. 내용이 잘 열립니다. 그러나 실제로 zip 파일 내부의 파일 중 하나를 보려고 시도했지만 실패했습니다.
Brian Minton

텍스트 파일에서는 더 잘 작동하지만 C # 프로젝트 (텍스트 + DLL)를 압축하는 것이 더 효과적이지 않았습니다.
Riga

2
왜 텍스트 파일에 대해 PPMD가 뛰어난 압축 방법입니까?
user598527

7

우분투 서버 14.04.03의 db.fdb 1,2 GB (1236598784 B)와 VM의 p7zip [64] 9.20을 비교합니다.

1. 7z a -mx=9 1.7z db.fdb
2. 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on 2.7z db.fdb
3. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on 3.7z db.fdb
4. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -pass=15 4.7z db.fdb
5. 7z a -mx=9 -mmt=on 5.7z db.fdb
6. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -mmt=on 6.7z db.fdb

결과를 얻습니다.

1.7z 96 MB (100108731 B) with 6' 25"
2.7z 95 MB ( 99520375 B) with 5' 18"
3.7z 93 MB ( 97512311 B) with 9' 19"
4.7z 93 MB ( 97512345 B) with 9' 40"
5.7z 96 MB (100108731 B) with 5' 26"
6.7z 93 MB ( 97512311 B) with 9' 09"

나는 두 번째 방법이 가장 잘 작동한다고 생각합니다. 그러나 최상의 "보기"와 기억하기 쉬운 방법은 작은 파일과 최대 압축 지점이없는 첫 번째 방법입니다. 2와 3 방법 사이에서 우리는 더 작은 7z를 얻지 않지만 압축에 거의 2 시간 더 지불합니다. 누구나 스스로 결정합니다.


7

많은 실험을 한 후 자세한 7zip 문서를 파고 고급 LZMA2 매개 변수와 관련된 7z 소스 코드 중 일부를 읽은 다음은 더 나은 방법입니다. 여기에 게시되거나 7z 맨 페이지에 게시 된 이전에 승인 된 솔루션보다 1GB 실제 테스트 파일 이 2-4 배 이상 향상 되었습니다.

7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 archive.7z inputfileordir

LZMA2 압축은 여기에서 가정되지만, 또는와 같은 고급 LZMA2 옵션 -m0=LZMA2:27또는 다음 -m0=LZMA2:d25과 같은 매개 변수 배열을 전달하면 7zip에서 더 나은 성능을 얻을 수 있습니다

-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1

이러한 매개 변수는 테스트 한 7z 버전에서 존중되지 않는 것 같지만 7z 코드를 추가로 탐색하거나 패치하여 올바르게 구문 분석 할 수 있습니다. 또는 작동해야하며 테스트 된 빌드에서 손상되었을 수도 있습니다.


와우, 이것은 정말 큰 차이를 만들었습니다. 내 아카이브의 경우 여기에 다른 답변을 포함하여 많은 다른 제안을 실험했으며 가장 좋은 결과는 99MB였습니다.이 설정을 사용하는 85MB입니다.
user9399

0

"split to volume, bytes"필드를 서버의 최대 허용 파일 크기로 설정하십시오 (바이트 단위는 "KB"및 "MB"와 같은 일반적인 약어를 허용하는 것처럼 보입니다). zip 파일 이이 크기를 초과하면 7-zip은 자동으로 여러 파일로 분할합니다 (예 : integration_serviceLog.zip.001 , integration_serviceLog.zip.002 등) (PK Zip은이 파일을 사용하여 zip 파일을 여러 개의 플로피 디스크) 압축을 풀려면 모든 파일이 있어야합니다. 한 파일에 가장 적합한 파일이 다른 파일에 대해 다를 수 있으므로 필요할 때마다이 과정을 거치지 않아도되기 때문에 특정 파일 세트에 사용할 절대 최고의 압축 설정에 대해 걱정하는 대신 사용하십시오. 복사 로그.


1
다른 쪽 사람들이 파일을 압축 해제하는 방법이 걱정됩니다. 가능한 한 간단해야합니다. 내장 된 Windows zip 또는 gzip을 사용하여 분할 볼륨의 압축을 풀 수 있는지 알고 있습니까?
jjnguy

내장 된 Windows zip 폴더 기능은 스팬 된 zip 파일을 수행하지 않습니다. 그것은 Windows 3 이전의 형식의 표준 기능이기 때문에 너무 나쁩니다.하지만 gzip이 그렇게 할 수 없다면 매우 놀랐습니다. WinZip은 확실히 할 수 있습니다.
Rob Kennedy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.