tar 압축·해제와 제외 경로 지정하기

목차

파일을 묶고 풀 때 자주 쓰는 tar 옵션을 정리했습니다. 아카이브를 생성하는 -c와 해제하는 -x를 구분하고, 실제로 풀기 전에 -t로 내부 경로를 확인하는 순서입니다.

gzip 아카이브 생성

-f 바로 뒤에는 생성할 아카이브 이름을 적습니다. -z는 gzip 압축, -v는 처리 파일 출력입니다. 여러 파일이나 디렉터리를 연이어 지정할 수 있습니다.

TERMINAL / CONFIG
tar -czvf hello.tar.gz hello.c hello
tar -tzvf hello.tar.gz

특정 디렉터리를 제외하려면 제외 패턴을 압축 대상보다 앞에 둡니다. 상대 경로의 기준도 일치시킵니다. 다음은 /home 아래 lieper 디렉터리를 묶되 source는 제외합니다.

TERMINAL / CONFIG
tar -czvf /tmp/lieper.tar.gz --exclude='lieper/source' -C /home lieper

빈 경로에 먼저 해제

기존 파일을 덮어쓰지 않도록 별도 디렉터리를 만들고 -C로 해제 위치를 정합니다. 목록에 예상하지 않은 경로가 있으면 해제하지 않고 출처를 확인합니다.

TERMINAL / CONFIG
mkdir -p /home/lieper/restore-check
tar -tzvf /tmp/lieper.tar.gz
tar -xzvf /tmp/lieper.tar.gz -C /home/lieper/restore-check

압축되지 않은 .tar는 -z 없이 -tvf 또는 -xvf를 사용합니다. .tar.xz는 -J, .tar.bz2는 -j로 압축 형식을 지정할 수 있습니다. 확장자가 아니라 실제 파일 형식과 도구 지원 여부를 확인합니다.

xz 압축률과 CPU 사용

텍스트 로그처럼 압축 효과가 큰 데이터에는 xz를 사용할 수 있습니다. -9는 높은 압축률을 선택하고 -T0는 사용 가능한 스레드를 사용하므로 운영 서비스와 자원 경합이 생길 수 있습니다.

TERMINAL / CONFIG
tar -I 'xz -9 -T2' -cvf logs.tar.xz logs
tar -tJvf logs.tar.xz
tar -xJvf logs.tar.xz -C /home/lieper/restore-check

압축 후 원본을 지우기 전에 목록 조회, 시험 해제, 필요한 파일의 체크섬 비교까지 진행합니다. tar 파일을 만들었다는 사실과 복구 가능한 백업을 확보했다는 사실은 구분합니다.

리눅스 › 기본명령어
기본명령어 목록