728x90

리눅스에서 압축파일 다루기


 

리눅스는 파일을 압축하거나 묶는 많은 방법을 제공합니다. 
윈도우의 편한(?) 환경은 아니지만, 유닉스의 기본 철학 '작은 것이 아름답다'는 정신을 이어 받아 여러 프로그램이 엮어져서 사용됩니다.

리눅스에서는 디렉토리나 여러 파일들을 압축하기 위해서 파일들을 묶고 압축하는 순서로 합니다. 물론, 하나의 파일을 할 경우에는 바로 압축을 하면 됩니다. 리눅스에서 압축 방법은 소프트웨어를 설치하거나 업그레이드 할 때와 시스템을 백업하는데 사용되므로, 반드시 익혀두시기 바랍니다.


tar를 이용하여 파일들을 하나로 묶기

앞에서 리눅스에서 여러 파일들을 압축하기 위해서는 파일들을 묶어야 한다고 했습니다.
이러한 역할을 하는 프로그램이 바로 tar 입니다. tar 은 단순히 여러 파일들을 묶어서 하나의 덩어리로 만드는 작업을 하며, 압축의 효과는 없습니다. 그러므로, 다음에 소개할 압축 프로그램들로 이 덩어리 파일을 압축하면 됩니다. 한가지 주의 할 점은,  tar 사용할 때 반드시 f 옵션을 사용하여 대상 파일을 지정해야 한다는 것입니다. 그래야 다른 옵션을 사용할 때 대상 파일을 사용할 수 있습니다.

 

     사용법 :  tar   <옵션>  <만들 파일이름>  <묶을 파일이름>

옵 션

설   명

-c

tar 파일을 만들때 사용합니다.

-x

묶여진 tar 파일을 해체할 때 사용합니다.

-v

파일들을 묶거나 해체할 때 파일들의 이름과 크기를 표시합니다.

-f

사용할 tar 파일을 지정합니다.

-t

묶여진 tar 파일의 내용물을 출력합니다.

* 위의 옵션들은 -cvf 와 같이 이어서 사용할 수 있습니다. 더 자세한 옵션을 알고 싶다면 tar --help 하세요.


      tar 의 사용방법은 몇가지 예제로 알아 보도록 하겠습니다.

예  제

설  명

tar -xvf example.tar example.tar의 파일들을 해체하고 해체되는 파일들을 표시합니다.
tar -cvf backup.tar /home/ftp/pub /home/ftp/pub 디렉토리와 그 안의 파일들을 backup.tar 이름으로 묶습니다.
tar -tvf example.tar example.tar 안에 묶여있는 파일들의 리스트를 표시합니다.

 

[tar 사용 화면]

사용자 삽입 이미지

 

gzip 사용하기

가장 인기있는 압축 방법은 gzip 을 사용하는 것입니다. 
gzip 파일은, 확장자 .gz 으로 구분할 수 있으며,  gzip 파일의 압축을 해제 하려면, 단순히 gunzip <파일이름.gz> 라고 입력하거나 gzip -d <파일이름.gz> 과 같이 합니다.  gzip 으로 압축된 tar 파일의 확장자는 tgz 일때도 있습니다. 이러한 파일의 압축을 해제하고 아카이브를 푸는 방법에는 두 가지가 있습니다.  .tgz 파일에 대해 gunzip 을 실행한 다음 tar를 실행하여 파일을 푸는 방법과  tar 명령에서 옵션 z를 사용하여 두 가지 작업을 한꺼번에 하는 것입니다. gzip 으로 압축명령을 실행하면 압축을 하는 대상파일은 삭제되며 또한 gzip으로 압축을 푸는 경우에는 압축 되었던 파일이 삭제됩니다.

사용법 :  gzip  <옵션>  <파일이름>

압축하기 gzip cvs.pdf
압축풀기 gzip -d cvs.pdf.gz 또는 gunzip cvs.pdf.gz
-l gzip으로 압축된 파일의 정보를 출력합니다.
-1 빠르게 압축을 하는 대신에 압축율이 떨어집니다.
-9 압축률이 높은 대신 압축시간이 길어집니다.

 

bzip2 사용하기

bzip2 는 gzip 보다 10%-20% 정도 압축률이 훨씬 뛰어나서 빠르게 인기를 얻고 있습니다. 
bzip2 압축은 bz2 파일 확장자로 알 수 있으며, 
단순히 bunzip2 <파일이름.bz2>라고 입력하여 압축을 해제할 수 있습니다. 
또한 gzip 압축과 마찬가지로 tar 에서 j 옵션(tar-1.13 이하는 I -대문자 i)을 사용하여 압축을 해제 할 수 있습니다. tar xvfj <파일이름.tar.bz2> 와 같이 사용합니다. gzip과 마찬가지로 bzip2으로 작업하면 대상파일은 작업 후 삭제됩니다.

사용법 :  bzip2    <옵션>   <파일이름>

압축하기 bzip2   cvs.pdf
압축풀기 bzip2   -d   cvs.pdf.bz2    또는   bunzip2 cvs.pdf.bz2


아래 화면은 gzip와 bzip2의 압축률을 비교한 화면입니다. 
test-1.pdf.gz 은  gzip의 -1 옵션을 test-9.pdf.gz 는 gzip의 -9 옵션을 사용한 결과입니다. 
bzip2가 가장 높은 압축률을 보여주고 있습니다.

[gzip 와 bzip2의 압축률 비교]

사용자 삽입 이미지


마지막으로, compress 명령을 사용하는 유닉스의 오래된 압축 포멧이 있습니다. 
이 포맷의 파일은 더 이상 보기 힘들지만, 여전히 어딘가에서 마주칠 때가 있습니다. 파일 이름에 .Z 확장자가 있으면 compress 유틸리티로 압축한 것임을 알 수 있습니다. 
이러한 파일의 압축을 해제 하려면 uncompress <파일이름.Z> 을 사용합니다.

 

tar 와 gzip, bzip2 같이 사용하기

여러개의 파일들을 하나로 묶어 압축하는 데 상당히 귀찮음을 알게 되었을 것입니다. 
이러한 작업들을 tar의 확장옵션을 사용하여 더 간편하게 할 수 있습니다.

먼저, 필자가 경험한 한가지 좋은 습관을 알려드리겠습니다. 
여러개의 파일들을 묶어 압축을 하기 전에 디렉토리를 만들어 그 안에 파일들을 옮긴 후 압축하는 것이 좋습니다. 이렇게 하면 압축을 풀었을 경우, 다른 파일들은 섞이지 않게 되므로, 좀 더 파일들을 관리하기가 편하게 됩니다.

가령, junilove라는 사용자가 2001년 5월 23일에 다운로드한 pdf 파일들을 압축한다고 했을 경우, 그냥 묶어서 압축하는 경우보다 junilove_20010523_pdf 와 같이 짧고 쉽게 알아 볼 수 있도록 디렉토리를 만들어서 하는 것이 나중에 관리하는데 더 편리합니다.


이제 실제 tar의 확장옵션을 사용하여 압축을 하고 해제하는 방법을 알아 보겠습니다.


◆  tar로 묶어서 gzip으로 압축된 파일 풀어보기

가장 많이 사용되는 형식입니다. 이렇게 압축된 파일은 tar.gz 또는 tgz 과 같은 확장자 형식을 지니며 아래와 같이 간편하게 풀 수 있습니다.

    tar  xvfz  test.tar.gz

tar 로 묶고 bzip2로 압축된 파일은 tar.bz2 와 같은 확장자 형식을 가지며 다음과 같이하여 풀면 됩니다.

    tar  xvfj   test.tar.bz2

[gzip와 bzip2 압축 푸는 화면]

사용자 삽입 이미지

 

 tar로 묶고 gzip으로 압축해 보기


tar 의 확장옵션을 사용하여 편하게 압축을 해보겠습니다. 
tar 에서 압축하는 옵션이 c 옵션과 gzip 을 수행할 수 있는 z 옵션을 사용하면 됩니다.

tar  cvfz  example.tar.gz  example_dir

bzip2로 압축하고 싶다면, z 옵션 대신에 j 옵션(tar-1.13 이하는 I -대문자 i)을 사용하여 bzip2 가 수행되도록 하면 됩니다.

tar  cvfj  example.tar.bz2  example_dir

 

[gzip과 bzip2로 압축하는 화면]


 

zip, arj, rar 압축 파일들 풀어보기

Windows/Dos 에서 많이 사용되었던 압축 포멧인 zip, arj, rar 등의 파일들을 리눅스에서 사용할 수 있습니다. 다만, 압축을 할 수 없지만 해제할 수는 있습니다. 가장 많이 볼 수 있는 것은 zip 형식입니다. 이러한 해제 프로그램들은 rpmfind.net 에서 rpm 패키지를 다운로드 받을 수 있으며, 소스 또한 다운로드 할 수 있습니다. zip과 rar 의 경우에는 쉐어웨어 형태로 압축 프로그램까지 개발되고 있습니다.

unzip unzip 5.41
unarj unarj 2.43
unrar unrar 2.71

[unzip 실행화면]

사용자 삽입 이미지
 

요즘 국내에서 가장 많이 사용되고 있는 국산 압축 프로그램들의 멀티볼륨 압축은 리눅스에서 어떨까요? 
알집, 지펜놀등을 이용하여 멀티볼륨 압축을 한 ZIP, Z00, Z01... 이런 압축은 리눅스에서 압축을 해제할 수 없습니다. 개발사에서 리눅스용 해제 프로그램을 만들어주기 전까지 기달려야 합니다. : (

 

MC 에서의 압축파일

미드나잇 커맨더(MC)에서도 압축파일을 쉽게 관리할 수 있습니다. 
MC에서는 ZIP, tar.gz, tgz, tar.bz2 등을 지원하며 원하는 파일에서 Enter 키를 누르면 압축파일 내용이 보입니다. 여기서 원하는 파일을 선택하여 F5를 눌러 원하는 디렉토리를 입력하면 자동으로 대상 디렉토리에 압축이 풀리게 됩니다.

[MC 에서 압축 풀기]

사용자 삽입 이미지
 


참고자료

gzip 홈페이지

bzip2 홈페이지

러닝 리눅스 제 3판

Linux@Work 5월호 기사


글쓴이 : 이종준님  ( junilove@kebi.com )  "Open mind and don't mind!"


출처 :  http://www.wowlinux.com

728x90

'Programming > linux왕초보' 카테고리의 다른 글

crontab 사용  (0) 2008.09.11
네트워크 모니터링  (0) 2008.09.10
실행중인 리눅스 관리하기  (0) 2008.09.10
리눅스 gcc 설치 방법  (0) 2008.09.10
CRON  (0) 2008.09.10
iptables  (0) 2008.09.10
vsftp 설정 옵션  (0) 2008.09.10
vsftpd 설치하기  (0) 2008.09.10
RPM으로 패키지 관리하기  (0) 2008.09.10
NFS 마운트 (NAS장비)  (0) 2008.09.10

+ Recent posts