Quick Reference
# 디렉터리를 tar.gz로 묶기
tar -czf app-logs.tar.gz logs/
# 압축 해제
tar -xzf app-logs.tar.gz
# 목록만 확인
tar -tzf app-logs.tar.gz
# 권한·소유자까지 포함해 상세 목록 확인
tar -tvzf app-logs.tar.gz
# 대상 디렉터리에 풀기
mkdir -p restore
tar -xzf app-logs.tar.gz -C restore| 옵션 | 의미 |
|---|---|
-c | archive 생성 |
-x | archive 추출 |
-t | 목록 확인 |
-z | gzip 압축/해제 |
-f | 파일 이름 지정 |
-C | 추출 위치 변경 |
압축 흐름
tar는 여러 파일을 하나의 archive로 묶고, gzip은 그 archive를 압축합니다. 그래서 .tar는 묶음이고, .tar.gz 또는 .tgz는 묶은 뒤 gzip으로 압축한 파일입니다. 디렉터리 전체를 백업하거나 서버 간 전달할 때 가장 흔한 형태입니다.
tar -czf backup.tar.gz app/
tar -tzf backup.tar.gz해제하기 전에는 tar -tzf로 archive 안의 최상위 경로를 확인하는 편이 안전합니다. archive가 현재 디렉터리에 바로 많은 파일을 풀도록 만들어졌는지, app/ 같은 상위 디렉터리 아래에 정리되어 있는지 먼저 확인할 수 있습니다.
신뢰하지 않는 archive는 목록만 보고 현재 작업 경로에 바로 풀지 않습니다. ../·absolute path처럼 경로 밖을 가리키는 이름, symbolic link·hard link, 예상하지 못한 owner와 permission은 추출 결과와 이후 파일 접근에 영향을 줄 수 있습니다. 검증용 빈 디렉터리에 권한을 낮춘 사용자로 먼저 풀고, root로 풀 때는 owner와 permission 복원을 막는 옵션을 명시합니다.
-C는 추출 위치를 명확히 한다
현재 디렉터리에 바로 풀면 기존 파일과 섞일 수 있습니다. 복구나 검증 목적이라면 빈 디렉터리를 만들고 -C로 그 위치에 푸는 흐름이 안전합니다.
mkdir -p /tmp/restore-check
tar -xzf backup.tar.gz -C /tmp/restore-check
ls -la /tmp/restore-checkmkdir -p /tmp/untrusted-archive
tar -tvzf incoming.tar.gz | less
tar -xzf incoming.tar.gz -C /tmp/untrusted-archive \
--no-same-owner --no-same-permissions--no-same-owner와 --no-same-permissions은 GNU tar 기준으로 archive의 owner·mode를 그대로 복원하지 않게 합니다. 권한과 owner를 보존해야 하는 신뢰된 백업 복구라면 이 옵션을 빼는 대신, 대상 시스템의 사용자·그룹·umask와 overwrite 정책을 먼저 확인합니다.
체크포인트
| 상황 | 명령 |
|---|---|
| 디렉터리 압축 | tar -czf name.tar.gz dir/ |
| 압축 해제 | tar -xzf name.tar.gz |
| 목록 확인 | tar -tzf name.tar.gz |
| 다른 위치에 풀기 | tar -xzf name.tar.gz -C target/ |
| 압축 없이 묶기 | tar -cf name.tar dir/ |
| gzip만 해제 | gunzip file.gz |
주의할 점
archive를 해제하기 전에는 목록과 owner·permission을 먼저 확인하십시오. 신뢰하지 않는 archive는 빈 디렉터리에 풀고, 기존 파일을 덮어쓰거나 link를 따라 예상 밖 경로에 영향을 주는 상황을 피해야 합니다.
tar -tzf backup.tar.gz | head
mkdir -p restore
tar -xzf backup.tar.gz -C restore참고 링크
2 sources