老男孩视频是2015年3月14号,4个视频全部看完了,和作业有点出路,但是大部分涉及了
https://edu.51cto.com/course/3497.html
主要是邮件发送的操作不一样,流程不难的
参考文档:第8关50-100台规模集群全网数据备份解决方
完整路径:E:\老男孩Linux运维课程视频\feiq\Recv Files\69预习视频\老男孩教育脱产63期-day35-综合架构实时同步\章节资料汇总\复习资料
文本文件:老男孩教育63期脱产班-day34-综合架构全网备份篇
规划:
1、第一个里程碑,数据同步服务器rsync服务
backup server上部署rsync,并且在Web服务器可以推送成功
2、第二个里程碑本地打包脚本实现
webserver
3、第三个里程碑配置定时任务
02-第一个里程碑数据备份rsync实践
配置rsync备份服务的服务端
0100正式进行操作
在备份服务器backup上配置备份服务rsync
[root@backup ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:07:f8:ce brd ff:ff:ff:ff:ff:ff inet 10.0.0.41/24 brd 10.0.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::8c8d:c31b:a121:ca62/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever inet6 fe80::d2e4:6879:ac85:c625/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:07:f8:d8 brd ff:ff:ff:ff:ff:ff inet 172.16.1.41/16 brd 172.16.255.255 scope global noprefixroute eth1 valid_lft forever preferred_lft forever inet6 fe80::e654:55e2:8c88:ecfb/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever inet6 fe80::5e65:529b:4fae:7fc3/64 scope link noprefixroute valid_lft forever preferred_lft forever
[root@backup ~]# hostname backup
对配置文件进行备份
[root@backup ~]# ls /etc/rsyncd.conf* /etc/rsyncd.conf /etc/rsyncd.conf.bak01 [root@backup ~]# cp /etc/rsyncd.conf{,.bak} [root@backup ~]# ls /etc/rsyncd.conf{,.bak} /etc/rsyncd.conf /etc/rsyncd.conf.bak [root@backup ~]# ls /etc/rsyncd.conf* /etc/rsyncd.conf /etc/rsyncd.conf.bak /etc/rsyncd.conf.bak01 [root@backup ~]# ll /etc/rsyncd.conf* -rw-r--r-- 1 root root 469 Jan 11 14:59 /etc/rsyncd.conf -rw-r--r-- 1 root root 592 Jan 11 14:58 /etc/rsyncd.conf.bak -rw-r--r-- 1 root root 458 Jan 8 10:21 /etc/rsyncd.conf.bak01
[root@backup ~]# cat /etc/rsyncd.conf #rsync_config #created by HQ at 2017 ##rsyncd.conf start## uid = rsync gid = rsync port = 873 fake super = yes use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false hosts allow = 172.16.1.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password [backup] comment="backup dir by oldboy" path=/backup
修改后的情况
创建虚拟用户认证登录的文件
要根据配置文件定义
auth users=rsync_backup
secrets file=/etc/rsync.password
注意此文件是来源于配置文件的,最好不要手敲,很可能会出错
[root@backup ~]# cat /etc/rsync.password rsync_backup:oldboy123
修改文件权限
使用tab补齐文件名称
文件权限为600
[root@backup ~]# ll /etc/rsync.password -rw------- 1 root root 24 Jan 8 10:34 /etc/rsync.password
创建目录
不管有没有都加上-p
[root@backup ~]# ls /backup/ [root@backup ~]# tree /backup/ /backup/ 0 directories, 0 files [root@backup ~]# mkdir -p /backup/ [root@backup ~]# ls /backup/
创建用户
注意看看配置文件的配置进行操作会更好
[root@backup ~]# id rsync uid=2002(rsync) gid=2003(rsync) groups=2003(rsync) [root@backup ~]# tail -1 /etc/passwd rsync:x:2002:2003::/home/rsync:/sbin/nologin [root@backup ~]#
修改目录的属主和属组
如果不修改就无法往目录里面写东西,默认是可以读的
[root@backup ~]# chown -R rsync.rsync /backup/ [root@backup ~]# ll -d /backup/ drwxr-xr-x. 2 rsync rsync 6 Jan 11 15:17 /backup/ [root@backup ~]# ls /backup/
0520
配置rsync备份服务的客户端
选择web服务器
[root@web02 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:5c:92:36 brd ff:ff:ff:ff:ff:ff inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::d2e4:6879:ac85:c625/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever inet6 fe80::8c8d:c31b:a121:ca62/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever inet6 fe80::9d5f:63cb:4c46:8ce7/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:5c:92:40 brd ff:ff:ff:ff:ff:ff inet 172.16.1.8/16 brd 172.16.255.255 scope global noprefixroute eth1 valid_lft forever preferred_lft forever inet6 fe80::e654:55e2:8c88:ecfb/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever inet6 fe80::5e65:529b:4fae:7fc3/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever inet6 fe80::787b:a3a1:ead:b12e/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever [root@web02 ~]# hostname web02
[root@web02 ~]# rpm -qa rsync rsync-3.1.2-6.el7_6.1.x86_64 [root@web02 ~]# ls /etc/rsyncd.password ls: cannot access /etc/rsyncd.password: No such file or directory
密码认证文件里面添加密码即可
要和服务端文件内容一样
[root@web02 ~]# echo "oldboy123" >> /etc/rsync.password [root@web02 ~]# /etc/rsync.password -bash: /etc/rsync.password: Permission denied [root@web02 ~]# ll /etc/rsync.password -rw-r--r-- 1 root root 10 Jan 11 15:28 /etc/rsync.password [root@web02 ~]# chmod 600 /etc/rsync.password [root@web02 ~]# ll /etc/rsync.password -rw------- 1 root root 10 Jan 11 15:28 /etc/rsync.password
创建客户端的备份目录
注意如果不加p就会显示目录存在
重新创建目录不会把目录里面的文件删除
[root@web02 ~]# ls /backup/ rc.local [root@web02 ~]# mkdir /backup/ mkdir: cannot create directory ‘/backup/’: File exists [root@web02 ~]# ls /backup/ rc.local [root@web02 ~]# mkdir /backup/ -p [root@web02 ~]# ls /backup/ rc.local
[root@web02 ~]# ls /backup/ rc.local [root@web02 ~]# rm -f /backup/* [root@web02 ~]# ls /backup/ [root@web02 ~]# ll -d /backup/ drwxr-xr-x. 2 root root 6 Jan 11 15:35 /backup/
创建一个测试文件
[root@web02 ~]# touch /backup/test.txt [root@web02 ~]# ll /backup/test.txt -rw-r--r-- 1 root root 0 Jan 11 15:42 /backup/test.txt
[root@web02 ~]# rsync -avz /backup/ rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password sending incremental file list ./ test.txt sent 110 bytes received 46 bytes 104.00 bytes/sec total size is 0 speedup is 0.00
推送到备份服务端成功
完成第1个里程碑
[root@backup ~]# ls /backup/ test.txt [root@backup ~]# ls /backup/ -l total 0 -rw-r--r-- 1 rsync rsync 0 Jan 11 15:42 test.txt
03-编写数据备份与检查脚本
第2个里程碑
0140
创建脚本对应目录
[root@web02 ~]# mkdir /server/scripts -p [root@web02 ~]# ll -d /server/scripts/ drwxr-xr-x 2 root root 6 Jan 11 15:56 /server/scripts/ [root@web02 ~]#
拷贝一些文件到脚本目录里面
[root@web02 ~]# cp /shell_scripts/* /server/scripts/ [root@web02 ~]# ls /server/scripts/ back.sh cut_log.sh ping.sh test.sh usr_ram_crt.sh usr.sh backup.sh echo_path.sh set-ip.sh usr_del.sh usr_ram_crt.txt bck.sh hacker.sh shengdangshu.sh usrname.txt usr_ramdel.sh create_usr.sh init.sh test1.sh usr_pswd.sh usr_rampswd.sh
对文件进行打包
问题:进入到/下打包压缩的好处??
[root@web02 ~]# cd / && tar zcvf var/spool/cron/root etc/rc.local etc/sysconfig/iptables server/scripts etc/rc.local etc/sysconfig/iptables server/scripts/ server/scripts/back.sh server/scripts/backup.sh server/scripts/bck.sh server/scripts/create_usr.sh server/scripts/cut_log.sh server/scripts/echo_path.sh server/scripts/hacker.sh server/scripts/init.sh server/scripts/ping.sh server/scripts/set-ip.sh server/scripts/shengdangshu.sh server/scripts/test1.sh server/scripts/test.sh server/scripts/usr_del.sh server/scripts/usrname.txt server/scripts/usr_pswd.sh server/scripts/usr_ram_crt.sh server/scripts/usr_ram_crt.txt server/scripts/usr_ramdel.sh server/scripts/usr_rampswd.sh server/scripts/usr.sh
[root@web02 /]# pwd
/
0230
注意打包时程序文件尽量不要和配置文件放在同一个目录里面
配置文件,程序,日志分开打包。但是太分散了也不好
创建目录Web 服务器站点目录/var/html/www和Web 服务器A 访问日志路径/app/logs
[root@web02 ~]# mkdir -p /var/html/www [root@web02 ~]# ls /var/html/www [root@web02 ~]# mkdir -p /app/logs [root@web02 ~]# ls /app/ logs
和上面一样对目录进行打包
并且要指定日期
[root@web02 ~]# cd / && tar zcvf www_$(date +%F).tar.gz var/html/www var/html/www/ [root@web02 /]# ls www_2020-01-11.tar.gz -l -rw-r--r-- 1 root root 117 Jan 11 16:23 www_2020-01-11.tar.gz [root@web02 /]# file www_2020-01-11.tar.gz www_2020-01-11.tar.gz: gzip compressed data, from Unix, last modified: Sat Jan 11 16:23:38 2020
[root@backup ~]# echo $(date +%F) 2020-01-11
[root@web02 /]# cd / && tar -zcvf conf_$(date +%F).tar.gz var/spool/cron/root /etc/rc.local etc/sysconfig/iptables server/scripts/ var/spool/cron/root tar: Removing leading `/' from member names /etc/rc.local etc/sysconfig/iptables server/scripts/ server/scripts/back.sh server/scripts/backup.sh server/scripts/bck.sh server/scripts/create_usr.sh server/scripts/cut_log.sh server/scripts/echo_path.sh server/scripts/hacker.sh server/scripts/init.sh server/scripts/ping.sh server/scripts/set-ip.sh server/scripts/shengdangshu.sh server/scripts/test1.sh server/scripts/test.sh server/scripts/usr_del.sh server/scripts/usrname.txt server/scripts/usr_pswd.sh server/scripts/usr_ram_crt.sh server/scripts/usr_ram_crt.txt server/scripts/usr_ramdel.sh server/scripts/usr_rampswd.sh server/scripts/usr.sh
[root@web02 /]# cd / && tar -zcvf logs_$(date +%F).tar.gz app/logs/ app/logs/
[root@web02 /]# find / -name "*.tar.gz" -type f /root/app/cmatrix-1.2a.tar.gz /root/haofile.tar.gz /usr/share/doc/automake-1.13.4/amhello-1.0.tar.gz /home/wang/app.tar.gz /test/m.tar.gz /test/m.conf.tar.gz /www_2020-01-11.tar.gz /conf_2020-01-11.tar.gz /logs_2020-01-11.tar.gz
0530
2)如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?()
*/5****mycmd
A每5分钟一次。
B每小时过5分钟。
C不会运行,格式无效。
简答:
1.每隔1分钟,打印一个+号到oldboy.log,请给出crontab完整命令
2.每隔2个小时将/etc/services文件打包备份到/tump下(最好每次备份成不同的备份包)
3.每天晚上12点,打包站点目录/arwww/html备份到/data目录下(最好每次备份按时间生成不同的备份包)
4.每周六、日上午9:00和下午14:00来老男孩这里学习(执行程序/server/script/oldboy.sh代替学习)
5.请描述下列路径的内容是做什么的?
/etc/sysctl.conf
/etc/rc.local
/etc/hosts/etc/fstab
/rar/log/secure
注意要养成良好的习惯,先在命令行执行
注意在定时任务计划里面不要显示压缩过程,取消选项v
xargs后面的rm只加f即可,不要加选项r
备份的文件按照时间名字
[root@web02 scripts]# cat backup.sh #!/bin/sh #backup data of web_server cd / && \ tar zcf /backup/www_$(date +%F).tar.gz var/html/www/ tar zcf /backup/conf_$(date +%F).tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables server/scripts tar zcf /backup/logs_$(date +%F).tar.gz app/logs/ #transfer to backup_server rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password #note:after directoty backup must add / #delete backup file before 7 days find /backup -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
0930
进行推送,是在删除压缩文件之前
[root@web02 scripts]# bash backup.sh sending incremental file list ./ conf_2020-01-11.tar.gz logs_2020-01-11.tar.gz www_2020-01-11.tar.gz sent 7,527 bytes received 84 bytes 724.86 bytes/sec total size is 7,204 speedup is 0.95
已经推送到了服务端
[root@backup backup]# ls conf_2020-01-11.tar.gz logs_2020-01-11.tar.gz test.txt www_2020-01-11.tar.gz
[root@backup backup]# ls -lt total 16 -rw-r--r-- 1 rsync rsync 113 Jan 11 17:01 logs_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 6974 Jan 11 17:01 conf_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 117 Jan 11 17:01 www_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 0 Jan 11 15:42 test.txt
备份服务器上要按照备份数据服务器的内网 IP 为目录保存备份
涉及到获取IP地址的问题
工作中越简单越好
[root@web02 scripts]# grep ADDR /etc/sysconfig/network-scripts/ifcfg-eth1 IPADDR=172.16.1.8 IPV6_ADDR_GEN_MODE=stable-privacy [root@web02 scripts]# grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth1 IPADDR=172.16.1.8
[root@web02 scripts]# grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth1 | cut -d= -f2 172.16.1.8
问题:为什么是$3
这样取容易出错
[root@web02 scripts]# ifconfig eth1 eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.16.1.8 netmask 255.255.0.0 broadcast 172.16.255.255 inet6 fe80::787b:a3a1:ead:b12e prefixlen 64 scopeid 0x20<link> inet6 fe80::5e65:529b:4fae:7fc3 prefixlen 64 scopeid 0x20<link> inet6 fe80::e654:55e2:8c88:ecfb prefixlen 64 scopeid 0x20<link> ether 00:0c:29:5c:92:40 txqueuelen 1000 (Ethernet) RX packets 245 bytes 16023 (15.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 113 bytes 20611 (20.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@web02 scripts]# ifconfig eth1 | awk -F "[ :]+" 'NR==2 {print $3}' 172.16.1.8
1330
在定时任务脚本里面定义变量ip和path
简化书写过程
1740
注意加不加/都可以,只要不加P
cd / && \
我是进入到/,后面的文件和目录没有加/
[root@web02 scripts]# cat backup.sh #!/bin/sh ip=$(grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth1 | cut -d= -f2) path="/backup/$ip" [ ! -d $path ] && mkdir $path -p #backup data of web_server cd / && \ tar zcf $path/www_$(date +%F).tar.gz var/html/www/ tar zcf $path/conf_$(date +%F).tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables server/scripts tar zcf $path/logs_$(date +%F).tar.gz app/logs/ #transfer to backup_server rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password #note:after directoty backup must add / #delete backup file before 7 days find /backup -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
执行脚本之前把备份目录里面的内容清空
[root@web02 scripts]# ls /backup/ conf_2020-01-11.tar.gz logs_2020-01-11.tar.gz www_2020-01-11.tar.gz hahah test.txt [root@web02 scripts]# rm -rf /backup/* [root@web02 scripts]# ls /backup/
[root@web02 scripts]# bash backup.sh sending incremental file list ./ 172.16.1.8/ 172.16.1.8/conf_2020-01-11.tar.gz 172.16.1.8/logs_2020-01-11.tar.gz 172.16.1.8/www_2020-01-11.tar.gz sent 7,590 bytes received 92 bytes 731.62 bytes/sec total size is 7,274 speedup is 0.95 [root@web02 scripts]# ls /backup/ 172.16.1.8 [root@web02 scripts]# ls /backup/172.16.1.8/ conf_2020-01-11.tar.gz logs_2020-01-11.tar.gz www_2020-01-11.tar.gz [root@web02 scripts]# tree /backup/ /backup/ └── 172.16.1.8 ├── conf_2020-01-11.tar.gz ├── logs_2020-01-11.tar.gz └── www_2020-01-11.tar.gz 1 directory, 3 files
[root@backup backup]# rm -rf * [root@backup backup]# ls [root@backup backup]# ls 172.16.1.8 [root@backup backup]# tree . . └── 172.16.1.8 ├── conf_2020-01-11.tar.gz ├── logs_2020-01-11.tar.gz └── www_2020-01-11.tar.gz 1 directory, 3 files
第3个里程碑创建定时任务
定时任务脚本已经创建好了
[root@web02 scripts]# pwd /server/scripts [root@web02 scripts]# ls /server/scripts/backup.sh /server/scripts/backup.sh [root@web02 scripts]# ls /server/scripts/backup.sh -l -rw-r--r-- 1 root root 704 Jan 11 17:26 /server/scripts/backup.sh [root@web02 scripts]#
[root@web02 scripts]# cat /var/spool/cron/root 0 0 * * * /server/scripts/backup.sh &>/dev/null
[root@web02 scripts]# crontab -l 0 0 * * * /server/scripts/backup.sh &>/dev/null
2230
在备份服务器上创建删除脚本
难点:备份服务器上保留每周一的所有数据副本,其它要保留 6 个月的数据副本
0000***/bin/sh/server/scripts/del.sh 〉/dev/null 2〉&1
问题二、如果有100台服务器需要备份数据,该如何制定备份方案及具体实施?
问题三、如何在备份数据后,把备份的成功及失败结果信息发给系统管理员邮箱中
解答:很多同学说在web客户端备份完毕发邮件给管理员,有100台客户端,老大疯了。早晨开邮箱100封垃圾邮件。这个思路不对。
正确思路:服务器端检查结果:
1)du-sh/backup/*>/tmp/bak.log或者对比大小,对比修改时间给出成功失败的结果。
2)打包,推送,在推送一个flag(ip+时间的文件名),本地清理7天前的。
3)手工或定时的解包,模拟数据恢复来确认数据备份的完整性。
教训:你以为备份了,实际更没备份,你又没检查,这个时候出问题了,你在重视,但是为时已晚。
4)flag+数据包md5sum指纹。
老男孩老师写的脚本
[ root@ web scripts]# cat backup. sh #!/bin/sh IP=S(ifconfig ethllawk-F[]+'"NR==2{ print $4)) Path="/backup/SIP" [!-d $Path]&& mkdir $Path-p # backup tar zcf $Path/www_S(date+%F). tar. gz/var/html/www/ tar zcf $Path/conf_$(date +%F). tar. gz /var/spool/cron/root /etc/rc. local/etc/sysconfig/iptables/server/scripts tar zcf SPath/logs_S(date+%F). tar. gz/app/logs/ # to bak server rsync-avz/backup/rsync_backup@10.0.0.8: backup --password- file=/etc/rsync. password # del find /backup-type f-name"*. tar. gz"-mtime +7kargs rm-f
小插曲——学员就业情况
老男孩老师您好:
我是网络班的学生:梁恩宇!首先非常感谢您,因为我今天终于得到了新工作的offer了。我是去年11月位,开始报读的网络培训班。
在此之前我的工作是广州一家网络公司做网络管理员,薪资是4K。
我学习linux,起初也是多亏了我的部门经理的指点,说真的我非常感谢他!
因为是他为我指明了前进的道路。
报读了培训班后,我每天晚上下班回来第一件事就是看视频,不断的学习。
有时候甚至学到一两点钟,可能是我读的专业比较接近吧,有些基础,所以上手也比较快!
自昨天开始,我总共面试了3家公司,包括今天早上的这家。终于我被录取了!
首先面试开始,我先自我介绍,然后直接跟他谈我之前做过的架构,我讲的是第5套架构。
架构图我事先在笔记本上画好了的,面试的时候直接拿出来讲解给他听!
等我讲完之后,他问到了我主要负责哪些模块的工作!
我说我一个人不可能完成整个架构,我只负责web服务,nagios监控,mysql数据库主从同步,读写分离。
还有lvs+keepalived负载均衡方面的技术。
然后他又问到:mysql数据库有没有遇到什么样的瓶颈?
我说:当然遇到过。在初期的时候,整个架构都很正常。
但是随着我们的业务逐步扩大,就出现了以上问题。
我是用memcache缓存解决的,然后对mysql做了慢查询,和对索引进行优化。
当然我们有自己的DBA,他主要负责这方面的工作!
他又问:nagios监控,主要监控哪些服务呢?怎么知道数据库出现问题?
我说:主要监控mysql的两个线程。分部是:I0和SQL两个线程。
如果这两个线程的状态为NO的话,就说明出现问题了。
这样我在nagios里面就可以看到状态了。
监控主从同步,我们可以用nagios自带的check_mysql插件来完成,还可以自定义插件来完成(用shell脚本编写)。
最后他问:那你们公司整个业务上线的流程是怎么样的呢?
这个点让我有些迷糊。因为我不太清楚从开发到运维整个流程。
所以我说这些工作是我经理负责的,我不太清楚。最后就没问什么了!
然后就是人事跟我谈薪资待遇方面的问题了!
待遇是:试用期8K转正是:10k工作:包三餐,然后每个月有补助等相关的福利。
最后,还是非常感谢老男孩老师,跟我的经理!
也跟同学们说下,其实linux不难,贵在坚持!而我就是这么坚持过来的!
8)*需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结
果信息发给系统管理员邮箱中(发邮件技巧见 VIP 群资料)
问题:税+保险+公积金???
[root@backup ~]# date --help | grep %A %A locale's full weekday name (e.g., Sunday) [root@backup ~]# date +%A Saturday [root@backup ~]# date Sat Jan 11 19:55:38 CST 2020
0330
在web服务器上对脚本进行修改
#backup data of web_server cd / && \ tar zcf $path/www_$(date +%F).tar.gz var/html/www/ && \ tar zcf $path/conf_$(date +%F).tar.gz var/spool/cron/root etc/rc.local etc/syscon fig/iptables server/scripts && \ tar zcf $path/logs_$(date +%F).tar.gz app/logs/ && \ touch $path/flag_$(date +%F)
0510
为每个文件建立md5值
文件不变那么md5值就不会变化
[root@web02 ~]# find /backup/ -type f -name "*$(date +%F).tar.gz" | xargs md5sum e0530f1ab512d7e59ed3b3f851629794 /backup/172.16.1.8/www_2020-01-11.tar.gz f9d2bdd60650cd1eec8f0c7becb5eb42 /backup/172.16.1.8/conf_2020-01-11.tar.gz 4e46172b6136413278c4a4d119e2269b /backup/172.16.1.8/logs_2020-01-11.tar.gz
并且重定向到文件里面
[root@web02 ~]# cat /backup/flag_$(date +%F) e0530f1ab512d7e59ed3b3f851629794 /backup/172.16.1.8/www_2020-01-11.tar.gz f9d2bdd60650cd1eec8f0c7becb5eb42 /backup/172.16.1.8/conf_2020-01-11.tar.gz 4e46172b6136413278c4a4d119e2269b /backup/172.16.1.8/logs_2020-01-11.tar.gz [root@web02 ~]# ll /backup/flag_$(date +%F) -rw-r--r-- 1 root root 227 Jan 11 20:27 /backup/flag_2020-01-11
注意不需要创建flag文件
[root@web02 ~]# cat /server/scripts/backup.sh #!/bin/sh ip=$(grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth1 | cut -d= -f2) path="/backup/$ip" [ ! -d $path ] && mkdir $path -p #backup data of web_server cd / && \ tar zcf $path/www_$(date +%F).tar.gz var/html/www/ && \ tar zcf $path/conf_$(date +%F).tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables server/scripts && \ tar zcf $path/logs_$(date +%F).tar.gz app/logs/ && \ touch $path/flag_$(date +%F) find /backup/ -type f -name "*$(date +%F).tar.gz" | xargs md5sum >> $path/flag_$(date +%F) #transfer to backup_server rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password #note:after directoty backup must add / #delete backup file before 7 days find /backup -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
删除服务端和客户端备份目录下的文件
[root@web02 ~]# rm -rf /backup/* [root@web02 ~]# ls /backup/
[root@backup ~]# ls /backup/ 172.16.1.8 [root@backup ~]# rm -rf /backup/* [root@backup ~]# ls /backup/
在客户端执行脚本文件
[root@web02 ~]# bash /server/scripts/backup.sh sending incremental file list ./ 172.16.1.8/ 172.16.1.8/conf_2020-01-11.tar.gz 172.16.1.8/flag_2020-01-11 172.16.1.8/logs_2020-01-11.tar.gz 172.16.1.8/www_2020-01-11.tar.gz sent 4,382 bytes received 111 bytes 427.90 bytes/sec total size is 4,100 speedup is 0.91 [root@web02 ~]# ls /backup/ 172.16.1.8 [root@web02 ~]# tree /backup/ /backup/ └── 172.16.1.8 ├── conf_2020-01-11.tar.gz ├── flag_2020-01-11 ├── logs_2020-01-11.tar.gz └── www_2020-01-11.tar.gz 1 directory, 4 files
[root@backup ~]# ls /backup/ 172.16.1.8 [root@backup ~]# tree /backup/ /backup/ └── 172.16.1.8 ├── conf_2020-01-11.tar.gz ├── flag_2020-01-11 ├── logs_2020-01-11.tar.gz └── www_2020-01-11.tar.gz 1 directory, 4 files [root@backup ~]# ll /backup/ total 0 drwxr-xr-x 2 rsync rsync 118 Jan 11 20:41 172.16.1.8 [root@backup ~]# cd /backup/ [root@backup backup]# ls 172.16.1.8 [root@backup backup]# cd 172.16.1.8/ [root@backup 172.16.1.8]# ls conf_2020-01-11.tar.gz logs_2020-01-11.tar.gz flag_2020-01-11 www_2020-01-11.tar.gz [root@backup 172.16.1.8]# ll total 16 -rw-r--r-- 1 rsync rsync 3643 Jan 11 20:41 conf_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 227 Jan 11 20:41 flag_2020-01-11 -rw-r--r-- 1 rsync rsync 113 Jan 11 20:41 logs_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 117 Jan 11 20:41 www_2020-01-11.tar.gz [root@backup 172.16.1.8]# cat flag_2020-01-11 85a36164dd529200249670bc03aebd01 /backup/172.16.1.8/www_2020-01-11.tar.gz 82527ade328ff785a92361b730169e8d /backup/172.16.1.8/conf_2020-01-11.tar.gz 6498826dc15f26afd2835f39b25ae8aa /backup/172.16.1.8/logs_2020-01-11.tar.gz
总结思路:
打包文件和目录都成功了,那么就会创建md5值,并且重定向到文件里面
并且把md5值的文件和打包文件都推送到服务端
然后将存放md5值的文件和打包文件的md5值进行比较,如果没有变化,那么说明文件没有损坏
直接使用md5命令检查文件是否毁坏,这样更方便
[root@backup ~]# ls /backup/172.16.1.8/ conf_2020-01-11.tar.gz logs_2020-01-11.tar.gz flag_2020-01-11 www_2020-01-11.tar.gz [root@backup ~]# ls /backup/172.16.1.8/ -l total 16 -rw-r--r-- 1 rsync rsync 3643 Jan 11 20:41 conf_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 227 Jan 11 20:41 flag_2020-01-11 -rw-r--r-- 1 rsync rsync 113 Jan 11 20:41 logs_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 117 Jan 11 20:41 www_2020-01-11.tar.gz [root@backup ~]# ls /backup/172.16.1.8/ -lt total 16 -rw-r--r-- 1 rsync rsync 227 Jan 11 20:41 flag_2020-01-11 -rw-r--r-- 1 rsync rsync 113 Jan 11 20:41 logs_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 3643 Jan 11 20:41 conf_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 117 Jan 11 20:41 www_2020-01-11.tar.gz [root@backup ~]# md5sum -c /backup/172.16.1.8/flag_2020-01-11 /backup/172.16.1.8/www_2020-01-11.tar.gz: OK /backup/172.16.1.8/conf_2020-01-11.tar.gz: OK /backup/172.16.1.8/logs_2020-01-11.tar.gz: OK
注意md5值和文件大小无关
[root@backup ~]# find / -type f -size +100M /proc/kcore find: ‘/proc/7888/task/7888/fdinfo/5’: No such file or directory find: ‘/proc/7888/fdinfo/6’: No such file or directory /sys/devices/pci0000:00/0000:00:0f.0/resource1_wc /sys/devices/pci0000:00/0000:00:0f.0/resource1 /root/app/03.txt /root/proc/kcore /usr/lib/locale/locale-archive /opt/1G [root@backup ~]# ll -dh /root/proc/kcore -r--------. 1 root root 214M Dec 13 21:07 /root/proc/kcore [root@backup ~]# md5sum /root/proc/kcore 9d6d96e670ea573201dd55ca7a8dfae8 /root/proc/kcore
[root@backup ~]# du -sh /root/proc/kcore 214M /root/proc/kcore
对文件进行毁坏,会显示failed
[root@backup ~]# ls /backup/172.16.1.8/ conf_2020-01-11.tar.gz logs_2020-01-11.tar.gz flag_2020-01-11 www_2020-01-11.tar.gz [root@backup ~]# ls /backup/172.16.1.8/ -l total 16 -rw-r--r-- 1 rsync rsync 3643 Jan 11 20:41 conf_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 227 Jan 11 20:41 flag_2020-01-11 -rw-r--r-- 1 rsync rsync 113 Jan 11 20:41 logs_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 117 Jan 11 20:41 www_2020-01-11.tar.gz [root@backup ~]# ls /backup/172.16.1.8/ -lt total 16 -rw-r--r-- 1 rsync rsync 227 Jan 11 20:41 flag_2020-01-11 -rw-r--r-- 1 rsync rsync 113 Jan 11 20:41 logs_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 3643 Jan 11 20:41 conf_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 117 Jan 11 20:41 www_2020-01-11.tar.gz [root@backup ~]# cp /backup/172.16.1.8/www_2020-01-11.tar.gz{,.bak} [root@backup ~]# ls /backup/172.16.1.8/ -lt total 20 -rw-r--r-- 1 root root 117 Jan 11 20:59 www_2020-01-11.tar.gz.bak -rw-r--r-- 1 rsync rsync 227 Jan 11 20:41 flag_2020-01-11 -rw-r--r-- 1 rsync rsync 113 Jan 11 20:41 logs_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 3643 Jan 11 20:41 conf_2020-01-11.tar.gz -rw-r--r-- 1 rsync rsync 117 Jan 11 20:41 www_2020-01-11.tar.gz [root@backup ~]# md5sum -c /backup/172.16.1.8/flag_2020-01-11 /backup/172.16.1.8/www_2020-01-11.tar.gz: OK /backup/172.16.1.8/conf_2020-01-11.tar.gz: OK /backup/172.16.1.8/logs_2020-01-11.tar.gz: OK [root@backup ~]# echo hahaha >> /backup/172.16.1.8/www_2020-01-11.tar.gz [root@backup ~]# md5sum -c /backup/172.16.1.8/flag_2020-01-11 /backup/172.16.1.8/www_2020-01-11.tar.gz: FAILED /backup/172.16.1.8/conf_2020-01-11.tar.gz: OK /backup/172.16.1.8/logs_2020-01-11.tar.gz: OK md5sum: WARNING: 1 computed checksum did NOT match [root@backup ~]# md5sum -c /backup/172.16.1.8/flag_2020-01-11 | grep FAILED md5sum: WARNING: 1 computed checksum did NOT match /backup/172.16.1.8/www_2020-01-11.tar.gz: FAILED
1700
创建发送邮件的文件
[root@backup ~]# cat /server-scripts/chk_bak.sh #/bin/bash find /backup -type f -name "flag_$(date +%F)" | xargs md5sum -c | grep FAILED >/opt/md5.result_$(date +%F)txt mail -s "$(date +%F_%T) backup_result.message" 13203286779@163.com < /opt/md5.result_$(date +%F)txt
注意时间的格式问题
[root@backup ~]# date +%U%T 0121:15:03 [root@backup ~]# date +%F%T 2020-01-1121:15:09 [root@backup ~]# date +%F %T date: extra operand ‘%T’ Try 'date --help' for more information. [root@backup ~]# date +%F_%T 2020-01-11_21:15:17
开启邮件服务
执行脚本
邮件收到的结果
[root@backup ~]# cat /opt/md5.result_2020-01-11txt /backup/172.16.1.8/www_2020-01-11.tar.gz: FAILED [root@backup ~]#
2100
如果没有flag,那么打包会出问题,可以试试
那么/opt/md5.result_2020-01-11txt 不会有内容
find /backup -type f -name "flag_$(date +%F)"xargs md5sum -cgrep FAILED >/opt/mai
|1_body_$(date +%F). txt
if [!-f /opt/mail_body_$(date +%F). txt ll-s /opt/mail_body_$(date +%F). txt]
then echo "backup is error, pls view back server">>/opt/mail_body_$(date +%F). txt mail-s "$(date +%U%T) back"49000448@ qq. com〈/opt/mail_body_$(date +%F). txt
如果是没有flag文件,那么就添加判断语句,改进脚本
这种情况没有写出来
3100
拷贝脚本
思想:
检查最后一台服务器的情况就可以了
如果最后一台服务器没有问题,那么前面的程序都没问题的
问题:备份服务器上, 保留每周一的所有数据副本,其它要保留 6个月的数据副本
这句话的意思是保留6个月以内的所有数据,同时保留6个月以前每周一的数据
[root@backup ~]# touch aa.$(date +%F_%A).tar.gz [root@backup ~]# ll aa.2020-01-11_Saturday.tar.gz -rw-r--r-- 1 root root 0 Jan 11 22:18 aa.2020-01-11_Saturday.tar.gz [root@backup ~]# find /root -type f -name "*Saturday*" /root/aa.2020-01-11_Saturday.tar.gz
注意要先使用手机发送短信
并且点击我已发送
在设置客户端授权码
我设置为oldboy123
E:\老男孩Linux运维课程视频\feiq\Recv Files\69预习视频\老男孩教育脱产63期-day34-综合架构全网备份项目\对于全网备份的暂时性完美脚本编写
下面是上机测验需要的脚本
[root@backup shell_scripts]# rz -E rz waiting to receive. [root@backup shell_scripts]# ls mail.rc mail.rc [root@backup shell_scripts]# ls mail.rc -l -rw-r--r-- 1 root root 2118 Aug 18 14:25 mail.rc [root@backup shell_scripts]# ll web.sh -rw-r--r-- 1 root root 2042 Aug 18 17:28 web.sh [root@backup shell_scripts]# ll rsync端.sh -rw-r--r-- 1 root root 772 Aug 18 17:36 rsync端.sh [root@backup shell_scripts]# ll nfs.sh -rw-r--r-- 1 root root 2034 Aug 18 17:25 nfs.sh