본문 바로가기
개발환경/우분투

우분투에서 7zip command line 사용하기 (p7zip과 7za추천)

by Kibua20 2020. 7. 9.

7zip 파일은 압축율이 좋아 자주 사용하는 편이고, 개인이나 단체에서도 무료로 사용할 수 있습니다.  7zip에 대한 소개는 공식 홈페이지를 참고 부탁드리며,  추가 설명이 필요 없을 정도로 유명한 압축 툴으로 LZMA 이라는 압축 알고리즘 기반으로 개발되었다는 정보만 이해하면 문제가 없을 것 입니다.

 

우분투 20.04를 설치하면 notilus FileManager에서 기본적으로 7zip 파일의 압축 및 해제를 지원하기 때문에 사용에는 불편함이 없습니다. 하지만, 개발하고 있는 SW와 프로그램과 7zip을 연동하기 위해서는 터미널 상에서 command line interface를 사용할 수 있어야 합니다.  예를 들어 특정 폴더는 주기적으로 7zip으로 압축하여 백업하는 프로그램을 만드는 경우 sh command를 프로그램에서 호출해서 사용가능합니다. 

 

7zip 기능 출처: https://www.7-zip.org/7z.html

우분투에서 7zip 압축툴은 p7zip (=간단 옵션 버전)와 7zr (또는7za)가 있습니다. p7zip은 /usr/bin/에 기본 설치되어 있고, 사용법이 단순합니다.  $ p7zip -d  test.7zip 으로 -d 옵션을 사용해서 압축을 풀 수 있습니다. 

 

Usage: /usr/bin/p7zip [options] [--] [ name ... ]
Options:
-c --stdout --to-stdout output data to stdout
-d --decompress --uncompress decompress file
-f --force do not ask questions
-k --keep keep original file
-h --help print this help
-- treat subsequent arguments as file
names, even if they start with a dash

 

보다 다양한 압축 옵션을 사용하기 위해서는 7zr 과 7za를 사용해야 합니다. 7zr 과 7za 의 차이점은 7zr은 7za의 light 버전으로 7zip 입축 파일 생성 시 '패스 워드' 입력이 지원 안되고, 일부 압축 알고리즘(LZMA2, XZ)만 지원합니다.  압축 파일에 패스워드를 설정하기 위해서는 반드시 7za를 사용해야 합니다. 7zr은 자주 사용하는 압축 알고리즘만 지원하기 때문에 압축이 안풀리는 파일이 있다면 7za으로 확인할 필요가 있습니다.   

 

7zr과 7za의 설치 방법은 아래와 같습니다. 설치 후 사용법은 아래와 같습니다. 다양한 옵션을 제공합니다. 

  

$ sudo apt install p7zip p7zip-full

 

Usage: 7za <command> [<switches>...] <archive_name> [<file_names>...] [<@listfiles...>]

<Commands>
a : Add files to archive
b : Benchmark
d : Delete files from archive
e : Extract files from archive (without using directory names)
h : Calculate hash values for files
i : Show information about supported formats
l : List contents of archive
rn : Rename files in archive
t : Test integrity of archive
u : Update files to archive
x : eXtract files with full paths

<Switches>
-- : Stop switches parsing
-ai[r[-|0]]{@listfile|!wildcard} : Include archives
-ax[r[-|0]]{@listfile|!wildcard} : eXclude archives
-ao{a|s|t|u} : set Overwrite mode
-an : disable archive_name field
-bb[0-3] : set output log level
-bd : disable progress indicator
-bs{o|e|p}{0|1|2} : set output stream for output/error/progress line
-bt : show execution time statistics
-i[r[-|0]]{@listfile|!wildcard} : Include filenames
-m{Parameters} : set compression Method
-mmt[N] : set number of CPU threads
-o{Directory} : set Output directory
-r[-|0] : Recurse subdirectories
-sa{a|e|s} : set Archive name mode
-scc{UTF-8|WIN|DOS} : set charset for for console input/output
-scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files
-scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands
-sdel : delete files after compression
-seml[.] : send archive by email
-sfx[{name}] : Create SFX archive
-si[{name}] : read data from stdin
-slp : set Large Pages mode
-slt : show technical information for l (List) command
-snh : store hard links as links
-snl : store symbolic links as links
-sni : store NT security information
-sns[-] : store NTFS alternate streams
-so : write data to stdout
-spd : disable wildcard matching for file names
-spe : eliminate duplication of root folder for extract command
-spf : use fully qualified file paths
-ssc[-] : set sensitive case mode
-ssw : compress shared files
-stl : set archive timestamp from the most recently modified file
-stm{HexMask} : set CPU thread affinity mask (hexadecimal number)
-stx{Type} : exclude archive type
-t{Type} : Set type of archive
-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options
-v{Size}[b|k|m|g] : Create volumes
-w[{path}] : assign Work directory. Empty path means a temporary directory
-x[r[-|0]]{@listfile|!wildcard} : eXclude filenames
-y : assume Yes on all queries



사용 예제:

# filename 을 archive_name.7으로 압축

$ 7zr a archive_name.7z file_name

 

# archive_name.7z을 압축 풀기

$ 7zr x archive_name.7z

 

# ./temp에 있는 모든 파일을 압축하면서 패스워드 설정 (-p 옵션, '0000' 로 설정함) , archive.7z 파일로 저장
$ 7za a -pmy_password archive.7z  ./temp

 

# test_dir.7zip 파일을 압축 풀기. 모든 질문 사항은 yes 로 처리, 패스워드은 '0000' 설정

$ 7za x -p0000 -y test_dir.7zip

 

특정 폴더 압축 (참고사항): 파일의 그룹과 권한을 저장하지 않아 tar와 연동해야 한다.

DO NOT USE the 7-zip format for backup purpose on Linux/Unix because : - 7-zip does not store the owner/group of the file. On Linux/Unix, in order to backup directories you must use tar :
- to backup a directory : tar cf - directory | 7za a -si directory.tar.7z
- to restore your backup : 7za x -so directory.tar.7z | tar xf -

 

관련글

[개발환경] - 우분투 작업 스케줄러 Crontab 사용법, 디버깅, 주의 사항

[모바일/Python] - Python: 폴더 백업 기능 구현 (7zip 압축, Sample code)

[모바일/REST API] - 우분투 20.04에서 Web 서버 설치 방법 (apache2, tomcat9)

[모바일/REST API] - Google Gmail API 사용 방법 (1) - Sample code

[개발환경] - 네이버 동영상 다운로드 방법 (동영상과 설명 포함)

[모바일/Android] - [실패 사례] WSL(Windows Subsystem for Linux) 에서 Android 빌드하기

[개발환경] - [Memo] 우분투에서 gmail활용하여 command line으로 email 전송

[개발환경] - 윈도우용 MobaXterm - SSH 및 X-Server 지원

[개발환경] - WSL 2.0 Global configuration (.wslconfig) 을 통한 성능 향상

[개발환경] - Ubuntu 20.04에서 sshfs 를 이용한 원격 폴더 마운트

[개발환경] - [Tips] Ubuntu 20.04 에서 Home 폴더 이름을 영문으로 변경

[개발환경] - 우분투 터미널에 Putty 스타일 Copy&Paste 적용 (Terminator)




댓글