全网数据备份方案
1 项目备份环境已知3台服务器主机名分别为web01、backup、nfs01,主机信息见下表:
2 项目备份要求具体要求如下: 3 项目备份逻辑架构图4 项目实施配置(1)首先三台服务器的备份目录都要为backup mkdir /backup #web01,nfs01,backup服务器都要创建backup (2)要备份的系统配置文件包括但不限于 cd / tar zchf $Dir_info/$IP_info/system_backup_$(date +%F_星期%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables # h:表示将源文件也压缩 (3)Web服务器站点目录假定为(/var/html/www)(适合web服务器)。 [[email?protected] ~]# mkdir /var/html/www -p (4)Web服务器A访问日志路径假定为(/app/logs)(适合web服务器)。 [[email?protected] ~]# mkdir /app/logs -p (5)Web服务器保留打包后的7天的备份数据。 find /backup -type f -mtime +7 -name "*.tar.gz"|xargs rm 2>/dev/null 2>/dev/null:如果没有7天之前的数据会产生错误报告信息,因此将错误信息追加到/dev/null,不会产生错误信息。 (6)备份服务器上,保留最近6个月的备份数据,同时保留6个月之前每周一的所有数据。 find /backup -type f -mtime +180 -name "*.tar.gz"|xargs rm # 方法一:在文件名称中显示星期信息 # data+%A/date +%w find /backup/ -type f -name "*.tar.gz" -mtime +180 ! -name "*星期1.tar.gz"|xargs rm 2>/dev/null # 方法二:将周一数据单独保存 # 今天是周一 mkdir /backup/week01 rsync -avz /backup/week01 [email?protected]::backup/week01/ find /backup/ -path "/backup/week01" -prune -o -type f -name "*.tar.gz" -print |xargs rm (7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。 [[email?protected] ~]# mkdir /backup/172.16.1.7 172.16.1.31 (8)需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中 rsync -avz /backup/ [email?protected]::backup --password-file=/etc/rsync.password md5sum /backup/172.16.1.31/system_backup_2019-07-18_星期4.tar.gz >/backup/172.16.1.31/finger.txt #### md5值追加给finger.txt(指纹文件) md5sum -c finger.txt ### 自动对比md5值 ? vim /etc/mail.rc set [email?protected] smtp=smtp.163.com set [email?protected] smtp-auth-password=ichn123456 smtp-auth=login # 将这两条命令添加到最后一行 systemctl restart postfix.service # 重启邮件 echo "linux ichn62"|mail -s "test_mail" [email?protected] # 测试邮件是否能发送 mail -s "test_mail" [email?protected] </etc/hosts # 测试邮件是否能发送 整理以上命令编写脚本 mkdir /server/scripts/ #创建脚本目录 [[email?protected] scripts]#vi system_backup.sh #!/bin/bash Dir_info="/backup" IP_info="$(hostname -i)" # 创建本地备份目录 mkdir -p $Dir_info/$IP_info # 创建本地备份压缩文件,备份站点目录和日志目录 cd / tar zchf $Dir_info/$IP_info/system_backup_$(date +%F_星期%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables tar zchf $Dir_info/$IP_info/web_backup_$(date +%F_星期%w).tar.gz ./var/html/www/ tar zchf $Dir_info/$IP_info/web_log_$(date +%F_星期%w).tar.gz ./app/logs/ # 生成数据指纹信息 find $Dir_info/$IP_info/ -type f -name "*.tar.gz" -mtime -1|xargs md5sum >$Dir_info/$IP_info/finger.txt # 传输备份数据 rsync -az $Dir_info/ [email?protected]::backup --password-file=/etc/rsync.password # 删除七天以前备份数据 find $Dir_info -type f -mtime +7 -name "*.tar.gz"|xargs rm 2>/dev/null ? mkdir /server/scripts/ #创建脚本目录 [[email?protected] scripts]#vi system_backup.sh #!/bin/bash Dir_info="/backup" IP_info="$(hostname -i)" # 创建本地备份目录 mkdir -p $Dir_info/$IP_info # 创建本地备份压缩文件 cd / tar zchf $Dir_info/$IP_info/system_backup_$(date +%F_星期%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables # 生成数据指纹信息 find $Dir_info/$IP_info/ -type f -name "*.tar.gz" -mtime -1|xargs md5sum >$Dir_info/$IP_info/finger.txt # 传输备份数据 rsync -az $Dir_info/ [email?protected]::backup --password-file=/etc/rsync.password # 删除七天以前备份数据 find $Dir_info -type f -mtime +7 -name "*.tar.gz"|xargs rm 2>/dev/null ?? mkdir /server/scripts/ #创建脚本目录 [[email?protected] scripts]#vi backup_check.sh [[email?protected] scripts]#cat backup_check.sh #!/bin/bash #验证数据完整性 find /backup/ -type f -name "finger.txt"|xargs md5sum -c &>/tmp/check_info.txt #发送邮件信息通知 mail -s "backup_check_info" [email?protected] </tmp/check_info.txt #删除6个月之前数据 find /backup/ -type f -name "*.tar.gz" -mtime +180 ! -name "*星期1.tar.gz"|xargs rm 2>/dev/null 编写定时任务 [[email?protected] /]#crontab -e # backup data 00 00 * * * /bin/sh /server/scripts/system_backup.sh &>/dev/null 问题: 如何备份备份周一的数据 [[email?protected] /]#crontab -e # backup data 00 00 * * * /bin/sh /server/scripts/system_backup.sh &>/dev/null backup服务端: [[email?protected] /]#crontab -e 0 6 * * * /bin/sh /server/scripts/backup_check.sh &>/dev/null 可以修改系统时间来验证脚本,定时是否成功。 5 补充知识5.1 如何杀掉进程第一种方式:kill ps -ef|grep sshd #查看进程号 [[email?protected] ~]#ps -ef|grep sshd root 1537 1229 0 09:06 ? 00:00:00 sshd: [email?protected]/0 kill 1537 # 杀掉sshd服务,有提示信息 ?第二种方式:killall yum install -y psmisc # 安装killall ps -ef|grep sshd #查看进程号 [[email?protected] ~]#ps -ef|grep sshd root 1537 1229 0 09:06 ? 00:00:00 sshd: [email?protected]/0 killall sshd # 杀掉sshd 有提示信息 第三种方式:pkill (模糊杀手) ps -ef|grep sshd #查看进程号 [[email?protected] ~]#ps -ef|grep sshd root 1537 1229 0 09:06 ? 00:00:00 sshd: [email?protected]/0 pkill sshd # 模糊杀掉与有sshd关系的服务 没有提示信息 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |