tar란 무엇인가?
tar는 'Tape Archive'의 약자로, 본래 자기 테이프에 데이터를 백업하기 위해 만들어졌습니다. 지금은 여러 파일과 디렉토리를 하나의 파일로 묶어 관리하거나 전송하기 쉽게 만드는 리눅스 표준 도구로 사용됩니다. tar 자체는 파일을 묶기만 하고, 압축은 별도 옵션(-z, -j, -J)을 통해 지정합니다.
핵심 작동 방식 (모드)
tar는 한 번에 하나의 주요 모드(생성, 추출, 목록)로 작동합니다.
- -c (Create): 새로운 아카이브 파일을 생성합니다.
- -x (Extract): 아카이브 파일에서 파일들을 추출합니다.
- -t (List): 아카이브 파일의 내용물(목록)을 압축 해제 없이 확인합니다.
- -f (File): 작업 대상 아카이브 '파일'을 지정합니다. 거의 모든 작업에 필수입니다.
주요 옵션 (Shell)
tar는 옵션들을 조합하여 사용합니다. 가장 중요한 것은 `-c`, `-x`, `-t` 중 하나를 선택하는 것입니다.
1. 작동 모드 (하나 선택)
2. 파일 및 압축 지정
3. 대상 및 부가 기능
생성된 명령어:
명령어를 조합해 보세요.
설명:
`tar` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 시나리오 예시 (Shell)
가장 자주 사용되는 조합 예시입니다. (옵션 앞의 `-`는 생략 가능하지만 명시하는 것이 좋습니다.)
gzip으로 압축 생성 (.tar.gz)
tar -cvzf backup.tar.gz /home/user/data
c(생성), v(과정), z(gzip), f(파일) + [결과파일] + [대상]
gzip 압축 풀기 (.tar.gz)
tar -xvzf backup.tar.gz
x(추출), v(과정), z(gzip), f(파일) + [대상파일]
압축 파일 내용 목록 보기 (.tar.gz)
tar -tvf backup.tar.gz
t(목록), v(과정), f(파일) (최신 tar는 -z 자동 감지)
지정된 디렉토리에 압축 풀기
tar -xvzf backup.tar.gz -C /opt/restore
-C 옵션으로 경로를 지정합니다.
bzip2로 압축 생성 (.tar.bz2)
tar -cvjf archive.tar.bz2 ./docs
z 대신 j(bzip2) 옵션을 사용합니다.
bzip2 압축 풀기 (.tar.bz2)
tar -xvjf archive.tar.bz2
특정 파일/디렉토리 제외하고 압축
tar -cvzf app.tar.gz ./app --exclude="*.log" --exclude="node_modules"
--exclude 옵션을 사용합니다. (여러 번 사용 가능)
설치
tar는 거의 모든 리눅스 배포판(및 macOS)에 기본적으로 설치되어 있습니다. (보통 GNU tar). 만약 어떤 이유로든 설치가 필요하다면 'tar' 패키지 이름으로 설치할 수 있습니다.
기본 설치됨
별도 설치가 거의 필요하지 않습니다. `tar --version`을 입력하여 버전을 확인해 보세요.
Debian/Ubuntu (필요시)
sudo apt update && sudo apt install -y tar
RHEL/CentOS/Fedora (필요시)
sudo dnf install -y tar
팁 & 주의사항
유용한 팁
- 하이픈(-) 생략: 오래된 관례로 `tar cvf ...`처럼 첫 옵션 그룹의 하이픈을 생략할 수 있습니다. (예: `tar cvf` = `tar -cvf`) 하지만 명확성을 위해 `-`를 붙이는 것을 권장합니다.
- 압축 자동 감지: 최신 `tar`는 추출(-x) 시 `-z`, `-j`, `-J` 없이도 파일 확장자를 보고 압축을 자동 감지합니다. (예: `tar -xf archive.tar.gz` 만 입력해도 됩니다.)
- 권한 보존 (-p): 시스템 백업 후 복원 시 `-p` 옵션을 사용하여 파일 권한과 소유권을 그대로 보존하는 것이 중요합니다.
- 경로 문제 (-C): 파일을 현재 위치가 아닌 다른 곳에 풀고 싶다면 `-C /경로` 옵션을 사용하는 것이 파일을 이동시키는 것보다 훨씬 효율적입니다.
- 절대 경로 주의: 생성(-c) 시 `/home/user` 같은 절대 경로로 파일을 묶으면, 추출(-x) 시에도 해당 절대 경로에 파일이 풀리게 됩니다. (최신 tar는 보안상 앞의 `/`를 제거하기도 함) 가급적 `cd /home && tar -cvf user.tar ./user` 처럼 상대 경로로 묶는 것이 안전합니다.