目錄
一、rsync部署
push推數據
1、編寫rsync配置文件
2、備份測試
3、檢驗結果
二、rsync+sersync 實現數據實時同步
1、安裝sersync服務
2、檢驗結果
pull拉取數據
1、編寫rsync配置文件
2、檢驗結果
三、腳本編寫
1、客戶端腳本編寫
2、服務器腳本編寫
一、rsync部署
-
服務器:source 192.168.58.130 (進行數據備份的主機)
-
客戶端:targetpc 192.168.58.131 (備份存儲的主機)
push推數據
1、編寫rsync配置文件
#192.168.58.131 # 在客戶端上編寫rsync配置文件,創建一個存放備份的同步目錄 [root@targetpc ~]# vim /etc/rsyncd.conf # /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # configuration example: # uid = nobody # gid = nobody # use chroot = yes # max connections = 4 # pid file = /var/run/rsyncd.pid # exclude = lost+found/ # transfer logging = yes # timeout = 900 # ignore nonreadable = yes # dont compress ? = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 # [ftp] # ? ? ? path = /home/ftp # ? ? ? comment = ftp export area ? ? #在這些內容后面加上下面的內容
#加上 port=873 address = 192.168.58.131 uid = root gid = root use chroot = yes max connections = 4 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log motd file = /etc/rsyncd.motd hosts allow = 192.168.58.0/24 [data] path = /data/backup comment = bakcup data read only = false list = yes auth users = rsyncuser secrets file = /etc/rsync.passwd
#192.168.58.131 # 創建密碼文件,格式 ? 用戶名:密碼 # 設置密碼文件權限為600或者700 [root@targetpc ~]# touch /etc/rsync.passwd [root@targetpc ~]# vim /etc/rsync.passwd rsyncuser:123456 [root@targetpc ~]# chmod 600 /etc/rsync.passwd
#192.168.58.131 # 創建歡迎信息文件 [root@targetpc ~]# echo "Welcome to Backup Server" > /etc/rsyncd.motd ? [root@targetpc ~]# systemctl start rsyncd [root@targetpc ~]# mkdir -p /data/backup [root@targetpc ~]# cd /data/backup
2、備份測試
#192.168.58.130 [root@source ~]# mkdir /data [root@source ~]# cd /data [root@source data]# touch 1.txt [root@source data]# mkdir aaa [root@source data]# rsync -avz /data/* rsyncuser@192.168.58.131::data Welcome to Backup Server ? Password: sending incremental file list 1.txt aaa/ ? sent 124 bytes received 43 bytes 9.03 bytes/sec total size is 0 speedup is 0.00 [root@source data]# touch 2.txt [root@source data]# ls 1.txt 2.txt aaa [root@source data]# rsync -avz /data/* rsyncuser@192.168.58.131::data Welcome to Backup Server ? Password: sending incremental file list 2.txt ? sent 137 bytes received 36 bytes 9.89 bytes/sec total size is 0 speedup is 0.00
3、檢驗結果
#192.168.58.131 [root@targetpc backup]# ls 1.txt 2.txt aaa ? ? [root@targetpc backup]# touch 3.txt [root@targetpc backup]# ls 1.txt 2.txt 3.txt aaa
#192.168.58.130 [root@source data]# rsync -avz --delete /data/ rsyncuser@192.168.58.131::data Welcome to Backup Server ? Password: sending incremental file list deleting 3.txt ? sent 125 bytes received 22 bytes 8.91 bytes/sec total size is 0 speedup is 0.00
#192.168.58.131 [root@targetpc backup]# ls 1.txt 2.txt aaa
非交互式:
如果想不輸入密碼,可以使用--password-file參數指定密碼
#192.168.58.130 [root@source data]# vim /etc/rsync.passwd 123456 [root@source data]# chmod 600 /etc/rsync.passwd [root@source data]# rsync -avz --delete /data/ rsyncuser@192.168.58.131::data --password-file=/etc/rsync.passwd Welcome to Backup Server ? sending incremental file list deleting data/aaa/ deleting data/2.txt deleting data/1.txt deleting data/ ./ ? sent 132 bytes received 70 bytes 13.93 bytes/sec total size is 0 speedup is 0.00
#192.168.58.131 [root@targetpc backup]# ls 1.txt 2.txt aaa
二、rsync+sersync 實現數據實時同步
1、安裝sersync服務
#192.168.58.130 [root@source data]# cd [root@source ~]# rz rz waiting to receive.**[root@source ~]# ls anaconda-ks.cfg ceph-release-1-1.el7.noarch.rpm init.sh sersync2.5.4_64bit_binary_stable_final.tar.gz shell ? [root@source ~]# ls anaconda-ks.cfg ceph-release-1-1.el7.noarch.rpm init.sh sersync2.5.4_64bit_binary_stable_final.tar.gz shell [root@source ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz [root@source ~]# ls anaconda-ks.cfg ? ? ? ? ? ? ? ? GNU-Linux-x86 sersync2.5.4_64bit_binary_stable_final.tar.gz ceph-release-1-1.el7.noarch.rpm init.sh ? ? ? shell [root@source ~]# cd GNU-Linux-x86/ [root@source GNU-Linux-x86]# ls confxml.xml sersync2 [root@source GNU-Linux-x86]# vim confxml.xml <inotify><delete start="true"/><createFolder start="true"/><createFile start="false"/><closeWrite start="true"/><moveFrom start="true"/><moveTo start="true"/><attrib start="false"/><modify start="false"/></inotify><sersync><localpath watch="/opt/tongbu"><remote ip="127.0.0.1" name="tongbu1"/><!--<remote ip="192.168.8.39" name="tongbu"/>--><!--<remote ip="192.168.8.40" name="tongbu"/>--></localpath><rsync><commonParams params="-artuz"/><auth start="false" users="root" passwordfile="/etc/rsync.pas"/><userDefinedPort start="false" port="874"/><!-- port=874 --><timeout start="false" time="100"/><!-- timeout=100 --><ssh start="false"/></rsync>
<inotify><delete start="true"/><createFolder start="true"/><createFile start="true"/><closeWrite start="true"/><moveFrom start="true"/><moveTo start="true"/><attrib start="true"/><modify start="true"/></inotify><sersync><localpath watch="/data"><remote ip="192.168.58.131" name="data"/><!--<remote ip="192.168.8.39" name="tongbu"/>--><!--<remote ip="192.168.8.40" name="tongbu"/>--></localpath><rsync><commonParams params="-artuz"/><auth start="true" users="rsyncuser" passwordfile="/etc/rsync.passwd"/><userDefinedPort start="false" port="874"/><!-- port=874 --><timeout start="false" time="100"/><!-- timeout=100 --><ssh start="false"/></rsync>
#192.168.58.130 # 開啟sersync守護進程同步數據,即實時同步。 # -r參數,先做一次完全同步,再做差異同步。 [root@source GNU-Linux-x86]# ./sersync2 -d -r -o ./confxml.xml set the system param execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events parse the command param option: -d ? ? run as a daemon option: -r ? ? rsync all the local files to the remote servers before the sersync work option: -o ? ? config xml name: ./confxml.xml daemon thread num: 10 parse xml config file host ip : localhost ? ? host port: 8008 will ignore the inotify createFile event daemon start,sersync run behind the console use rsync password-file : user is rsyncuser passwordfile is ? ? ? ? /etc/rsync.passwd config xml parse success please set /etc/rsyncd.conf max connections=0 Manually sersync working thread 12 = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads) Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads) please according your cpu ,use -n param to adjust the cpu rate ------------------------------------------ rsync the directory recursivly to the remote servers once working please wait... execute command: cd /data && rsync -artuz -R --delete ./ rsyncuser@192.168.58.131::data --password-file=/etc/rsync.passwd >/dev/null 2>&1 ? #或者 [root@source GNU-Linux-x86]# nohup ./sersync2 -r -o ./confxml.xml & [1] 117240
2、檢驗結果
#192.168.58.130 #更改名稱,查看變化 [root@source data]# mv aaa AAA root@source data]# ls 1.txt 2.txt AAA
#192.168.58.131 #檢測到名稱已變 [root@targetpc backup]# ls 1.txt 2.txt AAA
pull拉取數據
以上的同步過程都是服務端主動推送數據給目標主機(服務器),這里演示下目標主機主動拉取數據進行同步。
1、編寫rsync配置文件
#192.168.58.130 [root@source ~]# vim /etc/rsyncd.conf #在這個文件里加入下面內容# ort=873 address = 192.168.58.130 uid = root gid = root use chroot = yes max connections = 4 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log motd file = /etc/rsyncd.motd hosts allow = 192.168.58.0/24 [data] path = /data comment = master data read only = false list = yes auth users = rsyncuser secrets file = /etc/rsync.passwd ?
# 認證文件 [root@source ~]# vim /etc/rsync.passwd rsyncuser:123456 # 服務端上啟動rsync [root@source ~]# systemctl start rsyncd [root@source ~]# netstat -antup | grep 873 tcp ? ? ? 0 ? ? 0 192.168.58.130:873 ? ? 0.0.0.0:* ? ? ? ? ? ? ? LISTEN ? ? 15646/rsync ? ? # 看到以上結果,說明服務端的rsync服務已經配置完成。 # 開放873端口號,允許通過873端口號拉取數據 [root@source ~]# cd /data [root@source data]# mkdir BBB [root@source data]# ls 1.txt 2.txt AAA BBB
2、檢驗結果
#192.168.58.131 # 目標主機上拉取數據 [root@targetpc backup]# rsync -avz rsyncuser@192.168.58.130::data /data/backup/ ? Password: receiving incremental file list ./ BBB/ ? sent 32 bytes received 145 bytes 9.57 bytes/sec total size is 0 speedup is 0.00 [root@targetpc backup]# ls 1.txt 2.txt AAA BBB
三、腳本編寫
計劃將服務器的/data目錄的文件實時發送到客戶端/data/backup目錄中,操作前請檢查服務器是否有該目錄
1、客戶端腳本編寫
#!/bin/bash #客戶端配置 #編寫rsync配置文件 read -p "請輸入符合此掩碼的當前主機IP(默認掩碼為255.255.255.0):" ip ip1=$(echo $ip | awk -F. '{print $1"."$2"."$3}') echo " port=873 address = $ip uid = root gid = root use chroot = yes max connections = 4 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log motd file = /etc/rsyncd.motd hosts allow = $ip1.0/24 [data] path = /data/backup comment = bakcup data read only = false list = yes auth users = rsyncuser secrets file = /etc/rsync.passwd " > /etc/rsyncd.conf touch /etc/rsync.passwd echo "rsyncuser:123456" > /etc/rsync.passwd chmod 600 /etc/rsync.passwd echo "Welcome to Backup Server" > /etc/rsyncd.motd systemctl restart rsyncd mkdir -p /data/backup
2、服務器腳本編寫
#!/bin/bash #服務端配置 read -p "請輸入符合此掩碼的客戶端主機IP(默認掩碼為255.255.255.0):" ip echo "123456" > /etc/rsync.passwd chmod 600 /etc/rsync.passwd rsync -avz --delete /data/ rsyncuser@$ip::data --password-file=/etc/rsync.passwd