已知3臺服務器主機名分別爲web0一、backup、nfs01,主機信息見下表:html
服務器說明 | 外網IP | 內網IP | 主機名稱 |
---|---|---|---|
web服務器 | 10.0.0.7/24 | 172.16.1.7/24 | web01 |
nfs存儲服務器 | 10.0.0.31/24 | 172.16.1.31/24 | nfs01 |
rsync備份服務器 | 10.0.0.41/24 | 172.16.1.41/24 | backup |
具體要求以下:
(1)全部服務器的備份目錄必須都爲/backup。
(2)要備份的系統配置文件包括但不限於:
a.定時任務服務的配置文件(/var/spool/cron/root)(適合web和nfs服務器)。
b.開機自啓動的配置文件(/etc/rc.local)(適合web和nfs服務器)。
c.平常腳本的目錄 (/server/scripts)(適合web和nfs服務器)。
d.防火牆iptables或firewalld配置文件(/etc/sysconfig/iptables或 /etc/firewalld)(適合web和nfs服務器)。
e.本身思考下還有什麼須要備份呢?
(3)Web服務器站點目錄假定爲(/var/html/www)(適合web服務器)。
(4)Web服務器A訪問日誌路徑假定爲(/app/logs)(適合web服務器)。
(5)Web服務器保留打包後的7天的備份數據便可(本地留存不能多於7天,由於太多硬盤會滿)
(6)備份服務器上,保留最近6個月的備份數據,同時保留6個月以前每週一的全部數據
(7)備份服務器上要按照備份數據服務器的內網IP爲目錄保存備份,備份的文件按照時間名字保存。
(8)須要確保備份的數據儘可能完整正確,在備份服務器上對備份的數據進行檢查,把備份的成功及失敗結果信息發給系統管理員郵箱中
(9)搭建NFS存儲實現web服務器網站圖片、附件共享
(10)NFS存儲數據實時備份
要求總結
(1)天天晚上00點整在web服務器上打包備份系統配置文件、網站程序目錄及訪問日誌並經過rsync命令推送備份服務器backup上備份保留。
(2)天天晚上00點整在nfs服務器上打包備份系統配置文件,並經過rsync命令推送備份服務器backup上備份保留。
思路:
備份思路能夠是先在本地按日期打包,而後再推到備份服務器backup上,備份完成後要進入解壓文件,查看一下是否有內容,nfs存儲服務器同web服務器,實際工做中就是所有的服務器。
linux
(1)首先三臺服務器的備份目錄都要爲backupweb
mkdir /backup #web01,nfs01,backup服務器都要建立backup
(2)要備份的系統配置文件包括但不限於
a.定時任務服務的配置文件(/var/spool/cron/root)(適合web和nfs服務器)。
b.開機自啓動的配置文件(/etc/rc.local)(適合web和nfs服務器)。
c.平常腳本的目錄 (/server/scripts)(適合web和nfs服務器)。
d.防火牆iptables或firewalld配置文件(/etc/sysconfig/iptables或 /etc/firewalld)(適合web和nfs服務器)。
vim
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服務器)。bash
[root@web01 ~]# mkdir /var/html/www -p
(4)Web服務器A訪問日誌路徑假定爲(/app/logs)(適合web服務器)。服務器
[root@web01 ~]# 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個月以前每週一的全部數據。app
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 rsync_backup@172.16.1.41::backup/week01/ find /backup/ -path "/backup/week01" -prune -o -type f -name "*.tar.gz" -print |xargs rm
(7)備份服務器上要按照備份數據服務器的內網IP爲目錄保存備份,備份的文件按照時間名字保存。ssh
[root@backup ~]# mkdir /backup/172.16.1.7 172.16.1.31
(8)須要確保備份的數據儘可能完整正確,在備份服務器上對備份的數據進行檢查,把備份的成功及失敗結果信息發給系統管理員郵箱中
post
rsync -avz /backup/ rsync_backup@172.16.1.41::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 from=1396344xxxx@163.com smtp=smtp.163.com set smtp-auth-user=1396344xxxx@163.com smtp-auth-password=ichn123456 smtp-auth=login # 將這兩條命令添加到最後一行 systemctl restart postfix.service # 重啓郵件 echo "linux ichn62"|mail -s "test_mail" 7880xxxx@qq.com # 測試郵件是否能發送 mail -s "test_mail" 7880xxxx@qq.com </etc/hosts # 測試郵件是否能發送
整理以上命令編寫腳本
mkdir /server/scripts/ #建立腳本目錄 [root@web01 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/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password # 刪除七天之前備份數據 find $Dir_info -type f -mtime +7 -name "*.tar.gz"|xargs rm 2>/dev/null
mkdir /server/scripts/ #建立腳本目錄 [root@nfs01 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/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password # 刪除七天之前備份數據 find $Dir_info -type f -mtime +7 -name "*.tar.gz"|xargs rm 2>/dev/null
mkdir /server/scripts/ #建立腳本目錄 [root@backup scripts]#vi backup_check.sh [root@backup 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" 1138108293@qq.com </tmp/check_info.txt #刪除6個月以前數據 find /backup/ -type f -name "*.tar.gz" -mtime +180 ! -name "*星期1.tar.gz"|xargs rm 2>/dev/null
編寫定時任務
WEB服務端:
[root@web01 /]#crontab -e # backup data 00 00 * * * /bin/sh /server/scripts/system_backup.sh &>/dev/null
問題: 如何備份備份週一的數據
7月18日 週四 產生一天週四數據 7月19日 週五 0點備份 system_info_2019-07-19_星期五.tar,gz
7月19日 週五 產生一天週五數據 7月20日 週六 0點備份 system_info_2019-07-20_星期六.tar,gz
7月20日 週六 產生一天週六數據 7月21日 週日 0點備份 system_info_2019-07-21_星期日.tar,gz
7月21日 週日 產生一天週日數據 7月22日 週一 0點備份 system_info_2019-07-22_星期一.tar,gz
兩種方式:
方式一: 排除週二
方式二: $(date %F -d -1day)
NFS客戶端:
[root@nfs01 /]#crontab -e # backup data 00 00 * * * /bin/sh /server/scripts/system_backup.sh &>/dev/null
backup服務端:
[root@backup /]#crontab -e 0 6 * * * /bin/sh /server/scripts/backup_check.sh &>/dev/null
第一種方式:kill
ps -ef|grep sshd #查看進程號 [root@web01 ~]#ps -ef|grep sshd root 1537 1229 0 09:06 ? 00:00:00 sshd: root@pts/0 kill 1537 # 殺掉sshd服務,有提示信息
第二種方式:killall
yum install -y psmisc # 安裝killall ps -ef|grep sshd #查看進程號 [root@web01 ~]#ps -ef|grep sshd root 1537 1229 0 09:06 ? 00:00:00 sshd: root@pts/0 killall sshd # 殺掉sshd 有提示信息
第三種方式:pkill (模糊殺手)
ps -ef|grep sshd #查看進程號 [root@web01 ~]#ps -ef|grep sshd root 1537 1229 0 09:06 ? 00:00:00 sshd: root@pts/0 pkill sshd # 模糊殺掉與有sshd關係的服務 沒有提示信息