백업
✒️ 2025-05-22 14:13 내용 수정
- 전체 백업(Day zero backup) : 데이터를 통째로 백업, 점검을 많이 해야 함
- 증분 백업(Incremental backup) : 전체 백업 이후 변경이 발생한 것만 백업. 증분은 중복 백업이 안된다.
- 차등 백업(Differential backup) : 전체 백업이 이루어진 후, 변경이 이루어진 모든 것을 백업. 차등은 중복으로 백업된다.
1. tar로 백업 만들기
- 파일 압축 명령어#tar 참고
tar cpfzP backup/Full-backup.tar.gz --listed-incremental backup/backuplist source/: 현재 backup 위치에서 Full-backup.tar.gz 이름으로 source/에 있는 파일/폴더를 백업- 옵션은 --listed-incremental
- 전체 백업이라는 옵션은 없고, 증분 백업 옵션만 존재하지만 첫 증분 백업은 전체 백업이 된다.
- backuplist를 만들고, 이 파일을 기준으로 차등 백업한다.
- 백업 할 때는 명령어도 백업하기 때문에 백업 전에 수행한 명령어의 데이터도 백업이 된다.
- 옵션은 --listed-incremental
tar tvf Full-backup.tar.gz: Full-backup.tar.gz 파일 내의 내용물을 압축 해제 없이 확인
2. 백업 파일로부터 데이터 복구하기
tar xvfz Full-backup.tar.gz -C /root/0615/: Full-backup.tar.gz(전체백업)를 압축해제- 옵션 -x : 압축 해제
- 옵션 -C : 압축을 해제할 디렉토리 지정
tar xvfz Incremental1-backup.tar.gz -g /root/0615/backup/backuplist -C /root/0615: 1차 증분 백업을 압축해제- 전체 백업으로부터 변경된 부분의 파일이 압축 해제되어 있다.
- 만약 명령어를 백업해둔 파일을 압축해제 하면 해당 명령어가 실행된다.
3. 셸 스크립트로 백업 실행
- 백업 파일을 저장해둘 디렉터리를
mkdir /root/디렉터리명에 생성한다.- 실습에서는 /home을 백업했기에 /root에 저장했다. 다른 파일을 백업한다면 /root 외의 각 사용자 위치여도 상관없다.
- 백업용 스크립트 파일
gedit backDIR.sh로 생성한다. - 스크립트 내용을 작성한다.
# !/bin/bash # 작성 언어 표시
# *변수 선언은 대문자로 작성, 변수 호출시엔 $변수명
DIRECTORY="/home" # 백업 대상
BACKUPDIR=/backup # 백업 위치
INCREMENTAL=$BACKUPDIR/backuplist
# 증분 변수호출 어떻게 백업되는지를 파일에 기록
day=`date +%d` # <--d : 일(1~31), date 명령어로 날짜 확인 시 보이는 일
week=`date +%a` # <--a : 요일
DM=`date +%m-%d` # <-- 월-일(백업할 때 파일명에 월-일 기록을 위함)
if [ ! -d $BACKUPDIR ]; then # 만약 폴더 변수(백업 저장 폴더)가 없으면
mkdir $BACKUPDIR # 변수(백업 저장 폴더) 생성
fi
if [ ! -f $BACKUPDIR/Full-backup* ]; then # 만약 파일 변수(전체 백업 파일)가 없으면
# 전체 백업 파일 생성(gzip으로 압축, 월-일을 포함한 이름으로)하고,
# 옵션 -g로 증분백업, 대상은 $DIRECTORY(/home)
tar cpfz $BACKUPDIR/Full-backup-$DM.tar.gz -g $INCREMENTAL $DIRECTORY
else # 전체 백업 파일이 있다면
if [ $week = "일" ]; then # 지원하는 언어에 맞게 설정해야 오류가 안남
# 오늘 날짜가 일요일이면
# 원래 삭제 전에 해당 파일들을 다른 위치로 백업
rm -f $BACKUPDIR/* # 백업을 저장한 폴더의 모든 파일 제거
tar cpfz $BACKUPDIR/Full-backup-$DM.tar.gz -g $INCREMENTAL $DIRECTORY
# 전체 백업을 다시 실행
else # 일요일이 아니라면
tar cpfz $BACKUPDIR/Incre-backup-$DM.tar.gz -g $INCREMENTAL $DIRECTORY
# 증분 백업 실행
fi
fi
- backDIR.sh 스크립트 파일에
chmod 744 backDIR.sh로 실행 권한을 부여한다. ./backDIR.sh를 입력하면 스크립트가 실행된다.date -s "2023-01-01 12:00:00"형식으로 날짜와 시간을 바꾼 후 파일을 생성해보고, 백업을 진행하면 해당 날짜 이름의 백업 파일이 생성된다.rdate -s time.bora.net로 변경한 시간 설정을 로컬 현재 시간으로 바꿀 수 있다.