目錄html
標籤(空格分隔): Linux服務搭建-陳思齊nginx
---本教學筆記是本人學習和工做生涯中的摘記整理而成,此爲初稿(尚有諸多不完善之處),爲原創做品,容許轉載,轉載時請務必以超連接形式標明文章原始出處,做者信息和本聲明。不然將追究法律責任。http://www.cnblogs.com/chensiqiqi/web
某公司裏有一臺NFS服務器,裏面的數據很重要,可是若是硬盤壞了,數據就會丟失,如今領導要求你把數據在其餘 機器上作一個週期性定時備份。要求以下:shell
天天晚上00點整在NFS服務器nfs01上打包備份網站程序目錄等並經過rsync命令推送到備份服務器backup上備份保存(備份思路 能夠是先在本地按IP地址+日期打包,而後再利用rsync推送到備份服務器上)。NFS存儲服務器同Web服務器,實際工做中就是所有的服務器。安全
具體要求以下:bash
- [x] NFS服務器nfs01和備份服務器backup的備份目錄必須都爲/backup
- [x] 要備份的系統配置文件包括但不限於:
- 定時任務服務的配置文件(/var/spool/cron/root)
- 開機自啓動的配置文件(/etc/rc.local)
- 平常腳本的目錄(/server/scripts)
- 防火牆iptables的配置文件(/etc/sysconfig/iptables)
- 本身思考下還有什麼須要備份呢
- [x] Web服務器站點目錄假定爲(/var/html/www)
- [x] Web服務器A訪問日誌路徑假定爲(/app/logs)
- [x] Web服務器保留打包後的7天的備份數據便可(本地留存不能多於7天,由於太多硬盤會滿)
- [x] 備份服務器上,保留每週一的全部數據副本,其它要保留6個月的數據副本
- [x] 備份服務器上要按照備份數據服務器的內網IP爲目錄保存備份,備份的文件按照時間名字保存。
- [x] 須要確保備份的數據儘可能完整正確,在備份服務器上對備份的數據進行檢查,把備份的成功及失敗結果信息發送給系統管理員郵箱中。
操做系統服務器
[root@backup ~]# cat /etc/redhat-release CentOS release 6.8 (Final)
內核版本網絡
[root@backup ~]# uname -r 2.6.32-642.el6.x86_64
主機網絡參數設置:app
主機名 | 網卡eth0 | 網卡eth1 | 用途 |
---|---|---|---|
backup | 10.0.0.41 | 172.16.1.41 | rsync服務端 |
nfs01 | 10.0.0.31 | 172.16.1.31 | NFS存儲服務器客戶端 |
web01 | 10.0.0.8/24 | 172.16.1.8/24 | nginx web服務器 |
1)確認軟件是否安裝:tcp
[root@backup ~]# rpm -qa rsync rsync-3.0.6-12.el6.x86_64
2)配置rsyncd.conf配置文件
#rsync_config____start #created by chensiqi 22:00 2017-3-6 #blog:http://www.cnblogs.com/chensiqiqi/ ##rsyncd.conf start## # 用戶 uid = rsync # 組 gid = rsync # 程序安全設置 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 ################################### [backup] # 使用目錄 path = /backup/ # 有錯誤時忽略 ignore errors # 可讀可寫(true或false) read only = false # 阻止遠程列表(不讓經過遠程方式看服務端有啥) list = false # 容許IP hosts allow = 172.16.1.0/24 # 禁止IP hosts deny = 0.0.0.0/32 # 虛擬用戶 auth users = rsync_backup # 存放用戶和密碼的文件 secrets file = /etc/rsync.password ##rsync_config____end##
3)建立rsync帳戶及共享目錄並修改目錄屬主爲rsync
[root@backup ~]# useradd -M -s /sbin/nologin rsync [root@backup ~]# mkdir /backup [root@backup ~]# chown -R rsync /backup
4)啓動服務:rsync --daemon
[root@backup ~]# rsync --daemon [root@backup ~]# ss -antup | grep rsync tcp LISTEN 0 5 :::873 :::* users:(("rsync",1851,5)) tcp LISTEN 0 5 *:873 *:* users:(("rsync",1851,4))
5)製做服務啓動腳本/etc/init.d/rsyncd
#!/bin/bash #author:Mr.chen # chkconfig:35 13 91 # description:This is Rsync service management shell script # Source function library . /etc/rc.d/init.d/functions start(){ rsync --daemon if [ $? -eq 0 -a `ps -ef|grep -v grep|grep rsync|wc -l` -gt 0 ];then action "Starting Rsync:" /bin/true sleep 1 else action "Starting Rsync:" /bin/false sleep 1 fi } stop(){ pkill rsync;sleep 1;pkill rsync if [ `ps -ef|grep -v grep|grep "rsync --daemon"|wc -l` -lt 1 ];then action "Stopping Rsync: " /bin/true sleep 1 else action "Stopping Rsync:" /bin/true sleep 1 fi } case "$1" in start) start; ;; stop) stop; ;; restart|reload) stop; start; ;; *) echo $"Usage: $0 {start|stop|restart|reload}" ;; esac
6)啓動腳本放到/etc/init.d目錄下,增長x執行權限並添加開機啓動
[root@backup ~]# chmod +x /etc/init.d/rsyncd [root@backup ~]# /etc/init.d/rsyncd stop 已終止 [root@backup ~]# /etc/init.d/rsyncd start Starting Rsync: [肯定] [root@backup ~]# chkconfig rsyncd on [root@backup ~]# chkconfig --list | grep rsync rsyncd 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
7)建立rsync虛擬帳戶名和密碼,並賦予密碼文件600權限
[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.password [root@backup ~]# cat /etc/rsync.password rsync_backup:123456 [root@backup ~]# chmod 600 /etc/rsync.password [root@backup ~]# ll /etc/rsync.password -rw-------. 1 root root 20 3月 7 20:54 /etc/rsync.password
8)配置Rsync服務器端檢查腳本
#!/bin/bash # 全網服務器備份解決方案_rsync服務器端檢查腳本 # author:Mr.chen # 2017-3-8 . /etc/init.d/functions Path=/backup fileName="md5sum.txt" # 一共有幾臺客戶端在推送數據 rsync_ClientNum=2 /etc/init.d/postfix status &>/dev/null || /etc/init.d/postfix start if [ `find $Path/ -type f -name "md5sum*" | wc -l` -eq $rsync_ClientNum ];then for filepath in `find $Path/ -type f -name "md5sum*"` do /usr/bin/md5sum -c $filepath if [ $? -eq 0 ];then action "${filepath}備份正常!" /bin/true rm -rf $filepath else action "${filepath}備份異常!" /bin/false echo "${filepath}備份異常!" | mail -s "$(date +%F)備份檢查告警" xxxxxxxx@qq.com fi done else echo 「Rsync客戶端推送不完整!」 echo "Rsync推送不完整" | mail -s "$(date +%F)備份推送告警" xxxxxxxxx@qq.com fi # 找出超過180天的不是周1的備份文件並刪除 find $Path/ ! -name "*_2.tar.gz" -mtime +180 -type f | xargs rm -rf
9)將腳本掛定時任務
00 6 * * * /bin/sh /server/scripts/rsync_Server.sh >/dev/null 2>&1
backup服務器Rsync服務端至此配置完畢
1)只須要建立密碼文件(只包含密碼便可),並賦予密碼文件600權限
[root@nfs01 ~]# echo "123456" > /etc/rsync.password [root@nfs01 ~]# chmod 600 /etc/rsync.password
2)建立共享目錄backup
[root@nfs01 ~]# mkdir /backup
3)在客戶端進行推送測試
[root@nfs01 ~]# cd /backup [root@nfs01 backup]# touch {1..5} [root@nfs01 backup]# ls 1 2 3 4 5 [root@nfs01 backup]# rsync -avzP /backup/ rsync_backup@192.168.197.132::backup --password-file=/etc/rsync.password sending incremental file list ./ 1 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=4/6) 2 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=3/6) 3 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=2/6) 4 0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=1/6) 5 0 100% 0.00kB/s 0:00:00 (xfer#5, to-check=0/6) sent 239 bytes received 106 bytes 230.00 bytes/sec total size is 0 speedup is 0.00
4)nfs01服務器打包腳本實現
#!/bin/bash # 全網服務器備份解決方案_rsync客戶端打包腳本 # author:Mr.chen # 2017-3-7 Path=/backup backup_Server=172.16.1.41 local_IP=`/sbin/ifconfig eth1|awk -F"[ :]+" 'NR==2{print $4}'` Dir=${local_IP}_$(date +%F_%w) mkdir -p $Path/$Dir [ -f /var/spool/cron/root ] && cp -rp /var/spool/cron/root $Path/$Dir/ [ -f /etc/rc.d/rc.local ] && cp -rp /etc/rc.d/rc.local $Path/$Dir/ [ -d /server/scripts ] && cp -rp /server/scripts $Path/$Dir/ [ -d /var/html/www ] && cp -rp /var/html/www $Path/$Dir/ [ -d /app/logs ] && cp -rp /app/logs $Path/$Dir/ [ -f /etc/sysconfig/iptables ] && cp -rp /etc/sysconfig/iptables $Path/$Dir/ cd $Path tar -zcf $Path/${Dir}.tar.gz $Dir rm -rf $Path/$Dir # 建立md5sum驗證信息 /usr/bin/md5sum $Path/${Dir}.tar.gz > $Path/md5sum_$(local_IP).txt # 推送打包的文件到備份服務器 rsync -az $Path/ rsync_backup@${backupServer}::backup --password-file=/etc/rsync.password # 找出超過7天的備份並刪除 find $Path/ -name "${local_IP}*" -type f -mtime +7 | xargs rm -rf
5)將腳本掛定時任務
00 0 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1
NFS服務器Rsync客戶端至此配置完畢