LabHub

백업과 복구 · tar 와 rsync · 이론

tar 와 rsync 를 정확히 쓰기

LabHub 에서 이어서 보기

한 줄 요약

tar 는 시점을 담는 도구이고 rsync 는 상태를 맞추는 도구다. 백업 설계에서 둘은 경쟁이 아니라 역할 분담이다.

왜 이게 필요했나

"백업은 tar 로 하나요 rsync 로 하나요?" 라는 질문에는 답이 정해져 있지 않다. 세대별 아카이브가 필요하면 tar, 최신 상태의 사본이 필요하면 rsync 다. 그리고 대부분의 실무 구성은 둘 다 쓴다.

어떻게 동작하나

tar

tar -czf /backup/etc-$(date +%F).tar.gz --acls --xattrs --selinux --numeric-owner -C / etctar -tzf /backup/etc-2026-08-20.tar.gz | headtar -xzf /backup/etc-2026-08-20.tar.gz -C /restore/

옵션의 정확한 의미.

복원 시 경로를 반드시 확인하라. -C / 로 바로 풀면 현재 시스템 설정을 덮어쓴다. 안전한 절차는 임시 경로로 풀어 내용을 확인한 뒤 필요한 파일만 옮기는 것이다.

mkdir -p /restore/etc-checktar -xzf /backup/etc-2026-08-20.tar.gz -C /restore/etc-checkdiff -r /restore/etc-check/etc/nginx /etc/nginx | head -40

GNU tar 와 BSD tar(bsdtar)는 옵션 처리와 일부 동작이 다르다. macOS 에서 만든 아카이브를 리눅스에서 풀 때 확장 속성 관련 파일이 함께 나오는 문제가 대표적이다. 백업 스크립트는 실제 운영 배포판에서 검증해야 한다.

rsync

rsync -aHAX --numeric-ids --delete --dry-run /srv/data/ backup@10.0.9.2:/backup/prod/data/

세대 백업은 하드 링크로 값싸게 만든다.

rsync -aHAX --numeric-ids --delete --link-dest=/backup/prod/daily.1 /srv/data/ /backup/prod/daily.0/

각 세대가 전체 스냅샷처럼 보이지만 디스크는 변경분만 차지한다.

두 도구의 역할 분담

| 필요 | 도구 |
| --- | --- |
| 특정 시점의 아카이브 파일 하나 | tar |
| 오프사이트로 옮길 단일 객체 | tar (+ 압축, 암호화) |
| 최신 상태의 사본 유지 | rsync |
| 세대별 스냅샷을 값싸게 | rsync --link-dest |
| 대역폭을 아껴 원격 동기화 | rsync (델타 전송) |

현장에서 만나는 모습

--delete 사고. 원본이 비어 있거나 마운트가 풀린 상태에서 실행되면 대상 데이터를 전부 지운다. 실무에서 실제로 반복되는 사고다. 가드가 필수다.

세대 백업을 하드 링크 모르는 도구로 복사해 용량이 3배가 되는 사고. -H-a 에 포함되지 않는다.

다음 실습에서 할 것

tar 로 전체·증분·제외·분할을 다루고, rsync 로 dry-run·가드·세대 백업·부하 제어를 다룬다. 두 실습 모두 마지막에 결과를 검증한다.