본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

리눅스 시스템의 데이터를 장애나 실수에 대비해 복사해 두는 방법과 도구를 정리한 문서이다.

종류 대상 백업 속도 복구
전체 백업 (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