Linux系統crond、rsync、打包備份數據操做實戰

Linux系統crond、rsync、打包備份數據操做實戰web


前面介紹了系統中定時任務、rsync、打包等各類操做,同時也介紹了實際生產環境中的各種案例,今天咱們結合這幾種功能作一次實戰(備份數據)bash

一:項目背景
服務器

某公司WEB服務器數據很是重要,可是若是硬件出現故障,數據就會丟失,人工備份比較費時費力,因些須要進行相關自動備份,而且要備份至指定的備份服務器上app

具體備分內容有:tcp

一、網站站點全部目錄及相關文件ide

二、系統相關的配置文件測試

三、網站的訪問日誌文件網站

具體要求以下:(天天0點備份)ui

一、WEB服務器上的數據和備份服務器上的數據都存放在/backup/下(規範)spa

二、系統文件各種配置文件(定時任務、腳本等)

三、web服務器站點目錄(/var/web/www)

四、web服務器日誌目錄(/app/logs)

五、web服務器數據只保留7天內的備分內容,備份服務器上保留180天內的數據

六、備份服務器上的備份要求按照服務器IP爲目錄保存,備份的數據需按時間作爲文件名

二:需求分析

鑑於目前此種需求進行分析,能夠得出操做思路爲

一、備份服務器B配置rsync服務,作爲服務端

二、web服務器配置爲rsync客戶端

三、web服務器上打包備份數據至指定的目錄/backup/下

四、而後利用rsync服務推送備份數據至備份服務器上

五、以上配置完成後,可手工測試,若是測試成功,可將上述配置打包寫成腳本

六、將腳本寫入定時任務,週期性進行備份數據

三:項目結構圖

wKiom1hH_QDBxkfLAACptUmJ7bA425.jpg-wh_50

四:備份服務器操做過程

一、服務器環境

[root@Backup ~]# cat /etc/redhat-release

CentOS release 6.5 (Final)

[root@Backup ~]# uname -r

2.6.32-431.el6.x86_64

二、配置rsync操做過程

[root@Backup ~]# cat /etc/rsyncd.conf

cat: /etc/rsyncd.conf: No such file or directory

若是有此文件,配置前要進行備份,再進行相關配置

配置rsync服務

[root@Backup ~]# cat /etc/rsyncd.conf

##rsync config  start

##created by root 2016-08-08 15:00

##rsync.conf config start

uid = rsync

gid = rsync

use chroot = no

max connetctions = 200

timeout = 100

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

[rsync]

path = /backup/

ignore errors

read only = false

list = false

hosts allow = 192.168.1.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

##rsync config  end

添加用戶

[root@Backup ~]# useradd rsync -s /sbin/nologin -M

改變目錄權限

[root@Client ~]# chown -R rsync.rsync /backup   

配置密碼文件

[root@Backup ~]# echo "rsync_backup:rsync.conf">>/etc/rsync.password

[root@Backup ~]# cat /etc/rsync.password                            

rsync_backup:rsync.conf

改變密碼文件權限

[root@Backup ~]# chmod 600 /etc/rsync.password 

[root@Backup ~]# ls -ld /etc/rsync.password 

-rw-------. 1 root root 24 Sep  9 13:06 /etc/rsync.password

格式化文件

[root@Backup ~]# dos2unix /etc/rsyncd.conf 

dos2unix: converting file /etc/rsyncd.conf to UNIX format ...

開啓服務後臺運行

[root@Backup ~]# rsync --daemon

[root@Backup ~]# netstat -lntup|grep rsync

tcp   0    0 0.0.0.0:873     0.0.0.0:*  LISTEN   2002/rsync          

tcp   0    0 :::873             :::*           LISTEN   2002/rsync  

將服務開啓命令寫入開機自啓當中

[root@Backup ~]# echo  "##web backup by root 20160808">>/etc/rc.local;echo "/usr/bin/rsync --daemon">>/etc/rc.local

五:WEB服務器操做過程

一、服務器環境

[root@WEB ~]# cat /etc/redhat-release

CentOS release 6.5 (Final)

[root@WEB ~]# uname -r

2.6.32-431.el6.x86_64

二、配置rsyncp客戶端

[root@WEB ~]# echo "rsync.conf">>/etc/rsync.password

[root@WEB ~]# cat /etc/rsync.password    

rsync.conf

[root@WEB ~]# chmod 600 /etc/rsync.password

[root@WEB ~]# ls -ld /etc/rsync.password

-rw-------. 1 root root 11 Sep  8 06:25 /etc/rsync.password

三、建立相應的目錄

[root@WEB /]# mkdir /backup/

[root@WEB /]# mkdir /var/web/www -p

[root@WEB /]# mkdir /app/logs -p 

[root@WEB /]# tree /var/web

/var/web

+-- www

[root@WEB /]# tree /app

/app

+-- logs

四、手工測試下推送數據是否成功

[root@WEB backup]# rsync -avzP /backup/ rsync_backup@192.168.1.3::rsync --password-file=/etc/rsync.password

sending incremental file list

./

a

 0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=3/5)

b

0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=2/5)

c

0 100%    0.00kB/s    0:00:00 (xfer#3, to-check=1/5)

d

0 100%    0.00kB/s    0:00:00 (xfer#4, to-check=0/5)

sent 197 bytes  received 87 bytes  568.00 bytes/sec

total size is 0  speedup is 0.00

[root@Backup ~]# cd /backup/

[root@Backup backup]# tree

+-- a

+-- b

+-- c

+-- d

代表數據能成功推送至備份服務器相應的目錄下,同時說明上述配置正確

6、按要求打包需求中的各目錄

打包站目錄文件

[root@WEB web]# tar zcvf /backup/www_$(date +%F).tar.gz ./www

./www/

[root@WEB web]# ls /backup/

www_2016-09-09.tar.gz

打包日誌文件

[root@WEB app]# tar zcvf /backup/log_$(date +%F).tar.gz ./logs

[root@WEB app]# ls /backup/

log_2016-09-09.tar.gz  www_2016-09-09.tar.gz

打包系統配置文件

[root@WEB /]# tar zcvf /backup/etc_$(date +%F).tar.gz ./etc

[root@WEB /]# ls /backup/

etc_2016-09-09.tar.gz  log_2016-09-09.tar.gz  www_2016-09-09.tar.gz

打包定時任務文件

[root@WEB ~]# cp /var/spool/cron/root /backup/root_$(date +%F) 

[root@WEB ~]# ls /backup/

etc_2016-09-09.tar.gz  root_2016-09-09

log_2016-09-09.tar.gz  www_2016-09-09.tar.gz

打包系統腳本文件

[root@WEB ~]# cd /server/

[root@WEB server]# tar zcvf /backup/scripts_$(date +%F).tar.gz ./scripts

./scripts/

[root@WEB server]# ls /backup/

etc_2016-09-09.tar.gz  root_2016-09-09   www_2016-09-09.tar.gz

log_2016-09-09.tar.gz  scripts_2016-09-09.tar.gz

手工推送測試數據備份是否成功

[root@WEB server]# rsync -avzP /backup/ rsync_backup@192.168.1.3::rsync --password-file=/etc/rsync.password

sending incremental file list

./

etc_2016-09-09.tar.gz

9949927 100%   34.90MB/s    0:00:00 (xfer#1, to-check=4/6)

log_2016-09-09.tar.gz

112 100%    0.40kB/s    0:00:00 (xfer#2, to-check=3/6)

root_2016-09-09

204 100%    0.74kB/s    0:00:00 (xfer#3, to-check=2/6)

scripts_2016-09-09.tar.gz

114 100%    0.41kB/s    0:00:00 (xfer#4, to-check=1/6)

www_2016-09-09.tar.gz

109 100%    0.39kB/s    0:00:00 (xfer#5, to-check=0/6)

sent 9954208 bytes  received 106 bytes  19908628.00 bytes/sec

total size is 9950466  speedup is 1.00

[root@Backup backup]# ls

etc_2016-09-09.tar.gz  log_2016-09-09.tar.gz  root_2016-09-09  

scripts_2016-09-09.tar.gz  www_2016-09-09.tar.gz

數據備份成功,一樣符合當前要求

七:書寫備份腳本

備份網站站點目錄與日誌文件

###backup web and logs to backup directory
cd /var/web/ && tar zcf /backup/www_$(date +%F).tar.gz ./www

cd /app/ && tar zcf /backup/log_$(date +%F).tar.gz ./logs

備份系統配置文件

###bakcup configrue of system to backup directory

cd / && tar zcf /backup/etc_$(date +%F).tar.gz ./etc

cd /server/ tar zcf /backup/scripts_$(date +%F).tar.gz ./scripts

cp /var/spool/cron/root /backup/root_$(date +%F)

推送數據到備份服務器

###rsync data of  backup to backup servers directory

cd /backup/ && rsync -avzP  /backup/ rsync_backup@192.168.1.3::rsync --password-file=/etc/rsync.password >/dev/null 2>&1

刪除7天前的備份數據

###delete data of 7days ago

find /backup -type f -name "*.tar.gz" -mtime +7|xrags rm -f

八:按要求重組腳本內容

一、web服務器數據只保留7天內的備分內容,備份服務器上保留180天內的數據

二、備份服務器上的備份要求按照服務器IP爲目錄保存,備份的數據需按時間作

爲了規範特定將腳本文件放到/server/scripts/下面

cd /server/scripts/

vi backup.sh

#!/bin/bash

ip=`grep IPADD /etc/sysconfig/network-scripts/ifcfg-eth0|cut -d = -f2`

mkdir /backup/$ip -p

配置變量

##backup web and logs data to backup directory

cd /var/web/ && tar zcf /backup/$ip/www_$(date +%F).tar.gz ./www

cd /app/ && tar zcf /backup/$ip/log_$(date +%F).tar.gz ./logs

###backup configrue of system to backup directory

cd / && tar zcf /backup/$ip/etc_$(date +%F).tar.gz ./etc

cd /server/ && tar zcf /backup/$ip/scripts_$(date +%F).tar.gz ./scripts

cp /var/spool/cron/root /backup/$ip/root_$(date +%F)

##rsync data of backup to backup servers directory

cd /backup/ && rsync -avzP ./ rsync_backup@192.168.1.3::rsync --password-file=/etc/rsync.password>/dev/null 2>&1

##delete data of 7 days ago

find /backup -type f -name "*.tar.gz" -mtime +7|xargs rm -f

[root@WEB scripts]# cd /backup/

[root@WEB backup]# ls

[root@WEB backup]# /bin/sh /server/scripts/backup.sh 

[root@WEB backup]# ls -ll

total 4

drwxr-xr-x. 2 root root 4096 Sep  9 23:02 192.168.1.2

[root@WEB backup]# cd 192.168.1.2/

[root@WEB 192.168.1.2]# ls

etc_2016-09-09.tar.gz  log_2016-09-09.tar.gz  root_2016-09-09  

scripts_2016-09-09.tar.gz  www_2016-09-09.tar.gz

腳本執行成功,代表腳本配置正確

九:配置定時任務

一、WEB服務器上配置定時任務

[root@WEB ~]# crontab -e

##backup web server data to backup-server by 20160808

00 00 * * * /bin/sh /server/scripts/backup.sh>/dev/null 2>&1

[root@WEB ~]# crontab -l

##backup web server data to backup-server by 20160808

00 00 * * * /bin/sh /server/scripts/backup.sh>/dev/null 2>&1

二、備份服務器上配置定時任務

[root@Backup ~]# mkdir /server/scripts/ -p

[root@Backup ~]# cd /server/scripts/

[root@Backup scripts]# vi delete.sh

###delete data of  180 days ago 

find /backup -type f -name "*.tar.gz" -mtime +180|xargs rm -f

[root@Backup ~]# crontab -e

##delete data by 20160808

00 00 * * 6 /bin/sh /server/scripts/delete.sh>dev/null 2>&1

[root@Backup ~]# crontab -l

##delete data by 20160808

00 00 * * 6 /bin/sh /server/scripts/delete.sh>dev/null 2>&1

十:測試數據備份結果

手工測試

[root@WEB backup]# rm -rf *

[root@WEB backup]# /bin/sh /server/scripts/backup.sh 

[root@WEB backup]# ls -ll

total 4

drwxr-xr-x. 2 root root 4096 Sep  9 23:22 192.168.1.2

[root@WEB backup]# ls 192.168.1.2/

etc_2016-09-09.tar.gz  root_2016-09-09     www_2016-09-09.tar.gz

log_2016-09-09.tar.gz  scripts_2016-09-09.tar.gz

[root@Backup backup]# rm -rf *

[root@Backup backup]# ls

192.168.1.2

[root@Backup backup]# ls 192.168.1.2/

etc_2016-09-09.tar.gz  root_2016-09-09   www_2016-09-09.tar.gz

log_2016-09-09.tar.gz  scripts_2016-09-09.tar.gz

手工測試正常,數據備份、推送成功

測試定時任務

[root@WEB backup]# rm -rf *  刪除以前手工測試數據

[root@WEB backup]# date

Fri Sep  9 23:26:08 CST 2016

[root@WEB backup]# date 090923592016.55  修改當前系統時間

Fri Sep  9 23:59:55 CST 2016

[root@WEB backup]# date        查看當前系統時間

Sat Sep 10 00:00:36 CST 2016

[root@WEB backup]# ls 

192.168.1.2

[root@WEB backup]# ls 192.168.1.2/  查看定時任務執行狀況

etc_2016-09-10.tar.gz  root_2016-09-10   www_2016-09-10.tar.gz

log_2016-09-10.tar.gz  scripts_2016-09-10.tar.gz

[root@Backup backup]# rm -rf *   刪除以前手工測試數據

[root@Backup backup]# ls

[root@Backup backup]# ls -ll

total 4

drwxr-xr-x. 2 rsync rsync 4096 Sep  9 19:00 192.168.1.2

[root@Backup backup]# ls 192.168.1.2/    查看數據備份狀況

etc_2016-09-10.tar.gz  root_2016-09-10   www_2016-09-10.tar.gz

log_2016-09-10.tar.gz  scripts_2016-09-10.tar.gz

通過測試數據備份成功,而且正常推送到備份服務器指定目錄下,代表定時任務執行成功

十一:下載服務器的數據至本地

爲了方便往後維護與管理,能夠將服務器的數據下載到本地,後續有故障時可直接上傳到指定服便可恢復數據

[root@WEB backup]# tar zcvf 192.168.1.2_data.tar.gz ./192.168.1.2/

[root@WEB backup]# sz -y 192.168.1.2_data.tar.gz

[root@Backup backup]# sz -y /etc/rsyncd.conf

若是須要按期執行此種操做,能夠將上述配置寫成腳本 ,而後配置定時任務

相關文章
相關標籤/搜索