tar 명령어는 파일과 폴더를 하나의 파일로 묶어주는 유틸리티(Archiving utility) 로 아카이브시 압축하지는 않습니다.

그래서 tar 묶은 후에 외부 압축 프로그램(gzip, bzip, xz 등)으로 압축하는 방식을 사용하며 tar 에서는 이런 기능을 제공합니다.

tar 는 Tape ARchiving 의 약자로 그 시대에는 테이프를 백업 장치로 사용했다고 합니다. 이런 이유로 파일을 대상으로 아카이빙하는 옵션인 -f 를 생략하면 TAPE 장치가 없어서 오류가 발생합니다.


Archive

단순 아카이빙

아카이브하는 operation 인 -c  를 사용하면 파일이나 폴더를 묶을 수 있습니다.

 tar -cvf target.tar file1 file2 dir1 dir2
BASH


아카이빙 후 gzip 으로 압축

gzip 과 연결하는 옵션인 -z 를 사용하면 아카이빙 파일을 압축합니다. -z 옵션 사용시 압축 여부를 알수 있도록 확장자에 .gz 를 붙이는 게 관례입니다.

 tar -cvzf target.tar.gz file1 file2 dir1 dir2
BASH


아카이빙 후 bzip2 로 압축

bgzip2 는 gzip 보다 압축률이 좋은 프로그램으로 -j 옵션을 사용하면 됩니다. -j 옵션 사용시 압축 여부를 알수 있도록 확장자에 .bz2 를 붙이는 게 관례입니다.

 tar -cvjf target.tar.bz2 file1 file2 dir1 dir2
BASH

아카이빙 후 xz로 압축

xz 는 가장 최근에 나온 압축 프로그램으로 매우 좋은 압축률을 보여 주며 -J 옵션으로 tar 아카이빙을 압축할 수 있습니다. 확장자는 .xz 를 붙입니다.

 tar -cvJf target.tar.xz file1 file2 dir1 dir2
BASH


풀기

tar 파일 해제

해제시에는 해제 operation 인 -x 를 사용하면 됩니다. 다음은 현재 폴더에 아카이빙 파일을 풉니다.

tar -xvf target.tar
BASH

압축된 tar 파일 해제

압축 방식에 따라 -j(bzip2), -J(xz), -z(gzip) 옵션을 추가하면 됩니다.


gzip2

gzip

tar -zxvf target.tar.gz
BASH


bzip2 

bzip2 해제

tar -jxvf target.tar.gzip2
BASH


xz

xz

tar -Jxvf target.tar.xz
BASH


해제 디렉터리 지정

tar 는 기본적으로 현재 디렉터리에 해제하므로 다시 적절한 디렉터리로 옮겨야 하는 문제가 있습니다. 해제 디렉터리를 지정하는 -C 옵션을 사용하면 해당 폴더에 압축을 풀수 있습니다.

xz

tar -Jxvf target.tar.xz -C /opt
BASH

옵션

tar 의 동작은 operation 과 option 으로 나뉘어져 있습니다.

operation

operation

의미

-c, --create신규 아카이브 생성
-t, --list아카이브 내용 보기
-x, --extract아카이브 풀기
-r, --append기존 tar 아카이브 마지막에 추가
-u, --update수정 파일만 기존 tar 아카이브에 갱신


option

operation

의미

-f, --file=ARCHIVE파일을 대상으로 아카이빙합니다. 생략시에 TAPE 를 사용합니다.
-v, --verbose처리 과정을 상세히 표시합니다.
-j, --bzip2압축/해제시 bzip2 를 사용합니다.
-J, --xz압축/해제시 xz 를 사용합니다.
-z, --gzip, --gunzip, --ungzip압축/해제시 gzip 을 사용합니다.
-C, --directory해제시 지정한 경로에 풉니다.


같이 보기

Ref