--- title: tar — 파일 묶기와 풀기 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 여러 파일을 하나의 아카이브로 묶거나 풀고 gzip으로 압축까지 한 번에 처리하는 명령어. tags: 프로그램, 파일 및 디스크 관리, tar --- **💬 "tar 명령어"** tar는 여러 파일을 **하나의 파일로 묶는** 도구이고, `-z`를 붙이면 gzip 압축까지 함께 합니다. 리눅스 백업·배포의 표준입니다. 옵션 순서는 `tar -czvf`처럼 붙여 쓰는 경우가 많고, 풀 때는 `-x`로 바꿉니다. - **개념**: c는 묶기(create), x는 풀기(extract), t는 목록(list)입니다. 이 세 글자가 핵심입니다. - **왼쪽 글자**: 동작: `c`(만들기) / `x`(풀기) / `t`(목록 확인) - **오른쪽 글자**: 옵션: `z`(gzip), `v`(진행 출력), `f`(파일 이름 지정, 보통 맨 뒤) - **경로**: 풀 때는 `-C`로 대상 디렉터리를 지정하면 안전합니다. - **결과물**: 확장자는 관례적으로 .tar.gz 또는 .tgz를 씁니다. ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | -c | 새 아카이브를 만듭니다 | | -x | 아카이브를 풉니다 | | -t | 풀지 않고 내용 목록만 봅니다 | | -z | gzip으로 압축하거나 해제합니다 | | -C | 지정한 디렉터리에서 작업합니다 | ## 필수 명령어 조합 3가지 - `tar -czvf backup.tgz /var/www/html` — 웹 루트를 통째로 압축 백업 - `tar -tzvf backup.tgz | head` — 풀기 전에 내용과 경로를 먼저 확인 - `tar -xzvf release.tgz -C /opt/app` — 지정한 디렉터리에 안전하게 풀기 **💬 "야간 배치와 겹치지 않게 쓰는 팁 알려줘"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 1단계 · 무엇을 담을지 정하고 묶기 백업 대상을 정한 뒤 한 파일로 묶습니다. ``` tar -czvf /backup/www-20261018.tgz /var/www/html ``` ### 2단계 · 풀기 전에 목록 확인 엉뚱한 경로에 풀리는 사고를 막기 위해 내용을 먼저 봅니다. ``` tar -tzvf /backup/www-20261018.tgz | head -20 ``` ### 3단계 · 대상 디렉터리에 풀기 운영 중인 디렉터리에 바로 덮어쓰지 말고 별도 경로에 풀어 확인합니다. ``` tar -xzvf /backup/www-20261018.tgz -C /tmp/restore ``` ## 실무에서는 이렇게 씁니다 ### 1. 릴리스 파일 배포 **상황** — 빌드 산출물이 담긴 release.tgz를 운영 서버 /opt/app 에 풀어야 합니다. ``` tar -xzvf /tmp/release.tgz -C /opt/app ``` **결과** — 압축을 푸는 파일 목록이 stderr로 출력되며 /opt/app 아래에 배치됩니다. **포인트** — 운영 디렉터리는 -C로 명시하고, 가능하면 이전 버전을 .bak으로 옮긴 뒤 푸는 것이 안전합니다. ### 2. 설정만 부분 백업 **상황** — nginx/php 설정만 따로 백업해 두고 싶습니다. ``` tar -czvf /backup/conf-20261018.tgz /etc/nginx /etc/php ``` **결과** — 설정 파일들이 하나의 tgz로 묶여 보관됩니다. 절대 경로가 그대로 담기므로 복구 시 위치가 유지됩니다. **포인트** — 절대 경로로 묶으면 복구가 단순해집니다. 상대 경로 묶기는 풀 때 기준 경로를 꼭 확인합니다. ## 주의할 점 - 풀 때 tar 폭탄(압축 해제 시 경로 탈출) 위험이 있습니다. 신뢰할 수 없는 파일은 -t로 목록을 먼저 확인합니다. - -C 없이 절대 경로로 묶은 파일은 어디서 풀어도 원래 위치에 덮어씁니다. - 운영 중인 디렉터리에 바로 풀지 말고 임시 경로에서 검증합니다. - SQLite/DB 파일처럼 쓰기 중인 파일은 일관성이 깨질 수 있어 별도 방법을 씁니다. ## 실제 실행 화면 먼저 목록을 확인한 뒤(위) 실제 백업 파일 크기를 확인한(아래) 결과입니다. ![tar 명령어 실행 결과: 아카이브 목록과 백업 파일 크기](https://games.cursorai.co.kr/assets/tar-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/filesystem/tar.html