目錄
- rsync遠程同步
- 搭建rsync
- 搭建inotify
rsync遠程同步
rsync遠程同步是一款主要為快速增量備份的工具;可以用于本地的復制,也可以用戶跨主機(ssh/rsync主機同步)之間的復制;官網:https://rsync.samba.org/
搭建rsync
配置rsync源服務器
[root@node1 ~]# yum -y install rsync
[root@node1 ~]# vim /etc/rsyncd.conf #把所有內容刪掉然后添加下面的內容
uid = nobody #以匿名用戶方式登錄
gid = nobody
use chroot = yes #禁錮源目錄
address = 192.168.218.214 #指定rsync源服務器地址
port 873 #指定埠號
log file = /var/log/rsyncd.log #日志位置
pid file = /var/run/rsyncd.pid #pid位置
hosts allow = 192.168.218.214/24 #允許訪問的客戶機網段
[wwwroot]
path = /var/www/html #源目錄的路徑
comment = Document Root of www.ljm.com #標識rsync源的域名
read only = yes #開啟只讀
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = backuper #授權用戶,可以設定多個用戶,多個用戶以空格區分
secrets file = /etc/user.db #存放用戶資訊的資料檔案
[root@node1 ~]# vim /etc/user.db #編輯該檔案
backuper:123 #寫入用戶和用戶的密碼
[root@node1 ~]# chmod 600 /etc/user.db
[root@node1 ~]# mkdir -p /var/www/html
[root@node1 ~]# chmod +r /var/www/html
[root@node1 ~]# ls -ld /var/www/html/
drwxr-xr-x 2 root root 6 11月 17 2020 /var/www/html/
[root@node1 ~]# rsync --daemon #開啟rsync服務
[root@node1 ~]# netstat -napt |grep 873
tcp 0 0 192.168.218.214:873 0.0.0.0:* LISTEN 86385/rsync
[root@node1 ~]# echo "persona" > /var/www/html/1.txt
[root@node1 ~]# cat /var/www/html/1.txt
persona
客戶端操作
[root@node2 elasticsearch-head]# mkdir /abc
[root@node2 elasticsearch-head]# rsync -avz backuper@192.168.218.214::wwwroot /abc/ #同步源服務器的wwwroot全域模塊指定的源目錄到/abc目錄下
Password:
receiving incremental file list
./
1.txt
sent 46 bytes received 113 bytes 35.33 bytes/sec
total size is 8 speedup is 0.05
[root@node2 elasticsearch-head]# cd ~
[root@node2 ~]# ls /abc
1.txt
[root@node2 ~]# cat /abc/1.txt
persona
設定免密登錄
[root@node2 ~]# echo "123" > /etc/server.pass
[root@node2 ~]# chmod 600 /etc/server.pass
[root@node2 ~]# rsync -avz --password-file=/etc/server.pass backuper@192.168.218.214::wwwroot /abc/ #免密登錄要在同步時指定密碼檔案
receiving incremental file list
sent 20 bytes received 58 bytes 156.00 bytes/sec
total size is 8 speedup is 0.10
搭建inotify
服務端配置
[root@node1 ~]# vim /etc/rsyncd.conf #編輯rsync組態檔
uid = root #改為root
gid = root
read only =no #關閉只讀
#重啟rsync服務
[root@node1 ~]# kill `cat /var/run/rsyncd.pid`
[root@node1 ~]# netstat -napt |grep 873
[root@node1 ~]# rsync --daemon
[root@node1 ~]# netstat -napt |grep 873
tcp 0 0 192.168.218.214:873 0.0.0.0:* LISTEN 87070/rsync
客戶端配置
[root@node2 ~]# vim /etc/sysctl.conf
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@node2 ~]# sysctl -p
[root@node2 ~]# yum -y install gcc gcc-c++
#安裝inotify
[root@node2 ~]# tar zxvf inotify-tools-3.14.tar.gz -C /opt
[root@node2 ~]# cd /opt/inotify-tools-3.14/
[root@node2 inotify-tools-3.14]# ./configure
[root@node2 inotify-tools-3.14]# make && make install
[root@node2 abc]# cd ~
#創建一個實時監控并同步的腳本
[root@node2 ~]# vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /abc/" #監控/abc目錄的各種改動操作
RSYNC_CMD="rsync -apzH --delete --password-file=/etc/server.pass /abc/ backuper@192.168.218.214::wwwroot/" #進行同步,將/abc目錄下的檔案同步到源服務器上
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then #進行判斷,如果/abc目錄下有修改則進行同步
$RSYNC_CMD
fi
done
[root@node2 ~]# chmod +x /opt/inotify.sh
[root@node2 ~]# chmod +x /etc/rc.d/rc.local
[root@node2 ~]# echo "/opt/inotify.sh" >> /etc/rc.d/rc.local #設定開機自啟
[root@node2 ~]# sh -x /opt/inotify.sh #執行腳本
然后再開一個終端,進入/abc/目錄下創建檔案
[root@node2 inotify-tools-3.14]# cd /abc
[root@node2 abc]# ls
1.txt 2.txt 666
[root@node2 abc]# touch 123456
服務端查看/var/www/html目錄

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294325.html
標籤:其他
