Centos7 rsync經過ssh與socket同步並加入inotify實時同步

第1種方式:經過SSH

yum install -y rsync
經過ssh將本地文件拷貝到另外一服務器(兩臺機器都須要裝rsync)html

rsync -avz -e 'ssh -p 22' 1.html 192.168.71.101:/data

-a, ––archive 歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性
-v, ––verbose 詳細輸出模式
-z, ––compress 在傳輸文件時進行壓縮處理
-e, ––rsh=COMMAND 指定替代 rsh 的 shell 程序shell

第2種方式:經過服務端與客戶端

準備兩臺機器bash

    192.168.71.101 服務端
    192.168.71.102 客戶端 服務器

 2.1 服務端操做

vi /etc/rsyncd.conf

配置以下ssh

uid = root
gid = root
use chroot = no
max connections = 200
# 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
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log

[backtest]
path = /backup/test
ignore errors
read only = no
list = no
auth users = abo
secrets file = /etc/rsync.passwd

建立服務端測試目錄測試

mkdir -p /backup/test

建立密碼文件ui

echo 'abo:123456' > /etc/rsync.passwd
#必須爲600,要不會報錯
chmod 600 /etc/rsync.passwd

啓動rsyncspa

systemctl start rsyncd

2.2 客戶端操做

echo '123456' > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd

建立測試目錄與文件code

mkdir /backup
echo '111' > /backup/1.txt

測試將客戶端文件推送到服務端(在客戶端操做)orm

rsync -avz /backup/ abo@192.168.71.101::backtest --password-file=/etc/rsync.passwd --port=873

測試將服務端文件拉取到客戶端(在客戶端操做)

rsync -avz  abo@192.168.71.101::backtest /backup/ --password-file=/etc/rsync.passwd

加入inotify

在客戶端安裝inotify

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install inotify-tools -y

新建腳本文件

vi /etc/rc.d/inotify.sh

內容以下

src=/backup/  #監聽的目錄
des=backtest   #服務端的rsync模塊名稱
ip=192.168.71.101 #服務端的ip地址
/usr/bin/inotifywait -mrq --timefmt ‘%d/%m/%y/%H:%M’ --format ‘%T%w%f%e’ -e modify,delete,create,attrib $src| while
read file 
do
  /usr/bin/rsync -vzrutopg  --progress  $src abo@$ip::$des --password-file=/etc/rsync.passwd
  echo "$src has been resynced"
done

添加執行權限並運行

chmod +x /etc/rc.d/inotify.sh 
nohup sh /etc/rc.d/inotify.sh>/data/inotify.log 2>&1 &

測試同步,在客戶端/backup/目錄下新加文件,能夠看到服務端會實時同步過來

相關文章
相關標籤/搜索