7zip 사용 방법

■ 자주 사용되는 압축 옵션

ex) 7za a -y -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -mhc=on -mhe=on -p1234 D:\settings_backup.7z D:\settings

ex) 7za a -y -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -mhc=on -mhe=on -p1234 -xr!.svn/ ./test.7z ./src1/ ./src2/

7z        : 실행프로그램
a         : 압축실행
-y        : 모든 질문에 yes
-t7z      : 압축방식을 7z으로 설정
-m0=lzma2 : lzma2 방법 사용
-mx9      : 압축효율 지정, 0(빠름,효율낮음)~9(느림,효율높음)
-mfb=64   : LZMA = 64에 빠른 바이트 사용
-md=32m   : 사전크기 32MB
-ms=on    : Solid archive = on
-mhc=on   : 내용 암호화
-mhe=on   : 헤더도 인크립션한다. 엔트리 파일명 탐색이 불가능하게 만든다
-p1234    : 압축암호를 1234로 지정 (AES256)
-xr!.svn/ : .svn 폴더들을 압축에서 제외
./test.7z : 생성될 압축파일
./src1    : 압축파일에 포함될 디렉토리
./src2    : 압축파일에 포함될 디렉토리

※ Solid archive란 ?

여러개의 파일을 압축할 때, 압축 프로그램은 각 파일별로 압축 정보를 저장합니다. (이를테면 내부적인 압축 방식, 슬라이딩 윈도 사이즈, 딕셔너리 사이즈 등에 관한 정보가 되겠죠.)

solid archive는 이런 정보를 처음에 단 1회만 저장합니다.
첫 파일만 이런 정보를 갖고 나머지 파일은 첫 파일에 준하여 압축됩니다.

따라서 파일수가 엄청 많은 경우 solid 방식으로 압축하면 데이터의 오버헤드를 줄여 더 압축율을 높일 수 있습니다.
대신 단점으로는,

1. 압축파일의 변경 (파일 일부 삭제, 파일 추가, 내용 수정 등)이 불가능.
2. 중간에 위치한 파일만 1개 풀고 싶어도 반드시 첫 파일부터 순서대로 풀어내야만 함.
3. 중간 지점이 파손되었을 경우 그 이후의 파일도 모두 파손됨.
4. 작은 용량의 파일이 매우 많을 경우는 압축율 향상에 도움이 되나 큰 용량의 파일 몇 개로 된 경우는 효과가 거의 없음.



■기본 명령어 사용

▣압축하기 - subdir 의 모든 파일을 archive.7z 으로 압축합니다.
7z.exe a -mx9 archive.7z subdir\

▣특정 파일을 빼고 압축하기 - *.tmp 파일을 제외하고 압축합니다.
7z.exe a archive.7z subdir\ -x!*.tmp

▣암호 설정하기 - 압축파일의 암호를 1234로 지정합니다.
7z.exe a archive.7z subdir\ -p1234

▣대상 폴더에 압축풀기 - c:\dest 에 파일의 압축을 풉니다.
7z.exe x archive.zip -oc:\dest

■ 명령 형식

# 7za <명령변수> [<선택사항]> <압축 파일 이름> [<넣을 파일 이름>...] [<@목록 파일>...]
# 7za <command> [<switches>...] <archive_name> [<file_names>...] [<@listfiles...>]

(1) 명령변수(command)
a: 압축 파일(archive)에 끼워넣음
b: 견주기(benchmark)
d: 압축 파일에서 지정한 파일을 지움
e: 한 경로에 모든 파일을 풂
l: 목록 보기
t: 압축 파일 시험하기 (무결성 검사)
u: 압축 파일에 파일을 갱신하여 넣음
x: 온전한 경로를 만들어 파일들을 풂

(2) 선택사항(switch)
-ai[r[-|0]]{@listfile|!wildcard}: 지정한 압축 파일들을 포함함
-ax[r[-|0]{@listfile|!wildcard}: 지정한 압축 파일들을 제외함

-aoa: 모든 파일들을 덮어 씀
-aos: 이미 있는 파일은 덮어쓰지 않고 건너뜀
-aou: 이미 있는 파일을 만나면 숫자를 덧붙여 새 파일을 만들어 풂
-aot: 이미 있는 파일의 이름을 바꾸어 풂

-bd: 진행률을 나타내지 않음
-i[r[-|0]]{@listfile|!wildcard}: 지정한 파일 이름들을 포함함

-m{Parameters}: 압축 방법을 지정함
-m0=PPMd: PPMd 방식으로 압축함
-m0=lzma: LZMA 방식으로 압축함 (기본값)
-md={크기}: 사전 크기 (32MB로 설정할 때: -md=32m)
-mfb={크기}: LZMA fast byte 크기 (보기: -mfb=64)
-mhe=on|off: 압축 파일의 표제 정보(헤더, header) 부호 매김(encryptopm) [기본값은 꺼짐(off)]
-ms=on|off: 덩어리(solid) 압축 방식 켜고 끄기 (켤 때: -ms=on)
-mx0: 압축하지 않고 묶음
-mx1: 압축률 - 낮음
-mx3: 압축률 - 빠름(fast, 관련 변수들이 알아서 조정됨)
-mx5: 압축률 - 보통(normal)
-mx7: 압축률 - 높음(maximum, 기본값)
-mx9: 압축률 - 매우 높음(ultra, 메모리를 많이 씀)

-r : 하위 경로까지 적용함 주1
-o: 출력할 자료방을 설정함
-p{암호(password)} : 암호를 걺
-scs{UTF-8 | WIN | DOS}: 목록 파일의 문자코드를 지정함
-sfx[이름}]: 실행 파일로 만듦
-si[{이름]: 자료를 표준입력기(stdin)에서 읽음
-slt: 목록 명령을 위한 기술 정보를 보임
-so: 자료를 표준출력기(stdout)에 기록함

-ssc[-]: 민감한 상황 방식(sensitive case mode)으로 설정함 주2
-ssw: 잠긴 파일을 압축함

-t{형식(Type)}: 압축 파일 형식(7z, zip, gzip, bzip2, tar)을 정함. 기본값은 -t7z
-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: 갱신 선택사항들
-v{크기(Size)}[b|k|m|g]: 분할 파일의 크기를 지정함
-w[{경로}]: 작업할 자료방을 가리킴 (비어 있는 임시 자료방)
-x[r[-|0]]]{@listfile|!wildcard}: 압축 파일에 넣지 않을 파일 이름을 지정함
-y: 압축할 때 모두 예(yes)라고 답하며 진행함

(1) dir 방에 든 모든 파일들을 압축 파일에 끼워 넣을 때 (add)
# 7za a archive.7z ./dir/ 주3

(2) 확장자가 txt인 파일들을 갱신하여 넣을 때 (update)
# 7za u archive.zip *.txt

(3) 압축된 파일을 경로까지 만들어 풀 때 (eXtract)
# 7za x archive.7z

(4) 압축된 파일을 특정한 경로(./dir/)에 풀 때
# 7za x archive.7z -o./dir/

(5) 모든 파일을 한 경로에만 풀 때 (Extract)
# 7za e archive.7z

(6) 압축된 파일의 정보를 볼 때 (list)
# 7za l archive.7z

(7) 압축 파일에서 확장자가 bak인 파일을 지울 때 (delete)
# 7za d archive.7z *.bak -r

(8) 압축된 파일에 이상이 없는지 검사할 때 (test)
# 7za t archive.7z *.doc -r

(9) 실행할 수 있는 압축 파일을 만듦
# 7za a -sfx archive.exe ./
위로 스크롤