본문 바로가기
IT Security/LINUX Basic

5. LINUX - 파일 보관을 위한 압축/해제, tar

by Rosmary 2019. 8. 11.
728x90
반응형

1. 리눅스에서의 압축 프로그램 사용 목적

 

 

윈도우에는 알집이라고 불리는, 특정 파일을 압축해서 크기를 줄여주는 프로그램이 있다. 일반적인 컴퓨터 사용자들은 용량이 큰 파일을 네트워크 통신을 통해 주고 받을 때, 알집을 주로 사용한다. 하지만,  컴퓨터가 처음 탄생했을 무렵에 사용되었던 압축 프로그램은 지금과 조금 다른 용도로 사용되었다. 

 

리눅스의 vi 편집기는, 특정 파일 작성 후, 저장 과정을 거치면, 저장 전의 파일로 undo가 진행되지 않는다. 만약, 리눅스의 일반 사용자 중 한 명이, 우연히 루트 계정을 탈취하여 사용자 설정 파일을 악의적인 목적으로 변경/저장한다면, 관리자는 이 파일을 원래 형태로 복원하기가 상당히 까다로워진다.

 

따라서 리눅스 계열 시스템 관리자는, 시스템에 영향을 끼치는 설정 파일을 주기적으로 백업하는 과정을 거친다. 하지만, 단순히 파일을 복사만 할 경우, 시스템 내 저장소의 가용 공간이 급격히 줄어들기 때문에, 백업할 파일의 용량을 압축하여 저장할 필요가 있다.

 

압축을 통해 백업파일을 저장하면, 시스템 내의 가용할 수 있는 공간이 조금 더 증가한다.

 

이렇듯, 리눅스에서의 압축프로그램은, 현재 일반인의 사용과는 달리, 백업자료를 효율적으로 저장하기 위한 목적으로 사용되었던 것이다. (물론 용량이 큰 파일을 전송하기 위해 압축 프로그램 사용할 수도 있다)

 

 

 

2. tar 프로그램과 기본 명령어 사용법

 

윈도우에서 알집이 파일 압축을 담당하듯이, 리눅스에서는 tar(타르)라고 불리는 녀석이 압축을 담당한다. 리눅스에서 기본적으로 제공되는 프로그램이기 때문에, 따로 프로그램 설치를 진행할 필요는 없다. 압축 및 해제 명령어는 tar를 사용한다. tar의 사용법은 다음과 같은 명령어로 조회하면 된다.

 

============

tar --help

============

 

 

명령어의 출력 결과는 한 화면에 나타나지 않을 정도로 길다. 첫 줄부터 살펴보면 다음과 같다.

 

첫 줄의 해당 명령어 출력물을 살펴보면, tar 명령어의 사용방법에 대해 Usage 라는 문구로 설명하고 있다.

 

=====================================

tar  [OPTION]  [폴더 및 파일 명]

=====================================

 

하지만, 위의 포맷으로는 어떻게 파일 압축과 해제가 진행되는지 이해하기가 조금 어렵다. 아래의 예시로 나온 명령어를 분석하여 사용 방법을 알아보자.

 

<Example>

파일의 압축:      tar -cf archive.tar foo bar

압축 파일 목록:  tar -tf archive.tar

파일의 해제:      tar -xf archive.tar

 

(1) 파일의 압축

 

파일 압축 명령의 포맷은 다음과 같다.

 

==================================================

tar -cf 압축된_파일의_이름.tar 압축할_파일_이름1 압축할_파일_이름2...

==================================================

 

즉, 파일을 압축하겠다는 옵션(-cf:  compress file)을 tar 명령어와 함께 작성한 뒤, 압축된 파일명(알집 파일명이라고 생각하면 된다)과 압축시킬 파일을 순차적으로 언급해주면 된다. 위의 Example에서 파일 압축 명령어를 해석하면, foo와 bar라는 이름의 파일을 압축하는데, 압축한 폴더 이름을 archive.tar 라고 지정하라는 말이 된다.

 

빈 파일 몇 개를 만들어 확인해보자. touch 명령어로 file1 file2 file3을 만들고, tar 명령어로 압축을 진행해보자.

 

 

FILE.tar 압축 파일이 생성된 것을 확인할 수 있다. 참고로, 리눅스에서 압축파일(.tar)은 붉은 색 글씨로 표시된다. 단, 압축파일 확장자를 지정해주지 않는다면, 압축은 되긴 하지만 붉은 글씨로 표시되지 않는다.

 

 

 

(2) 압축 파일 리스트 확인

 

FILE과 FILE.tar라는 이름으로 file1, file2, file3, 세 개의 파일을 압축시켰다. 만약, 필자가 이 파일을 익명의 누군가에게 전달했다고 가정해보자. 그리고 전화로, file1, file2, file3을 압축해서 보냈다고 전달한다. 

 

이 파일을 받은 사용자는, 파일을 받은 그 순간에는, 필자가 보낸 압축 파일에 file1, file2, file3이 존재하는지 알 수 없다. 그런다고 함부로 압축을 해제할 수도 없는 것이, 필자가 아닌 다른 누군가가 FILE.tar 압축파일을 모방하여 악성코드를 보냈을 수도 있기 때문이다(사회생활하면서 적을 많이 만들었나보다). 따라서 이 사용자는 압축을 풀기 전에, 필자가 언급한 3개의 파일이 압축 파일 내에 존재하는지 먼저 확인을 하고 싶어한다.

 

이 때 사용하는 tar 명령어 옵션이 -tf다. 이 명령어를 통해, tar로 압축된 파일 리스트를 확인할 수 있다.

 

==========================

tar -tf 압축한_폴더명

==========================

 

tar로 압축한 FILE과 FILE.tar 파일을 tar -tf 명령어로 확인해보면 다음과 같다. 

 

 

FILE과 FILE.txt 두 파일 모두, file1, file2, file3이 압축되어 있다는 것을 확인할 수 있다. 이는 마치 윈도우에서 알집 압축을 풀기 전에, 오른쪽 화면에 나타나는 파일 목록 리스트와 비슷하다.

 

압축 파일 내에 존재하는 파일들에 대해 조금 더 자세한 정보를 얻고 싶다면, 옵션에 v를 추가하면 된다. v는 verbose(장황한)라는 뜻을 가진 단어를 의미하며, 이 옵션을 통해 압축 파일의 소유자, 권한, 크기 등 자세한 정보가 제공된다.

 

 

 

(3) 압축 해제

 

-tf 옵션으로 압축 파일이 이상없음을 확인했다면, 이제 이 압축 파일을 풀어야 한다. 압축을 푸는 명령어 포맷은 다음과 같다.

 

=======================

tar -xf 압축_파일명

=======================

 

touch 명령어로 만든 파일을 모조리 삭제한 뒤, FILE.tar파일의 압축 해제(-xf:  extract file)를 진행하면, 다음과 같은 결과가 나온다.

 

 

압축 해제 전, file1, file2, file3을 삭제했음에도 불구하고, FILE.tar 파일의 압축 해제 후, 삭제된 파일이 복원되었음을 확인할 수 있다.(touch 명령어로 만든 파일들이 복구되었다면, rm 명령어로 압축 파일 2개를 모두 지우도로 하자)

 

 

 

 

3. 파일 압축의 종류

 

리눅스에서 사용 가능한 파일 압축 종류는 알집과 달리 매우 다양하다. tar 외에도 bzip, gzip, zip이라는 명령어가 파일 압축 기능을 제공한다.

 

 

(1) bzip

 

파일 1개만 압축 가능하며, CPU 사용률 및 압축률 높으나 그만큼 압축에 시간이 오래 걸린다. 압축 결과로 .bz파일이 생성된다. 명령어는 다음과 같은 포맷을 가진다.

 

=================================

압축:    bzip2 -zf 압축할_파일명_1개

해제:    bzip2 -df 압축파일 or bunzip2 압축파일

=================================

 

 

* 명령어가 없다는 에러 문구가 뜬다면, yum install bzip2 명령어로 bzip2 패키지를 설치한다.

 

 

(2) gzip

 

압축률 및 속도의 선택이 가능한 압축 명령어다. bzip처럼 1개의 파일만 압축이 가능하며, 명령어 포맷은 다음과 같다.

 

============================

압축:    gzip [OPTION] 압축할_파일명

리스트: gzip -lf 압축파일

해제:    gzip -df 압축파일

============================

 

gzip 압축 사용되는 OPTION에는 숫자가 사용된다. 1~9까지의 숫자가 사용되며, 1은 빠른 압축이 가능하나 압축률이 낮고, 9는 속도는 느리지만 파일을 최대한으로 압축시킬 수 있는 옵션이다. 

 

 

(3) zip

 

bzip과 gzip에 비해 압축률은 낮지만, 리눅스 외의 다른 OS에서도 사용이 가능한 압축 프로그램이다.(알집에서도 사용하는 그 프로그램 맞다. 파일 확장자 명은 .zip) 앞의 두 프로그램과 달리, 여러 개의 파일을 하나의 압축 파일에 지정할 수 있다. zip 명령어의 포맷은 다음과 같다.

 

=============================================

압축:  zip 압축zip파일명 압축할_파일명1 압축할_파일명2...

해제:  unzip 압축zip파일명

=============================================

 

 

명령어가 없다는 에러 문구가 뜬다면 yum install zip 명령어로 zip 패키지를 설치한다.

 

 

 

 

4. tar로 압축된 파일을 bzip 및 gzip으로 한 번 더 압축하기

 

tar 명령어로 생성된 파일은 tar확장자명을 가지는 압축 파일 하나다. 이 파일을 bzip 및 gzip으로 한 번 더 압축한다면, 저장 공간을 조금 더 창출할 수 있을 것이다. 그러나, tar 명령어를 사용하여 압축파일을 만들고, bzip/gzip 명령어를 연달아 사용해서 압축을 한 번 더 진행하는 것은, 과정도 귀찮을 뿐더러 상당한 시간 낭비다. 

 

따라서 tar 명령어는 옵션을 통해, tar로 만들어진 압축 파일을 자동으로 bzip이나 gzip으로 다시 압축해주는 기능을 제공한다. 명령어 포맷은 다음과 같다.

 

============================================

tar -[OPTION]cf 압축파일명 압출할파일명1 압축할파일명2

 

<OPTION>

j:  bzip 압축 진행

J:  xzip 압축 진행

z: gzip 압축 진행

============================================

 

 

touch 명령어로 생성한 file1, file2, file3을 tar 명령어 옵션을 살짝 변경하여 진행한 결과는 위의 사진과 같다. 붉은 글씨로 생성된 압축 파일을 보면, 일반 압축을 진행한 FILE.tar가 10K로 가장 큰 용량을 가지며, FILE_xzip, FILE_bzip2, FILE_gzip 순으로 압축률이 높아지는 것을, 즉 파일의 크기가 줄어드는 것을 확인할 수 있다. 

 

그렇다면, 이렇게 bzip과 gzip으로 압축된 tar 압축파일은 어떻게 해제할 수 있을까? 간단하다. tar -xf 명령어의 옵션 앞에, 압축에 사용한 프로그램에 해당하는 옵션을 다시 명시해주면 된다. 아래와 같이

 

==================================

일반 tar파일 해제:     tar -xf 압축파일명

xzip tar 파일 해제:    tar -Jxf 압축파일명

bzip tar 파일 해제:    tar -jxf 압축파일명

gzip tar 파일 해제:    tar -zxf 압축파일명

================================== 

 

 

 

지금까지, 파일 압축과 관련된 명령어 및 사용 방법에 대해 살펴보았다. 사실, 각각의 명령어가 제공하는 옵션은 이 포스팅에서 소개한 것 외에도 많은 것이 존재하나, 자주 사용하지 않는 것은 거론하지 않고 넘어간다. 마지막으로, 이번 포스팅에서 언급했던 명령어와 옵션을 표로 정리하면서 글을 마무리한다.

 

파일 압축 및 해제 명령어
명령어 옵션 포맷 설명
tar -cf tar -cf 압축파일명 압출할파일명 tar 압축파일 생성
-Jcf tar -Jcf 압축파일명 압축할파일명 xzip 압축파일 생성
-jcf tar -jcf 압축파일명 압축할파일명 bzip 압축파일 생성
-zcf tar -zcf 압축파일명 압축할파일명 gzip 압축파일 생성
     
-tf tar -tf 압축파일명 압축파일 list 조회
     
-xf tar -xf 압축파일명 tar 압축파일 해제
-Jxf tar -Jxf 압축파일명 xzip 압축파일 해제
-jxf tar -jxf 압축파일명 bzip 압축파일 해제
-zxf tar -zxf 압축파일명 gzip 압축파일 해제
bzip2 -zf bzip2 -zf 압축할파일명 1개파일 압축(.bz)
-df bzip2 -df 압축파일명 bzip 압축파일의 해제
bunzip2   bunzip2 압축파일명
gzip -cf gzip -cf 압축할파일명 1개 파일 압축(.gz)
-lf gzip -lf 압축파일명 gz 파일 list 조회
-df gzip -df 압축파일명 gzip 압축파일의 해제
gunzip   gunzip 압축파일명
zip   zip 압축파일명.zip 압축할파일명 파일 압축(.zip)
unzip   unzip 압축파일명 zip 파일 압축해제

 

FIN.

반응형

댓글