2.1. NFS 아카이브 순환
이 섹션에서는 할아버지-아버지-아들 순환 방식(월별-주별-일별)을 구현하기 위해 쉘 스크립트를 약간 수정합니다.
• 회전은 다음을 수행합니다. 매일 일요일부터 금요일까지 백업하세요.
• 토요일에 주간 백업이 완료되어 한 달에 XNUMX번의 주간 백업이 제공됩니다.
• 그만큼 월 백업은 해당 월이 홀수인지 짝수인지에 따라 두 번의 월간 백업을 번갈아 가며 매월 XNUMX일에 수행됩니다.
새로운 스크립트는 다음과 같습니다.
#! / bin / bash
############################
#
# 다음을 사용하여 NFS 마운트 스크립트로 백업
# 할아버지-아버지-아들 순환.
#
############################
# 백업할 내용.
backup_files="/home /var/spool/mail /etc /root /boot /opt"
# 백업할 위치. 대상 = "/mnt/백업"
# 아카이브 파일 이름에 대한 설정 변수. 일=$(날짜 +%A)
호스트 이름=$(호스트 이름 -s)
# 1~4월 중 어느 주인지 알아보세요. day_num=$(날짜 +%-d)
if (( $day_num <= 7 )); 그런 다음 week_file="$hostname-week1.tgz"
elif (( $day_num > 7 && $day_num <= 14 )); 그런 다음 week_file="$hostname-week2.tgz"
elif (( $day_num > 14 && $day_num <= 21 )); 그런 다음 week_file="$hostname-week3.tgz"
elif (( $day_num > 21 && $day_num < 32 )); 그런 다음 week_file="$hostname-week4.tgz"
fi
# 월이 홀수인지 짝수인지 알아보세요. 월_번호=$(날짜 +%m)
월=$(expr $month_num % 2) if [ $month -eq 0 ]; 그 다음에
Month_file="$hostname-month2.tgz"
그렇지 않으면
fi
Month_file="$hostname-month1.tgz"
# 아카이브 파일명을 생성합니다. if [ $day_num == 1 ]; 그런 다음 archive_file=$month_file
elif [ $day != "토요일" ]; 그런 다음 archive_file="$hostname-$day.tgz"
그렇지 않으면 archive_file=$week_file
fi
# 시작 상태 메시지를 인쇄합니다.
echo "$backup_files를 $dest/$archive_file에 백업 중" 날짜
에코
# tar를 사용하여 파일을 백업합니다.
tar czf $dest/$archive_file $backup_files
# 종료 상태 메시지를 인쇄합니다. 에코
echo "백업 완료" 날짜
# 파일 크기를 확인하기 위한 $dest의 긴 파일 목록. ls -lh $dest/
1.2절 “스크립트 실행하기” [p. 325].
재해가 발생할 경우 백업 미디어를 오프사이트로 가져가는 것이 좋습니다. 쉘 스크립트 예에서 백업 미디어는 NFS 공유를 제공하는 또 다른 서버입니다. 아마도 NFS 서버를 다른 위치로 가져가는 것은 실용적이지 않습니다. 연결 속도에 따라 WAN 링크를 통해 다른 위치에 있는 서버로 아카이브 파일을 복사하는 옵션이 될 수도 있습니다.
또 다른 옵션은 아카이브 파일을 외부 하드 드라이브에 복사한 다음 오프사이트로 가져가는 것입니다. 외장 하드 드라이브의 가격이 지속적으로 하락하고 있으므로 각 아카이브 수준에 두 개의 드라이브를 사용하는 것이 비용 효율적일 수 있습니다. 이렇게 하면 하나의 외부 드라이브를 백업 서버에 연결하고 다른 하나를 다른 위치에 연결할 수 있습니다.