2009. 9. 15. 14:57

24. tar 압축파일에 관해서


자 이젠 tar 파일을 보게 되는 순간 당황해하지 말고
단순히 (?) 압축파일이라고 생각하자.  윈도우에서 흔히 보던 zip 이라는 압축형식이 tar 로 달려졋을 뿐이다.

우선 tar 압축파일은 형식이 여러종류이며 그 때마다 푸는 방법도 달라져야 한다.
파일의 확장자를 우선 잘 보도록 하자

tar / tar.Z / tar.gz  등등 여러 파일이 있다.

구분을 해보면 tar 란 단순히 여러파일을 하나의 파일로 합치기만 했을 뿐이고,
그 외의 것들은 합친 하나의 tar 파일을  압축을 해놓은 것이다.
그런 파일들의 경우에는 우선 압축해제를 하고 나서 tar 를 풀어서 원래의 원본파일 여러개로 되돌리는 순서가 필요하다 .

예를 들어 tar 파일의 내용을 압축을 풀지 않고 보려면
tar -tvf TEST.tar

압축을 해제 하지 않고도 미리 tar 안의 어떤 파일들이 압축되어 있는지 확인이 가능하다.

첫번째로 tar 압축  그다음에 묶고 나서 풀어보자
만약 a.txt , b.txt, c.txt 라는 파일이 있다면
ls
a.txt  b.txt  c.txt
[bjh@localhost test2]$ tar cvf TEST.tar ./*.txt
./a.txt
./b.txt
./c.txt
[bjh@localhost test2]$ ls -ltr
합계 40
-rw-r--r-- 1 bjh users     3 12월  3 10:20 a.txt
-rw-r--r-- 1 bjh users     3 12월  3 10:21 b.txt
-rw-r--r-- 1 bjh users     4 12월  3 10:21 c.txt
-rw-r--r-- 1 bjh users 10240 12월  3 10:21 TEST.tar
[bjh@localhost test2]$ tar cvfz TEST.tar.gz ./*.txt
./a.txt
./b.txt
./c.txt
[bjh@localhost test2]$ ls -ltr
합계 48
-rw-r--r-- 1 bjh users     3 12월  3 10:20 a.txt
-rw-r--r-- 1 bjh users     3 12월  3 10:21 b.txt
-rw-r--r-- 1 bjh users     4 12월  3 10:21 c.txt
-rw-r--r-- 1 bjh users 10240 12월  3 10:21 TEST.tar
-rw-r--r-- 1 bjh users   161 12월  3 10:21 TEST.tar.gz


세개의 텍스트파일이 하나의 tar 파일로 묶어진 것을 볼 수 있다. 
( 압축이란 말은 잘 어울리지 않는다 ! 왜냐면 세개 파일의 크기를 더한 것이 tar 파일의 크기가 되기 때문에
실제로 압축이 일어난 것은 아니다. 그래서 묶는다란 표현을 난 더 좋아한다 )

그럼 압축을 해보도록 하자
압축하는 방식은 여러가지를 선택할 수 있다.
위에서 내렸던 명령어 중에 tar -cvfz  라는 명령어는 tar 로 우선 묶고 나서 gzip 으로 압축을 진행하는 것이다.

따로 따로 명령어를 두번 내려도 된다!
tar cvf TEST.tar ./*.txt
gzip TEST.tar

[root@localhost test4]# ls -l
total 0
-rw-r--r-- 1 root root 0 Dec 18 12:33 1.txt
-rw-r--r-- 1 root root 0 Dec 18 12:33 2.txt
-rw-r--r-- 1 root root 0 Dec 18 12:33 3.txt
[root@localhost test4]#
[root@localhost test4]# tar cvf TEST.tar ./*.txt
./1.txt
./2.txt
./3.txt
[root@localhost test4]#
[root@localhost test4]# ls -l
total 12
-rw-r--r-- 1 root root     0 Dec 18 12:33 1.txt
-rw-r--r-- 1 root root     0 Dec 18 12:33 2.txt
-rw-r--r-- 1 root root     0 Dec 18 12:33 3.txt
-rw-r--r-- 1 root root 10240 Dec 18 12:33 TEST.tar
[root@localhost test4]#
[root@localhost test4]# gzip TEST.tar
[root@localhost test4]#
[root@localhost test4]# ls -l
total 4
-rw-r--r-- 1 root root   0 Dec 18 12:33 1.txt
-rw-r--r-- 1 root root   0 Dec 18 12:33 2.txt
-rw-r--r-- 1 root root   0 Dec 18 12:33 3.txt
-rw-r--r-- 1 root root 142 Dec 18 12:33 TEST.tar.gz

위와 같이 tar 로 묶고 나서 gzip 으로 압축을 한 것을 볼 수 있다.
이렇게 압축된 것을 풀기 위해서는
tar xvf TEST.tar.gz 라고 입력한다.

[root@localhost test4]# tar -xvf TEST.tar.gz
./1.txt
./2.txt
./3.txt
[root@localhost test4]#
[root@localhost test4]# ls -l
total 4
-rw-r--r-- 1 root root   0 Dec 18 12:33 1.txt
-rw-r--r-- 1 root root   0 Dec 18 12:33 2.txt
-rw-r--r-- 1 root root   0 Dec 18 12:33 3.txt
-rw-r--r-- 1 root root 142 Dec 18 12:33 TEST.tar.gz



위에서 tar cvfz 라는 옵션을 사용해서 tar로 묶고 다시 gunzip 으로 압축을 한것이 TEST.tar.gz 파일이다.

파일 크기를 비교해보면 tar.gz 파일이 훨씬 작다는 것을 알 수 있다.


### 이미 존재하는 tar 파일에 추가로 파일을 넣기 
tar uvf test.tar ./A

test.tar 라는 파일에 추가로 A 라는 파일을 넣는 옵션은 -u  즉 update 옵션이다.



※ 유닉스에서 사용되는 tar.Z 파일 형식

아래는 유닉스에서 사용되는 압축으로 확장자 명은 tar.Z 파일이다.
이것은 tar 로 묶은뒤에 compress 라는 유틸을 사용해서 압축을 한 파일이다.
이것을 푸는 것은 유닉스에서 uncompress 라는 명령어로 풀수있다.

compress TEST.tar.Z TEST.tar