全网数据脚本自动化备份
( 以下有任何疑问的地方都可以在评论区留下你的疑问,博主也会一一解答,点赞、投币加关注,下次不迷路,B站)#CSND and B站同号
准备环境:
两台web服务器:web01、web02
一台存储服务器:nf01
一台备份服务器:backup01
服务器配置详情:
web01:外网:10.0.0.7
内网:172.16.1.7
安装配置好的服务:Apache
web02:外网:10.0.0.8
内网:172.16.1.8
安装配置好的服务:Apache
nf01:外网:10.0.0.31
内网:172.16.1.31
安装配置好的服务:Apache
backup01:外网:10.0.0.7
内网:172.16.1.7
安装配置好的服务:Apache、rsync、mail
项目要求:
1.所有服务器的备份目录必须都为/backup
2.要备份的系统配置文件包括但不限于:
a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)
b.开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器)
c.日常脚本的目录(需要自己创建/server/script)
d.防火墙iptables的配置文件(若没有便假设为:/etc/sysconfig/iptables用于测试)
3.web服务器站点目录(假定为/var/html/www用于测试)
4.web服务器访问日志路径(假定为/app/logs用于测试)
5.web服务器保留打包后的7天的备份数据(本地只保留七天,否侧会造成磁盘超额)
6.备份服务器上,只保存每周一的所有数据副本,保存6个月的数据
7.备份服务器上按照备份数据服务器的内网IP为目录保存备份,备份文件的名称按照文件的时间保存
8.需要确保备份的数据尽量完整正确,在备份服务器上对备份数据进行检查,把备份的成功及失败结果信息发送给系统管理员邮箱中
过程:各台服务器依次配置好相应脚本和服务—>web01、web02、nf01定时任务开启,自动运行脚本,将需要备份文件的文件上传到备份服务器----->备份服务器接收其他服务器的备份文件----->备份服务器定时任务开启,扫描检查其他备份服务器上传的备份数据是否存在丢包、数据不完整的情况并把最终扫描检查结果编写成邮件发送给公司运维管理员
开始依次部署服务器
nf01:
第一步(编写脚本):
[root@nf01 /]# vim /server/scripts/backup.sh #编写一个脚本,脚本代码如下所示
#!/bin/bash
Backup_dir="/backup"
IP_info=$(hostname -I|awk ‘{print $2}’)
#create backup dir
mkdir -p /
B
a
c
k
u
p
d
i
r
/
Backup_dir/
Backupdir/IP_info
#tar backup data
tar zcvhf /
B
a
c
k
u
p
d
i
r
/
Backup_dir/
Backupdir/IP_info/system_KaTeX parse error: Expected group after '_' at position 11: Backup_dir_̲(date -d -1day +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables
#del 7 day ago data
find /$Backup_dir/ -type f -mtime +7|xargs rm 2>/dev/null
#create fingter file
find /
B
a
c
k
u
p
d
i
r
/
−
t
y
p
e
f
−
m
t
i
m
e
−
1
!
−
n
a
m
e
"
f
i
n
g
e
r
∗
"
∣
x
a
r
g
s
m
d
5
s
u
m
>
/
Backup_dir/ -type f -mtime -1 ! -name "finger*"|xargs md5sum >/
Backupdir/−typef−mtime−1!−name"finger∗"∣xargsmd5sum>/Backup_dir/KaTeX parse error: Expected group after '_' at position 15: IP_info/finger_̲(date -d -1day +%F_week%w).txt
#upload to backup server
rsync -avz /$Backup_dir/ bilibili_backup@172.16.1.41::backup --password-file=/etc/rsync.password
第二步:生成rsync指定认证用户密码文件
echo “2233” /etc/rsync.password #2233为rsync指定认证用户bilibili的密码
chmod 600 /etc/rsync.password #修改文件权限
第三步(编写定时任务):
[root@nf01 /]# crontab -e #进入定时任务配置文件后,加入以下代码
44 20 * * * /bin/bash /server/scripts/backup.sh #这里博主设置的是每天20:44上传备份数据至备份服务器
定时任务脚本运行效果如下:
web01:
第一步(编写脚本):
[root@nf01 /]# vim /server/scripts/backup.sh #编写一个脚本,脚本代码如下所示
#!/bin/bash
Backup_dir="/backup"
IP_info=$(hostname -I|awk ‘{print $2}’)
#create backup dir
mkdir -p /
B
a
c
k
u
p
d
i
r
/
Backup_dir/
Backupdir/IP_info
#tar backup data
tar zcvhf /
B
a
c
k
u
p
d
i
r
/
Backup_dir/
Backupdir/IP_info/system_KaTeX parse error: Expected group after '_' at position 11: Backup_dir_̲(date -d -1day +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables ./var/html/www ./app/logs
#del 7 day ago data
find /$Backup_dir/ -type f -mtime +7|xargs rm 2>/dev/null
#create fingter file
find /
B
a
c
k
u
p
d
i
r
/
−
t
y
p
e
f
−
m
t
i
m
e
−
1
!
−
n
a
m
e
"
f
i
n
g
e
r
∗
"
∣
x
a
r
g
s
m
d
5
s
u
m
>
/
Backup_dir/ -type f -mtime -1 ! -name "finger*"|xargs md5sum >/
Backupdir/−typef−mtime−1!−name"finger∗"∣xargsmd5sum>/Backup_dir/KaTeX parse error: Expected group after '_' at position 15: IP_info/finger_̲(date -d -1day +%F_week%w).txt
#upload to backup server
rsync -avz /$Backup_dir/ bilibili_backup@172.16.1.41::backup --password-file=/etc/rsync.password
第二步:生成rsync指定认证用户密码文件
echo “2233” /etc/rsync.password #2233为rsync指定认证用户bilibili的密码
chmod 600 /etc/rsync.password #修改文件权限
第三步(编写定时任务):
[root@nf01 /]# crontab -e #进入定时任务配置文件后,加入以下代码
44 20 * * * /bin/bash /server/scripts/backup.sh #这里博主设置的是每天20:44上传备份数据至备份服务器
定时任务脚本运行效果如下:
web02:
第一步(编写脚本):
[root@nf01 /]# vim /server/scripts/backup.sh #编写一个脚本,脚本代码如下所示,脚本存放位置可自行选择,但切记与定时任务中脚本位置同步
#!/bin/bash
Backup_dir="/backup"
IP_info=$(hostname -I|awk ‘{print $2}’)
#create backup dir
mkdir -p /
B
a
c
k
u
p
d
i
r
/
Backup_dir/
Backupdir/IP_info
#tar backup data
tar zcvhf /
B
a
c
k
u
p
d
i
r
/
Backup_dir/
Backupdir/IP_info/system_KaTeX parse error: Expected group after '_' at position 11: Backup_dir_̲(date -d -1day +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables ./var/html/www ./app/logs
#del 7 day ago data
find /$Backup_dir/ -type f -mtime +7|xargs rm 2>/dev/null
#create fingter file
find /
B
a
c
k
u
p
d
i
r
/
−
t
y
p
e
f
−
m
t
i
m
e
−
1
!
−
n
a
m
e
"
f
i
n
g
e
r
∗
"
∣
x
a
r
g
s
m
d
5
s
u
m
>
/
Backup_dir/ -type f -mtime -1 ! -name "finger*"|xargs md5sum >/
Backupdir/−typef−mtime−1!−name"finger∗"∣xargsmd5sum>/Backup_dir/KaTeX parse error: Expected group after '_' at position 15: IP_info/finger_̲(date -d -1day +%F_week%w).txt
#upload to backup server
rsync -avz /$Backup_dir/ bilibili_backup@172.16.1.41::backup --password-file=/etc/rsync.password
第二步:生成rsync指定认证用户密码文件
echo “2233” /etc/rsync.password #2233为rsync指定认证用户bilibili的密码
chmod 600 /etc/rsync.password #修改文件权限
第三步:编写定时任务
[root@nf01 /]# crontab -e #进入定时任务配置文件后,加入以下代码
44 20 * * * /bin/bash /server/scripts/backup.sh #这里博主设置的是每天20:44上传备份数据至备份服务器
定时任务脚本运行效果如下:
backup:
第一步:设置邮箱(若没有邮箱服务,请通过yum install -y mail命令自行下载安装)
vim /etc/mail.rc
set from=*********@163.com smtp=smtp.163.com
set smtp-auth-user=*********@163.com smtp-auth-password=ZUUFEZYSROFKQGOC smtp-auth=login
#ZUUFEZYSROFKQGOC为授权码,登入网易邮箱进行获取
#在文件底部追加以上代码,效果如下
第二步:编写脚本(脚本中的/tmp/check.txt需要自行创建)
vim /server/scripts/backup_server.sh #编写一个脚本,脚本代码如下所示,脚本存放位置可自行选择,但切记与定时任务中脚本位置同步
#!/bin/bash
#del 180 day ago data
find /backup/ -type f -mtime +180 ! -name “*week1.tar.gz”|xargs rm 2>/dev/null
#check backup data
find /backup/ -type f -name “finger*.txt”|xargs md5sum -c >/tmp/check.txt
#send check mail
mail -s “check backup info for $(date +%F)” *********@qq.com </tem/check.txt
第三步:生成rsync指定认证用户密码文件
echo “2233” /etc/rsync.password #2233为rsync指定认证用户bilibili的密码
chmod 600 /etc/rsync.password #修改文件权限
第四步:编写定时任务
[root@nf01 /]# crontab -e #进入定时任务配置文件后,加入以下代码
45 20 * * * /bin/bash /server/scripts/backup.sh #这里博主设置的是每天20:45上传备份数据至备份服务器,这里需要注意备份服务器设置的定时任务,所设定的时间不能和web服务器、存储服务器的定时任务时间相同,这是因为如果时间相同,若web服务器和存储服务器的备份内容还未上传完成,而备份服务器已经开始运行定时任务中的脚本,备份服务器可能会因为没有扫描到文件或扫描到到不完整的文件而判定出错,发送给运维人员的邮件显示全是报错!每一个是上传成功的
web01、web02、nf01服务器定时任务20:44开启后 备份文件上传至备份服务器效果如下
20:45分备份服务器启动定时任务,接收邮件内容如下: