rsync使用筆記

環境說明:
本地主機hostA目錄dirA <--- rsync ---> 遠程主機hostB目錄dirB
rsync有兩種工做方式:SSH和daemon。linux

  • SSH方式是使用系統上的用戶經過SSH進行同步操做。
  • daemon方式是rsync服務器會開一個873端口,等待客戶端去鏈接,鏈接是進行驗證,經過後進行同步。

1、SSH模式下進行同步操做

語法

rsync -options <src> <dest>

說明:src:表明源目錄,dest:表明目標目錄,當經過ssh連接時, 請使用rsync -option -e ssh src dest,有時須要指定ssh端口, 請使用這個方式:rsync -options -e "ssh -p 10000" src_dir dest_dir。服務器

經常使用場景

本地拷貝目錄

將/home/dirA/拷貝到/data/dirA/併發

rsync -avu /dirA/ /home/dirA/

將本地目錄拷貝到遠程服務器

rsync -avu --progress --delete /dirA/ <your_user>@hostB:/dirB/

說明:ssh

  • --delete 參數,這樣當本地刪除的文件,遠程端也會刪除,保持完整的一致。
  • --progress參數,顯示具體過程。
  • 若是改了SSH端口,須要加-e "ssh -p 你的SSH端口"
  • 若是須要壓縮傳輸能夠加z參數。

    將遠程服務器目錄拷貝到本地

    rsync -avu --progress --delete <your_user>@hostB:/dirB/ /dirA/

2、daemon模式的配置

配置文件

rsync daemon模式是以rsync服務器形式運行,首先咱們須要建立rsync服務器的配置文件,配置文件:/etc/rsyncd.conf 默認此文件可能不存在,須要本身建立,配置信息以下:socket

# Global setting
# port = 873 # default
# 自定義模塊
[vpser] # 名字
comment = "My rsync test"
path = /dirB/ # 用來指定要備份的目錄
uid = <your_user> # default
gid = <your_group> # default
max connections = 2 # 最大併發鏈接數(本身定義)
timeout = 300
use chroot = yes #使用chroot到文件系統中的目錄中
ignore errors # 能夠忽略一些IO錯誤
read only = no # 設置no,客戶端能夠上傳文件,yes是隻讀
write only = no # no爲客戶端能夠下載,yes 不能下載
hosts allow = 192.168.2.0/24 #(可選)容許鏈接的IP,多個IP用逗號隔開
list = yes #(可選)客戶請求時使用模塊列表
auth users = vpser # (可選)鏈接用戶名,是虛擬用戶與linux系統用戶無關,多個用戶名逗號隔開
secrets file = /etc/rsyncd.secrets # (可選)驗證密碼文件,文件格式爲:用戶名:密碼

說明:
/etc/rsyncd.secrets 文件權限必須是600,建立好該文件後能夠執行: chmod 600 /etc/rsyncd.secretside

啓動服務和自啓動(CentOS7)

sudo systemctl start rsyncd
sudo systemctl enable rsyncd

測試

rsync -avuP /dirA/ <your_user>@hostB::vpser

注:@前的vpser爲自定義模塊裏設置的用戶名,::後面的vpser爲你自定義模塊的名稱。測試

其它技巧

用rsync快速刪除大量文件

創建一個空的文件夾: mkdir /root/blank
用rsync刪除目標目錄:rsync --delete-before -a -H -v --progress --stats /root/blank/ /home/wwwroot/cache/ui

自動完成同步、備份等工做

配合crontab定時執行任務 code

常見問題彙總

客戶端的錯誤現象

ERROR: No route to host

客戶端的錯誤現象: server

rsync: failed to connect to 172.16.1.41: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

緣由:rsync服務端開啓防火牆
異常問題解決:關閉rsync服務端的防火牆服務

sudo firewall-cmd --add-service=rsyncd --permanent
sudo firewall-cmd --reload

ERROR: The remote path must start with a module name not a /

客戶端的錯誤現象:

ERROR: The remote path must start with a module name not a /
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

異常問題解決:
rsync命令語法理解錯誤,::/backup是錯誤的語法,應該爲::backup(rsync模塊)

ERROR: auth failed on module backup

客戶端的錯誤現象:

@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

異常問題解決:

  1. 密碼真的輸入錯誤,用戶名真的錯誤
  2. secrets file = /etc/rsync.password指定的密碼文件和實際密碼文件名稱不一致
  3. /etc/rsync.password文件權限不是600
  4. rsync_backup:123456密碼配置文件後面注意不要有空格
  5. rsync客戶端密碼文件中只輸入密碼信息便可,不要輸入虛擬認證用戶名稱

    ERROR: Unknown module 'backup'

    客戶端的錯誤現象:

    @ERROR: Unknown module 'backup'
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

    異常問題解決:
    一、 /etc/rsyncd.conf配置文件模塊名稱書寫錯誤
    二、配置文件中網段限制不對

    ERROR: chdir failed

    客戶端的錯誤現象:

    @ERROR: chdir failed
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

    異常問題解決:

  6. 備份存儲目錄沒有創建
  7. 創建的備份存儲目錄和配置文件定義不一致
  8. selinux 設置問題,關閉或者相關選項設置爲容許

ERROR: invalid uid rsync

客戶端的錯誤現象:

@ERROR: invalid uid rsync
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

異常問題解決:
rsync服務對應rsync虛擬用戶不存在了

客戶端已經配置了密碼文件,但免祕鑰登陸方式,依舊須要輸入密碼

客戶端的錯誤現象:

password file must not be other-accessible
continuing without password file
Password:
sending incremental file list
sent 26 bytes  received 8 bytes  5.23 bytes/sec
total size is 349  speedup is 10.26

異常問題解決:rsync客戶端的祕鑰文件也必須是600權限

相關文章
相關標籤/搜索