1. 程式人生 > 其它 >【Linux】rsync遠端同步工具

【Linux】rsync遠端同步工具

技術標籤:Linuxlinux同步rsync

rsync(Remote Synchronize,遠端同步)是Linux系統下的資料映象備份工具。使用快速增量備份工具可以遠端同步,支援本地複製,或者與其他SSH、rsync主機同步。
rsyncd

特性

  • 無須特殊許可權即可安裝。
  • 支援匿名傳輸,以方便進行網站映象。
  • 可以映象儲存整個目錄樹和檔案系統。
  • 可以很容易做到保持原來檔案的許可權、時間、軟硬連結等等。
  • 快速:第一次同步時 rsync 會複製全部內容,但在下一次只傳輸修改過的檔案。rsync 在傳輸資料的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的頻寬。
  • 安全:可以使用scp、ssh等方式來傳輸檔案,當然也可以通過直接的socket連線。

安裝

不同的Linux發行版安裝方法不一樣(apt、rpm、yum),請自行查詢安裝方法。

原理

rsync是在服務端(同步源)啟動一個守護程序rsyncd,在客戶端(同步目的地)主動使用rsync命令從服務端同步檔案。

伺服器端

本機IP為192.168.1.1。

配置檔案

執行vim /etc/rsyncd.conf命令建立配置檔案,並輸入以下內容:

### 全域性配置引數
port = 873 # rsync預設埠,1024以下只有root使用者可以使用,可更改為1024以上埠
uid = root # rsyncd服務的執行使用者,預設是nobody
gid = root # rsyncd服務的執行組,預設也是nobody
use chroot = yes # 在傳輸前切換到指定的目錄下,並將其監禁在內 max connections = 100 # 最大併發連線數 transfer logging = true # 記錄傳輸日誌 log format = %h %o %f %l %b # 設定日誌檔案格式 log file = /var/log/rsyncd.log # 指定日誌檔案,而不把日誌傳送給syslog pid file = /var/run/rsyncd.pid # 指定rsyncd的pid檔案 hosts allow = 192.168.1.2 # 設定白名單,多個IP逗號隔開,只有白名單內的IP可以進行同步 timeout
= 300 # 設定超時時間 ### 自定義模組,可以指定模組引數 [secrets] path = /opt/rsync # 伺服器端同步目錄 ignore errors # 忽略IO錯誤 read only = no // 設定no,客戶端可以上傳檔案,yes是隻讀 write only = no // 設定no,客戶端可以下載檔案,yes不能下載 list = yes // 客戶請求時,可以列出檔案列表,不建議開啟,會被掃描出rsync未授權訪問漏洞 auth users = vpser # 虛擬使用者名稱,與Linux系統使用者無關,多個使用者名稱逗號隔開 secrets file = /etc/rsyncd.secrets # 密碼檔案,檔案格式為:使用者名稱:密碼

密碼檔案

執行vim /etc/rsyncd.secrets命令建立密碼檔案,並輸入以下內容:

# 如果配置檔案裡面的埠為1024以下,這裡必須使用root使用者
root:test1234

啟動守護程序

rsync --daemon --config=/etc/rsyncd.conf
如果修改了/etc/rsyncd.conf配置檔案,需要使用kill -9 rsync程序pid將程序rsync殺掉,並重新啟動或者直接使用service rsyncd restart重啟rysncd服務。

客戶端

本機IP為192.168.1.2。

密碼檔案

執行命令echo "test1234" > /etc/rsyncd.secrets建立密碼檔案。

客戶端的密碼檔案只需要輸入密碼即可

同步檔案到客戶端

rsync -auv --port 873 --progress --delete --password-file=/etc/rsyncd.secrets [email protected]::secrets /opt/rsync

OPTION選項 功能
-a 這是歸檔模式,表示以遞迴方式傳輸檔案,並保持所有屬性,它等同於-r、-l、-p、-t、-g、-o、-D 選項。-a 選項後面可以跟一個 --no-OPTION,表示關閉 -r、-l、-p、-t、-g、-o、-D 中的某一個,比如-a --no-l 等同於 -r、-p、-t、-g、-o、-D 選項。
-r 表示以遞迴模式處理子目錄,它主要是針對目錄來說的,如果單獨傳一個檔案不需要加 -r 選項,但是傳輸目錄時必須加。
-v 表示列印一些資訊,比如檔案列表、檔案數量等。
-l 表示保留軟連線。
-L 表示像對待常規檔案一樣處理軟連線。如果是 SRC 中有軟連線檔案,則加上該選項後,將會把軟連線指向的目標檔案複製到 DEST。
-p 表示保持檔案許可權。
-o 表示保持檔案屬主資訊。
-g 表示保持檔案屬組資訊。
-D 表示保持裝置檔案資訊。
-t 表示保持檔案時間資訊。
–delete 表示刪除 DEST 中 SRC 沒有的檔案。
–exclude=PATTERN 表示指定排除不需要傳輸的檔案,等號後面跟檔名,可以是萬用字元模式(如 *.txt)。
–progress 表示在同步的過程中可以看到同步的過程狀態,比如統計要同步的檔案數量、 同步的檔案傳輸速度等。
-u 表示把 DEST 中比 SRC 還新的檔案排除掉,不會覆蓋。
-z 加上該選項,將會在傳輸過程中壓縮。

如果想要同步到服務端,只需將::secrets部分放到最後即可:
rsync -auv --port 873 --progress --delete --password-file=/etc/rsyncd.secrets /opt/rsync [email protected]::secrets