rsync同步文件

介紹

爲了實現組件的高可用,比如gitlab或者禪道,一般會在不同機器分別安裝gitlab,它們公用一個外接的數據庫。但是gitlab在本地還會有一些數據生成,這些數據在各個gitlab之間也需要保持一致,可以採用rsync實現不同機器之間的文件同步。

安裝

以禪道雙節點爲例,所有安裝了禪道客戶端的機器安裝rsync,命令:

yum install -y rsync

主節點配置

切換到主禪道所在機器,修改rsync配置文件/etc/rsyncd.conf:

uid = nobody
gid = nobody
use chroot = no
max connections = 3
pid file = /var/run/rsyncd.pid
log file=/var/log/rsyncd.log
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsync.pass
[forzbox] # 自定義模塊名,可多個
path = /opt/zbox/app/zentaoep/www/data/upload/1 # 要同步的目錄
comment = BACKUP CLIENT IS zbox
ignore errors
read only = yes
list = no
# 以下兩項是socket連接認證
auth users = forzbox
secrets file = /etc/rsync.pass

這裏配置的同步方式是通過rsync進程來複制數據的方式,還有別的同步方式後續會說到。還有一些配置項,如主機權限,目錄篩選等可以自行百度。

主節點創建認證文件/etc/rsync.pass,填寫內容爲用戶名密碼,用戶名是上邊配置文件中自定義的,密碼是自己定的,注意格式,且這個認證文件的權限要爲600:

forzbox:pass123

從節點配置

從節點也創建認證文件/etc/rsync.pass,內容爲密碼即可,權限爲600:

pass123

啓動

主從節點啓動服務:

systemctl start rsyncd && systemctl enable rsyncd

如果是啓用了防火牆,還需要配置端口,默認是873。

從節點配置定時任務進行每5分鐘自動同步(這裏採用的同步方式是:從節點通過rsync進程拉取主節點的數據到本地),crontab -e之後:

*/5 * * * * rsync -vzrtp --progress --delete --password-file=/etc/rsync.pass [email protected]::forzbox /opt/zbox/app/zentaoep/www/data/upload/1 >> /root/crontab.log 2>&1

上述命令參數說明:

  • v:顯示詳細信息
  • z:傳輸過程中對數據進行壓縮
  • r:遞歸
  • t:保留修改時間屬性
  • p:保留文件權限屬性
  • --progress:顯示數據傳輸的進度信息
  • --password-file=FILE:指定密碼文件
  • --delete:刪除那些僅在目標路徑中存在的文件(源路徑中不存在)

3種同步方式

rsync的同步方式有3種。

本地複製

rsync [選項] SRC... [DEST]

選項爲參數,SRC表示原路徑,DEST表示目標路徑,下同。

通過shell遠程複製

  1. 下載數據

    rsync [選項] [user@]HOST:SRC... [DEST]     
    

    不加user@表示用root用戶進行登陸遠程主機下載數據到本地的DEST路徑。

  2. 上傳數據

    rsync [選項] SRC... [user@]HOST:DEST
    

    這裏的SRC表示本地數據,DEST表示遠端主機目錄。

通過rsync進程遠程複製

  1. 下載數據

    rsync [選項] [user@]HOST::SRC [DEST]
    

    這裏雙冒號後的SRC表示遠端服務端的模塊名。

    rsync [選項] rsync://[user@]HOST[:port]/SRC [DEST]   
    

    這裏的SRC表示實際的同步目錄名,這種方式可以指定端口。

  2. 上傳數據

    rsync [選項] SRC [user@]HOST::DEST    
    

    上傳本地客戶端數據到遠端服務端的DEST模塊名指定的路徑。

    rsync [選項] SRC rsync://[user@]HOST[:port]/DEST
    

    這裏的DEST表示實際的同步目錄名,這種方式可以指定端口。


參考:
https://www.cnblogs.com/regit/p/8074221.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章