백업

✒️ 2025-05-22 14:13 내용 수정



1. tar로 백업 만들기

2. 백업 파일로부터 데이터 복구하기

3. 셸 스크립트로 백업 실행

  1. 백업 파일을 저장해둘 디렉터리를 mkdir /root/디렉터리명에 생성한다.
    • 실습에서는 /home을 백업했기에 /root에 저장했다. 다른 파일을 백업한다면 /root 외의 각 사용자 위치여도 상관없다.
  2. 백업용 스크립트 파일 gedit backDIR.sh로 생성한다.
  3. 스크립트 내용을 작성한다.
# !/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
  1. backDIR.sh 스크립트 파일에 chmod 744 backDIR.sh로 실행 권한을 부여한다.
  2. ./backDIR.sh 를 입력하면 스크립트가 실행된다.
    • date -s "2023-01-01 12:00:00" 형식으로 날짜와 시간을 바꾼 후 파일을 생성해보고, 백업을 진행하면 해당 날짜 이름의 백업 파일이 생성된다.
    • rdate -s time.bora.net로 변경한 시간 설정을 로컬 현재 시간으로 바꿀 수 있다.