리눅스 백업
IT 위키
더 많은 작업
리눅스 시스템의 데이터를 장애나 실수에 대비해 복사해 두는 방법과 도구를 정리한 문서이다.
| 종류 | 대상 | 백업 속도 | 복구 |
|---|---|---|---|
| 전체 백업 (Full) | 모든 데이터 | 가장 느림 | 전체 백업 하나로 복구 |
| 증분 백업 (Incremental) | 직전 백업(전체 또는 증분) 이후 바뀐 데이터 | 가장 빠름 | 전체 백업 + 이후 모든 증분 백업이 필요 |
| 차등 백업 (Differential) | 마지막 전체 백업 이후 바뀐 데이터 | 중간 | 전체 백업 + 마지막 차등 백업만 필요 |
- Day-Zero 백업 : 시스템을 처음 설치하고 설정을 마친 직후에 받는 전체 백업이다.
- 백업 매체 : 테이프(/dev/st0, /dev/nst0), 외장 디스크, 원격 서버, 클라우드 스토리지
- 원본과 다른 장소에 보관하고, 복구 시험을 정기적으로 해야 한다.
| 도구 | 특징 |
|---|---|
| tar | 파일을 묶는 가장 흔한 도구. 압축(z, j, J)과 증분(-g 스냅숏 파일)을 지원한다. |
| dump / restore | 파일 시스템 단위 백업. 0~9 레벨로 증분 백업을 한다. EXT 계열 전용이다. |
| cpio | 표준 입력으로 받은 파일 목록을 묶는다. 보통 find와 함께 쓴다. |
| dd | 블록 단위로 그대로 복사한다. 디스크·파티션 이미지, MBR 백업에 쓴다. |
| rsync | 바뀐 부분만 동기화한다. 원격 백업(SSH)에 많이 쓴다. |
| xfsdump / xfsrestore | XFS 파일 시스템 백업 (레벨 0~9) |
| rdist | 여러 호스트에 파일을 배포·동기화하는 예전 도구 |
# /home 전체 백업 (gzip 압축) # tar cvzpf /backup/home.tar.gz /home # 증분 백업 : 첫 실행은 전체, 이후 실행은 바뀐 파일만 # tar -g /backup/home.snar -cvzf /backup/home-full.tar.gz /home # tar -g /backup/home.snar -cvzf /backup/home-inc1.tar.gz /home # 복원 # tar xvzpf /backup/home.tar.gz -C /
- c 생성, x 해제, t 목록, v 상세, f 파일 지정, p 권한 보존, -C 풀 위치
- 레벨 0은 전체 백업, 1~9는 자기보다 낮은 레벨의 마지막 백업 이후 바뀐 파일을 백업한다.
- 백업 기록은 /etc/dumpdates에 남는다. (-u 옵션)
# /home 파일 시스템 전체(레벨 0) 백업, dumpdates 갱신 # dump -0uf /backup/home.dump /home # 레벨 1 증분 백업 # dump -1uf /backup/home1.dump /home # 대화형으로 원하는 파일만 복원 # restore -if /backup/home.dump # 전체 복원 (복원할 파일 시스템에서 실행) # cd /home && restore -rf /backup/home.dump
세 가지 모드로 동작한다.
- -o (copy-out) : 표준 입력의 파일 목록을 묶어 표준 출력으로 내보낸다.
- -i (copy-in) : 묶음을 풀어 파일로 만든다.
- -p (copy-pass) : 묶지 않고 다른 디렉터리로 그대로 복사한다.
# 묶기 $ find /etc -depth -print | cpio -ov > etc.cpio # 풀기 (-d: 디렉터리 생성) $ cpio -idv < etc.cpio # 복사 $ find /data -depth | cpio -pdmv /backup
# 디스크 전체 이미지 # dd if=/dev/sda of=/backup/sda.img bs=4M # MBR(첫 512바이트) 백업 # dd if=/dev/sda of=/backup/mbr.bin bs=512 count=1
# 권한·시간 보존(-a), 상세(-v), 압축(-z), 원본에 없는 파일 삭제(--delete) $ rsync -avz --delete /home/ [email protected]:/backup/home/
- 원본 경로 끝에 /를 붙이면 디렉터리 안의 내용을, 붙이지 않으면 디렉터리 자체를 복사한다.
cron에 백업 명령을 등록한다.
# 매일 새벽 2시 /home 백업 0 2 * * * tar czf /backup/home-$(date +\%F).tar.gz /home
- 전체·증분·차등 백업의 대상과 복구에 필요한 백업 조합
- dump 레벨 0~9와 /etc/dumpdates
- cpio의 -o / -i / -p 모드
- tar 옵션 조합과 압축 옵션 z / j / J