2009. 9. 15. 14:57
24. tar 압축파일에 관해서
2009. 9. 15. 14:57 in 내가쓰는리눅스 강좌
자 이젠 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
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
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
./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
'내가쓰는리눅스 강좌' 카테고리의 다른 글
리눅스 dmesg 를 통한 eth 포트의 down / up 구분 (0) | 2010.03.30 |
---|---|
28. CentOS 에서 yum 수행시 repo 사이트 추가 (0) | 2009.12.23 |
27. CentOS 에서의 한글 설정 (3) | 2009.11.24 |
26. ethtool 사용하기 spped 와 duplex 변경 (6) | 2009.11.23 |
25. sort 명령어 (2) | 2009.11.05 |
23. man 페이지 내용을 파일로 보자. (2) | 2009.04.23 |
22. lame : mp3 인코더 (0) | 2009.01.30 |
21. 부팅시 실행레벨설정 ( X-window 로 또는 터미널으로) (2) | 2009.01.21 |
20 . SSH 터미널의 프롬프트에서 절대경로 표시법 (0) | 2009.01.20 |
19. 콘솔 모드에서의 해상도 조절 (1) | 2008.11.03 |