2.1. 旋转 NFS 档案
在本节中,将稍微修改 shell 脚本以实现祖父-父亲-儿子轮换方案(每月-每周-每天):
• 轮换将做一个 每天 周日到周五备份。
• 在星期六 每周 备份已完成,每月为您提供四次每周备份。
•该 每月一次 备份在每月的第一天完成,根据月份是奇数还是偶数,轮流进行两次每月备份。
这是新脚本:
#!/斌/庆典
####################################
#
# 备份到 NFS 挂载脚本
#祖父父子轮换。
#
####################################
#备份什么
backup_files="/home /var/spool/mail /etc /root /boot /opt"
# 备份到哪里。 dest="/mnt/备份"
# 为存档文件名设置变量。 天=$(日期+%A)
hostname = $(hostname -s)
# 找出它是一个月的第 1-4 周。 day_num=$(日期+%-d)
如果 (( $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"
# 创建存档文件名。 如果 [ $day_num == 1 ]; 然后 archive_file=$month_file
elif [ $day != "星期六" ]; 然后 archive_file="$hostname-$day.tgz"
否则存档文件=$week_file
fi
#打印开始状态信息。
echo "将 $backup_files 备份到 $dest/$archive_file" 日期
回音
#使用tar备份文件。
tar czf $ dest / $ archive_file $ backup_files
# 打印结束状态消息。 回声
回显“备份完成”日期
# $dest 中的长文件列表以检查文件大小。 ls -lh $dest/
可以使用与第 1.2 节 “执行脚本” [p. 325] 中相同的方法来执行该脚本。 XNUMX]。
在发生灾难时,将备份媒体带离现场是一种很好的做法。 在 shell 脚本示例中,备份媒体是另一台提供 NFS 共享的服务器。 很可能将 NFS 服务器带到另一个位置是不切实际的。 根据连接速度,可以选择通过 WAN 链接将存档文件复制到另一个位置的服务器。
另一种选择是将存档文件复制到外部硬盘驱动器,然后可以将其带离现场。 由于外置硬盘驱动器的价格不断下降,每个存档级别使用两个驱动器可能更划算。 这将允许您将一个外部驱动器连接到备份服务器,并将一个外部驱动器连接到另一个位置。