여행을 개발하다

[Linux] 압축 파일 관리 명령어 (gzip, gunzip, bzip2, bunzip2, xz, unxz) 본문

운영체제/Linux

[Linux] 압축 파일 관리 명령어 (gzip, gunzip, bzip2, bunzip2, xz, unxz)

yhtragramming 2020. 3. 17. 20:13

이번 포스팅에서는 리눅스의 압축 파일 관련 명령어에 대해 이야기하고자 한다.

 

파일을 하나로 묶는 명령어인 tar와 연계해서 많이 사용되기 때문에, 이전 포스팅인 'tar 명령어'와 함께 참고하면 좋을 것 같다.

아래 링크 참고.

 

https://tragramming.tistory.com/83

 

tar 명령어의 여러 옵션 중에는 j, J, z, Z과 같은 옵션이 있었다. 이는 주로 여러 개의 파일이나 디렉터리를 하나의 파일을 묶음과 동시 특정 압축형식으로 압축할 때 사용된다고 설명했다.

 

이 글의 독자 대부분이 윈도 운영체제에서 '알집'과 같은 압축 유틸리티를 사용했던 경험이 있을 것이다. 그 가운데에서도 zip, apk, rar, 7z와 같이 여러 확장자들(압축형식)도 봤을 것이다.

 

리눅스에서도 여러종류의 압축형식을 지원한다. 단, 어떤 형식을 사용하냐에 따라 압축률에도 차이가 있으며, 사용자가 옵션을 사용해 압축률을 조절할 수도 있다. 그럼 리눅스에는 어떤 종류의 압축방식 및 명령어가 있는지 살펴본다.

 

다음은 압축 관련 명령어 실습을 위해 사용할 소스에 대한 정보이다.

 

작업할 사용자 : user1
작업할 디렉터리 : user1의 홈 디렉터리
user1@ubuntu:~$ ls -trl
total 12
-rwxr-xr-x 1 user1 user1     0 Mar 16 00:40 sample.txt
-rwxr-xr-x 1 user1 user1     0 Mar 16 00:40 sample1.txt
-rw-rw-r-- 1 user1 user1 10240 Mar 16 22:31 newFile.tar

 

1. gzip, gunzip

- GNU zip의 약자로, GNU에서 만든 압축 프로그램이다.

- UNIX의 대표적인 압축 프로그램인 compress를 대체하기 위해 만들어졌다.

- gzip으로 압축하면 파일명에 .gz가 붙으며, 압축 해체는 gunzip 명령을 사용한다.

 

* 주요 옵션

옵션

설명

-d

압축을 풀 때 사용하는 옵션이다.

-1

파일의 압축 시간을 줄인다. 이 옵션을 사용하면 압축은 빠르지만 압축률은 떨어진다.

-9

파일을 최대로 압축한다. 압축률은 좋아지지만 시간이 많이 걸린다.

-l

압축 파일에 대한 정보를 출력하는 명령이다.

-v

진행 과정을 이름 및 퍼센트와 함께 자세히 보여준다.

참고서적 : 리눅스 마스터 1급 정복하기, 북스홀릭 (정성재, 배유미 공저)

 

1.1 압축하기

-gzip -[1~9][v] 파일명

 

가장 기본적인만큼 명령도 쉽다. 간단하게 gzip 명령어 뒤에 압축하고자 하는 파일명을 적어주면 된다. 압축을 하게되면 신규 파일이 생성되는 것이 아니라 기존의 파일 자체가 압축파일로 대체됨에 유의해야 한다.

user1@ubuntu:~$ gzip newFile.tar
user1@ubuntu:~$ ls -trl
total 4
-rwxr-xr-x 1 user1 user1   0 Mar 16 00:40 sample.txt
-rwxr-xr-x 1 user1 user1   0 Mar 16 00:40 sample1.txt
-rw-rw-r-- 1 user1 user1 144 Mar 16 22:31 newFile.tar.gz

이 때, 압축률을 지정하고 싶으면 1에서 9사이의 숫자를 옵션으로 주면된다. 숫자가 높으면 높을수록 압출률이 높아지며, 압축과정을 보고싶으면 -v옵션을 함께 사용할 수도 있다. 예제에서는 레벨 4의 옵션으로 압축해본다.

user1@ubuntu:~$ gzip -4v newFile.tar 
newFile.tar:	 98.9% -- replaced with newFile.tar.gz

 

 

1.2 압출풀기

- gzip -d 파일명

gunzip 파일명

 

압축한 파일을 다시 풀 수도 있다. 방법은 2가지인데, 하나는 gzip 명령어에 -d 옵션을 사용하는 방법이고, 다른 하나는 gunzip 명령어에 파일명만 지정하는 방법이다.두 가지 전부 동일한 결과를 가져오므로, 그냥 먼저 생각나는 것을 쓰면 될 것 같다.

user1@ubuntu:~$ gunzip newFile.tar.gz 
user1@ubuntu:~$ gzip -d newFile.tar.gz 

 

 

1.3 압축파일의 정보 확인하기

-gzip -l 파일명

 

tar 명령어의 포스팅에서도 다뤘지만, -l 옵션을 사용하면 이미 압축된 파일의 정보를 확인할 수 있다.

user1@ubuntu:~$ gzip -l newFile.tar.gz 
         compressed        uncompressed  ratio uncompressed_name
                144               10240  98.9% newFile.tar

 

2. bzip2, bunzip2

- 버로우즈-휠러 변환이라는 블록 정렬 알고리즘과 허브만 부호화를 사용한 압축 프로그램이다.

- gzip보다 압축률은 좋지만, 압축하는데 더 많은 시간이 걸린다.

- bzip2로 압축하면 파일명 뒤에 .bz2가 붙고, 압축 해제는 bunzip2 명령을 사용한다.

 

* 주요 옵션

옵션

설명

-d

압축을 풀 때 사용하는 옵션이다.

-1

파일의 압축 시간을 줄인다. 이 옵션을 사용하면 압축은 빠르지만 압축률은 떨어진다.

-9

파일을 최대로 압축한다. 압축률은 좋아지지만 시간이 많이 걸린다.

-c 

결과를 표준 출력으로 보낼 때 사용한다. tar와 병행해서 작업할 때 사용한다.

-t

압축 파일을 검사한다.

bzip2, bunzip2 명령어도 압축, 압축효율지정, 압축 결과를 표준 출력으로 보낼 때의 방법이 gzip, gunzip과 똑같다.

단, 생성되는 확장자만 다를 뿐이다.

 

 

3. xz, unxz

- LZMA2라는 알고리즘을 이용하여 만든 데이터 무손실 압축 프로그램이다.

- gzip 및 gzip2와 비교하여 매우 높은 압축률을 자랑한다.

- 높은 압축률로 인하여 최근 공개용 소프트웨어 사이트에서 이 압축 포맷을 사용하여 파일을 배포하고 있다.

- xz로 압축하면 파일명 뒤에 .xz가 붙고, 압축 해제는 unxz 명령을 사용한다.

 

* 주요 옵션

옵션

내용

-z 

압축할 때 사용하는 옵션이다. 기본적으로 설정되어 있어서 사용하지 않아도 된다.

-d

압축을 풀 때 사용하는 옵션이다.

 

xz, unxz 명령어도 gzip, gunzip, bzip2, bunzip2 명령어와 사용법이 동일하므로 예제는 생략한다.

 

 

여기서 언급된 3개의 압축형식을 압축률이 좋은 순으로 나열하면, xz > bzip2 > gzip > (Compress) 순이다.

 

지금까지 리눅스의 압축 파일 관리 명령어 (gzip, gunzip, bzip2, bunzip2, xz, unxz)에 대해 알아보았다.

 

감사합니다 : )

Comments