【Linux】rsync遠端同步工具
rsync(Remote Synchronize,遠端同步)是Linux系統下的資料映象備份工具。使用快速增量備份工具可以遠端同步,支援本地複製,或者與其他SSH、rsync主機同步。
特性
- 無須特殊許可權即可安裝。
- 支援匿名傳輸,以方便進行網站映象。
- 可以映象儲存整個目錄樹和檔案系統。
- 可以很容易做到保持原來檔案的許可權、時間、軟硬連結等等。
- 快速:第一次同步時 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