Ⅰ. Archive
- 여러 파일을 묶는 작업
- BSD 계열 : tar / SysV 계열 : cpio
1. 아카이브 생성
$ tar cf XXX.tar file1 file2 ...
$ tar c file1 file2 ... > XXX.tar
jsg@jsg-ubuntu:~$ tar cf archive.tar testdir
jsg@jsg-ubuntu:~$ ls -l archive.tar
-rw-rw-r-- 1 jsg jsg 10240 Dec 10 23:32 archive.tar
2. 아카이브 리스트 보기
jsg@jsg-ubuntu:~$ tar -tf archive.tar
testdir/
testdir/hello.txt
testdir/test.txt
3. 아카이브 추출
$ tar xf XXX.tar -C directory
-C
옵션이 없으면 현재 디렉토리에
jsg@jsg-ubuntu:~$ tar -xf archive.tar -C testdir2
jsg@jsg-ubuntu:~$ ls -R testdir2
testdir2:
testdir
testdir2/testdir:
hello.txt test.txt
Ⅱ. Compress
1. 종류
- gzip(.gz), bzip2(.bz2) : 옛날 방식으로 현재에서는 잘 쓰이지 않음
- xz(.xz) : 압축률이 매우 높으나 시간이 오래 걸림
- zstd(.zst) : 성능도 준수하고 시간도 빠름
- 옵션(
-c
: stdout으로 보냄, -d
: 압축 풀기, -T숫자
: 멀티스레딩)은 같아 사용법이 비슷함.
2. 압축
$ tar c files | gzip -c > compress.tar.gz
jsg@jsg-ubuntu:~$ tar c testdir | gzip -c > compress.tar.gz
jsg@jsg-ubuntu:~$ ls -l compress.tar.gz
-rw-rw-r-- 1 jsg jsg 196 Dec 11 00:01 compress.tar.gz
3. 압축 해제
$ gzip -cd compress.tar.gz | tar x
jsg@jsg-ubuntu:~$ rm -rf testdir
jsg@jsg-ubuntu:~$ gzip -cd compress.tar.gz | tar x
jsg@jsg-ubuntu:~$ ls testdir
hello.txt test.txt
Ⅲ. 아카이브 + 압축
- tar의 옵션을 이용해 아카이브와 압축을 한번에 할 수 있음
- 하지만 멀티스레드 옵션을 주려면 파이프를 이용해야 함
옵션 | 내용 |
---|
z | 아카이브를 gzip으로 압축/해제 |
j | 아카이브를 bzip2로 압축/해제 |
J | 아카이브를 xz로 압축/해제 |
--zstd | 아카이브를 zstd로 압축/해제 |
a | 확장자를 보고 자동으로 판단 |
jsg@jsg-ubuntu:~$ tar cfa compress.tar.zst testdir
jsg@jsg-ubuntu:~$ ls -l compress.tar.zst
-rw-rw-r-- 1 jsg jsg 10240 Dec 11 00:35 compress.tar.zst
jsg@jsg-ubuntu:~$ rm -rf testdir
jsg@jsg-ubuntu:~$ tar xfa compress.tar.zst
jsg@jsg-ubuntu:~$ ls testdir
hello.txt test.txt