[리눅스] p7zip(7-Zip) 설치와 사용법

  p7zip는 리눅스에 설치하여 쓸 수 있는 7-Zip이다. 7-Zip답게 압축률이 높아서 zip나 tgz 방식보다 작은 파일을 만들어 낸다. 다만 파일 권한까지 담지 못하므로, p7zip만으로 서버(server)를 백업(backup)하는 것은 알맞지 않다.

  CentOS에서처럼 yum을 쓸 수 있다면 p7zip을 손쉽게 깔 수 있다.

# sudo yum install p7zip

  우분투(Ubuntu)라면 apt-get을 쓸 수 있다.

# sudo apt-get install p7zip

  yum이나 apt-get을 쓰지 않는다면 http://p7zip.sourceforge.net/에서 안내하는 곳에서 p7zip의 바탕과 설치 스크립트가 묶인 파일(p7zip_9.20.1_src_all.tar.bz2)을 받아서 설치할 수 있다. (물론 운영체제 관리 권한이 있어야 p7zip를 깔 수 있다.)

1. 명령 형식

# 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)라고 답하며 진행함

2. 명령어 보기

(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 ./
〈주석〉
  1. tar이나 zip에서 뜻하는 -r은 7za에서는 기본값으로 붙어 있다. 7za에서 -r의 뜻은 tar이나 zip과 다르다. tar에서 -r은 --append와 같은데, tar에서 뜻하는 -r은 7za에서는 기본값으로 적용된다. back
  2. 윈도우와 리눅스를 함께 쓸 때에 쓸모 있다고 한다. back
  3. 여기에 -r을 붙이면 아랫경로에 있는 dir 자료방들이 있는지 뒤져서 dir 자료방들 안의 파일들을 모두 압축 파일에 넣는다. back
글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요

  1. 비밀방문자 2017/09/28 15:48 고유주소 고치기 답하기

    관리자만 볼 수 있는 덧글입니다.

  2. javaxer 2021/11/15 08:41 고유주소 고치기 답하기

    질문 하나만 드리고 싶은게 있는데요,

    -r 옵션을 붙여 주는게 어떤 차이가 있는지 잘 이해가 않가네요.
    보통은 재귀 작동 명령인데 이게 어떤 의미인지 잘 모르겠습니다.

    • 팥알 2021/11/15 14:06 고유주소 고치기 답하기

      주석문에 tar 및 zip에 관하여 설명을 잘못한 것 같아서 주석문을 고쳤습니다.

      archive.7z 파일 안에 아래와 같이 네 파일이 들어 있다고 하면

      ./1.js
      ./2.js
      ./script/3.js
      ./script/resource/4.js

      7za d archive.7z *.js -r
      은 1.js, 2.js, 3.js, 4.js를 모두 지웁니다.

      7za d archive.7z *.js
      은 1.js, 2.js만 지웁니다.