운영체제/Linux

tar archive에 대해서 (tar 압축, tar압축 해제)

ahgle 2022. 11. 8. 14:50
728x90
반응형

tar, tar.gz, tar.bz2의 의미, 차이

 

tar

리눅스 환경에서 많이 사용되는 명령어이다. 압축 파일이 아닌 여러 개의 파일을 하나로 묶는 개념이다.

 

아카이브(Archive)

여러 파일과 디렉터리를 담고 있는 하나의 파일.

이동, 공유, 저장이 간편해지고, 모든 파일에 아카이브 파일에 들어간 후에 관리 및 추적이 쉬워진다.

tar 자체는 압축이 아닌, 파일들을 하나의 아카이브 로 묶은 파일이다.

아카이브로 묶기 전, 개별 파일들의 속성과 심볼릭 링크, 디렉터리 구조 등을 그대로 가져갈 수 있는 특징이 있다.

 

tar.gz (gzip)

tar.gz는 파일이나 폴더들을 아카이브 파일(tar)로 묶은 후, gzip으로 압축한 파일이다.

 

tar.bz2 (bzip2)

tar.bz2는 파일이나 폴더들을 아카이브 파일(tar)로 묶은 후 bzip2로 압축한 파일이다.

 

압축 및 압축 해제

tar 압축 옵션들은 의미를 알고 쓰면 좋으나,, 대부분 아래의 명령어를 많이 활용하기 때문에, 적어도 아래 옵션들 만큼은 통째로 외우도록 하자.

 

tar 압축

 

ex) 특정 파일을 tar 로 묶고 싶을 때

#tar -cvf name.tar [file1] [file2]

[root@test tartest]# ll
total 0
-rw-r--r-- 1 root root 0 Nov  8 14:45 1.txt
-rw-r--r-- 1 root root 0 Nov  8 14:45 2.txt
-rw-r--r-- 1 root root 0 Nov  8 14:45 3.txt
-rw-r--r-- 1 root root 0 Nov  8 14:45 4.txt
-rw-r--r-- 1 root root 0 Nov  8 14:45 5.txt
-rw-r--r-- 1 root root 0 Nov  8 14:45 6.txt
-rw-r--r-- 1 root root 0 Nov  8 14:45 7.txt
-rw-r--r-- 1 root root 0 Nov  8 14:45 8.txt
-rw-r--r-- 1 root root 0 Nov  8 14:45 9.txt

[root@test tartest]# tar -cvf tartest.tar 1.txt 2.txt 3.txt // 1.txt, 2.txt, 3.txt를 tartest.tar라는 이름으로 아카이빙함(묶음)
1.txt
2.txt
3.txt

[root@test tartest]# ll  // 재 확인 시, tarteset.tar 이름을 묶은 tar파일 확인 가능
total 12
-rw-r--r-- 1 root root     0 Nov  8 14:45 1.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 2.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 3.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 4.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 5.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 6.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 7.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 8.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 9.txt
-rw-r--r-- 1 root root 10240 Nov  8 14:45 tartest.tar

 

ex2) 특정 파일 및 디렉터리를 tar로 묶을 때

tar -cvf name.tar [file1] .. [directory1]

[root@test tartest]# mkdir testdir // 테스트용 디렉토리 생성
[root@test tartest]# ll
total 16
-rw-r--r-- 1 root root     0 Nov  8 14:45 1.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 2.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 3.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 4.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 5.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 6.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 7.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 8.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 9.txt
-rw-r--r-- 1 root root 10240 Nov  8 14:45 tartest.tar
drwxr-xr-x 2 root root  4096 Nov  8 14:48 testdir
[root@test tartest]# tar -cvf tartest2.tar 1.txt testdir // tartest2.tar라는 이름으로 파일과 디렉터리를 아카이빙함(묶음)
1.txt
testdir/
[root@test tartest]# ll // test2.tar라는 이름의 tar파일이 생성된 것을 볼 수 있다.
total 28
-rw-r--r-- 1 root root     0 Nov  8 14:45 1.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 2.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 3.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 4.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 5.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 6.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 7.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 8.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 9.txt
-rw-r--r-- 1 root root 10240 Nov  8 14:49 tartest2.tar
-rw-r--r-- 1 root root 10240 Nov  8 14:45 tartest.tar
drwxr-xr-x 2 root root  4096 Nov  8 14:48 testdir

 

ex3) 현재 경로 내 모든 파일을 한 번에 묶고자 할 때

tar -cvf name.tar *

[root@test tartest]# tar -cvf tartest3.tar *
1.txt
2.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt
tartest2.tar
tartest.tar
testdir/
[root@test tartest]# ll
total 60
-rw-r--r-- 1 root root     0 Nov  8 14:45 1.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 2.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 3.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 4.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 5.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 6.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 7.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 8.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 9.txt
-rw-r--r-- 1 root root 10240 Nov  8 14:49 tartest2.tar
-rw-r--r-- 1 root root 30720 Nov  8 14:52 tartest3.tar
-rw-r--r-- 1 root root 10240 Nov  8 14:45 tartest.tar
drwxr-xr-x 2 root root  4096 Nov  8 14:48 testdir

 

tar.gz 압축

 

tar 압축과 동일하며 확장자만 tar.gz로 주도록 한다.

[root@test tartest]# tar -cvf tarttest.tar.gz 1.txt 2.txt 3.txt
1.txt
2.txt
3.txt

[root@test tartest]# ll
total 72
-rw-r--r-- 1 root root     0 Nov  8 14:45 1.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 2.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 3.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 4.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 5.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 6.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 7.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 8.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 9.txt
-rw-r--r-- 1 root root 10240 Nov  8 14:49 tartest2.tar
-rw-r--r-- 1 root root 30720 Nov  8 14:52 tartest3.tar
-rw-r--r-- 1 root root 10240 Nov  8 14:45 tartest.tar
-rw-r--r-- 1 root root 10240 Nov  8 14:55 tartest.tar.gz

 

tar 압축 해제

 

[tar 내용 확인]

tar -tvf name.tar

[root@test testdir]# ll
total 12
-rw-r--r-- 1 root root 10240 Nov  8 14:45 tartest.tar

[root@test testdir]# tar -tvf tartest.tar 
-rw-r--r-- root/root         0 2022-11-08 14:45 1.txt
-rw-r--r-- root/root         0 2022-11-08 14:45 2.txt
-rw-r--r-- root/root         0 2022-11-08 14:45 3.txt

 

[현재 디렉터리에 tar 풀기]

tar -xvf name.tar

[root@test tartest]# cd testdir/
[root@test testdir]# ll
total 12
-rw-r--r-- 1 root root 10240 Nov  8 14:45 tartest.tar
[root@test testdir]# tar xvf tartest.tar 
1.txt
2.txt
3.txt
[root@test testdir]# ll
total 12
-rw-r--r-- 1 root root     0 Nov  8 14:45 1.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 2.txt
-rw-r--r-- 1 root root     0 Nov  8 14:45 3.txt
-rw-r--r-- 1 root root 10240 Nov  8 14:45 tartest.tar

[특정 디렉터리에 tar 풀기]

tar -xvf name.tar -C [path]

[root@test testdir]# ll
total 16
-rw-r--r-- 1 root root 10240 Nov  8 14:45 tartest.tar
drwxr-xr-x 2 root root  4096 Nov  8 15:01 testdir
[root@techcs7514 testdir]# tar -xvf tartest.tar -C testdir/
1.txt
2.txt
3.txt
[root@test testdir]# ll
total 16
-rw-r--r-- 1 root root 10240 Nov  8 14:45 tartest.tar
drwxr-xr-x 2 root root  4096 Nov  8 15:01 testdir
[root@test testdir]# cd testdir/   
[root@test testdir]# ll    //testdir 디렉터리에 tar압축이 풀려있는 것을 볼 수 있다.
total 0
-rw-r--r-- 1 root root 0 Nov  8 14:45 1.txt
-rw-r--r-- 1 root root 0 Nov  8 14:45 2.txt
-rw-r--r-- 1 root root 0 Nov  8 14:45 3.txt

 

나머지 tar.gz, tar.bz2 는 결국 tar 압축해제와 동일하기 때문에 작성은 하지 않았다.

728x90