Linux 之 rsync實現服務器的文件同步


rsync實現服務器的文件同步


 參考文獻鏈接:

一、rsync實現負載均衡集群文件同步,搭建線上測試部署環境

二、rsync

三、rsync常見錯誤

四、rsync 安裝使用詳解


 環境部署:

  服務器1:192.168.1.169,作為客戶端

  服務器2:192.168.1.167,作為服務端

  實現功能:每當169服務器中的文件發生改變時,就同步到167服務器中。


 服務端配置(即167服務器的配置):

(1)軟件安裝
yum install rsync xinetd
(2)為 rsyncd 服務編輯配置文件,默認沒有,需自己編輯
vim /etc/rsyncd.conf
寫入以下內容:
uid = root
gid = root
use chroot = no
max connections = 5
timeout = 600
pid file = /var/run/rsyncd.pid
lockfile = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[web1]
path = /usr/local/nginx/html/hello/
ignore errors = yes
read only = no
write only = no
hosts allow = 192.168.1.169
hosts deny = *
list = yes
auth users = web
secrets file = /etc/web.passwd
(3)創建文件同步的目錄,上面配置里的path,如果有就不用創建了
mkdir /usr/local/nginx/html/hello/
(4)創建配置中的密碼文件,並增加權限:
echo "web:123" > /etc/web.passwd
chmod 600 /etc/web.passwd
(5)重新啟動
service xinetd restart


 客戶端配置(即169服務器的配置):

(1)安裝軟件
yum -y install rsync
(2)創建web目錄
mkdir /usr/local/nginx/html/hello/
(3)設置密碼並設置權限
echo "123"> /tmp/rsync.password
chmod 600 /tmp/rsync.password

(4)關閉防火牆:service iptables stop。


在客戶端測試(即169服務器):
rsync -avzP --delete --password-file=/tmp/rsync.password /usr/local/nginx/html/hello/ web@192.168.1.167::web1

如果看到文件同步過去表示成功。


數據實時同步:
  環境:Rsync + Inotify-tools。

  下載安裝

  wget https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
  tar -zxvf inotify-tools-3.13.tar.gz
  mkdir /usr/local/inotify
  cd inotify-tools-3.13
  ./configure --prefix=/usr/local/inotify/
  make && make install

設置環境變量

  vim /etc/profile
  在末尾增加一行:
  export PATH=$PATH:/usr/local/inotify/bin
  使配置生效:
  source /etc/profile


echo '/usr/local/inotify/lib' >> /etc/ld.so.conf --加載庫文件
ldconfig
ln -s /usr/local/inotify/include /usr/include/inotify


 測試腳本:

創建shell文件:
vim /test.sh
輸入以下內容:

#!/bin/bash

src=/usr/local/nginx/html/hello/
user=web
host1=192.168.1.167
dst1=web1
passpath=/tmp/rsync.password

/usr/local/inotify/bin/inotifywait \
-mrq --timefmt '%d/%m/%y' \
--format '%T %w%f%e' \
-e modify,delete,create,attrib \
/usr/local/nginx/html/hello/ | while read files 
do
    rsync  -vzrtopg --delete --progress --passfile=$passfile-path  $src $user@$host1::$dst1
    echo "${files} was rsyncd" >>/tmp/rsync.log 2>&1
done

設置自動運行:

chmod 755 /data/test/test.sh
/data/test/test.sh &
echo '/data/test/test.sh &' >> /etc/rc.local --設置開機自啟


 擴展知識:

  查看已安裝的軟件包
    yum list rsync
  卸載rsync
    yum remove rsync

  常見錯誤:    

    問題一:
      rsync: failed to set times on “directory” Operation not permitted (1)
      解決:
        請檢查/etc/rsyncd.conf這個配置文件是否正確。

 

    問題二:

      @ERROR: auth failed on module web
      rsync error: error starting client-server protocol (code 5) at main.c(1657) [Receiver=3.1.3]
      原因:
        服務器端該模塊(web)需要驗證用戶名密碼,但客戶端沒有提供正確的用戶名密碼,認證失敗。
        提供正確的用戶名密碼解決此問題。

    問題三:

      inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object

      [root@db zzh]# ll /proc/sys/fs/inotify (如果有下列三項則支持inotifytools)
      total 0
      -rw-r--r-- 1 root root 0 Sep 20 16:52 max_queued_events
      -rw-r--r-- 1 root root 0 Sep 20 16:52 max_user_instances
      -rw-r--r-- 1 root root 0 Sep 20 16:52 max_user_watches

      解決:
      [root@db zzh]# ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

    問題四:

      wile read 命令未找到

      解決:

        檢出sh文件,或重新編寫。

 

rsync配置文件說明:

uid = root #--rsync運行權限為root
gid = root #--rsync運行權限為root
use chroot = no #--是否讓進程離開工作目錄
max connections = 5 #--最大並發連接數,0為不限制
timeout = 600 #--超時時間
pid file = /var/run/rsyncd.pid #--指定rsync的pid存放路徑
lockfile = /var/run/rsyncd.lock #--指定rsync的鎖文件存放路徑
log file = /var/log/rsyncd.log #--指定rsync的日志存放路徑
[web1] #--模塊名稱
path = /data/test/src #--該模塊存放文件的基礎路徑
ignore errors = yes #--忽略一些無關的I/O錯誤
read only = no #--客戶端可以上傳
write only = no #--客戶端可以下載
hosts allow = 192.168.8.167 #--允許連接的客戶端主機ip
hosts deny = * #--黑名單,*表示任何主機
list = yes
auth users = web #--認證此模塊的用戶名
secrets file = /etc/web.passwd #--指定存放“用戶名:密碼”格式的文件


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM