前段時間因公司需求,需要把備份的文件進行同步保存,後面就想到了我們大家都最熟悉的文件同步工作Rsync,於是就搗鼓了一下午時間,然後總結了下大概過程和參數詳情。 首先瞭解了下rsync同步的大致原理:Rsync 同步使用所謂的“Rsync 演演算法”來使本地和遠程兩個主機之間的文件達到同步,這個演算法只 ...
前段時間因公司需求,需要把備份的文件進行同步保存,後面就想到了我們大家都最熟悉的文件同步工作Rsync,於是就搗鼓了一下午時間,然後總結了下大概過程和參數詳情。
首先瞭解了下rsync同步的大致原理:Rsync 同步使用所謂的“Rsync 演演算法”來使本地和遠程兩個主機之間的文件達到同步,這個演算法只傳送兩個文件的不同部分,而不是每次都整份
傳送,因此傳輸的速度相當快。Rsync服務端會打開一個873的服務通道(port),等待客戶端 Rsync 連接。連接時,Rsync 服務端會檢查口令(passwd)是否相符,若通過口令查核,
則可以開始進行文件傳輸。第一次連通完成時,會把整份文件傳輸一次,下一次就只傳送二個文件之間的差異部份。
接下來我們就來初步搭建,先完成任務需求。
Rsync服務端(192.168.177.130)
安裝rsync工具
yum -y install rsync (預設會在etc目錄下生成一個rsync的配置文件)
編輯配置文件rsyncd.conf (配置文件裡面是不能添加註釋,不然會報錯)
uid = root
gid = root
use chroot = no
max connections = 4
#pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
exclude = lost+found/
transfer logging = yes
timeout = 600
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[test]
path = /home/rsynctest
ignore errors = yes
read only = yes
write only = no
hosts allow = 192.168.177.131
hosts deny = *
list = false
uid = root
gid = root
auth users = root
secrets file = /etc/rsyncd.passwd
配置詳解
uid = root #設置運行rsync 進程的用戶
gid = root
use chroot = no #使用預設根目錄
max connections = 4 #最大連接數
#pid file = /var/run/rsyncd.pid #CentOS7中yum安裝 不需指定pid file 否則報錯
lock file = /var/run/rsyncd.lock #指定支持 max connections 參數的鎖文件
log file = /var/log/rsyncd.log #此文件定義完成後 系統會自動創建
exclude = lost+found/
transfer logging = yes #使rsync伺服器使用ftp格式的文件來記錄下載和上傳操作在自己單獨的日誌中
timeout = 600 #通過該選項可以覆蓋客戶指定的IP超時時間。通過該選項可以確保rsync伺服器不會永遠等待一個崩潰的客戶。超時單位為秒鐘,0表示沒有超時定義,這也是預設值。對於匿名rsync伺服器來說,一個理想的數字是600。
ignore nonreadable = yes #同步時跳過沒有許可權的目錄
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 #傳輸時不壓縮的文件
[test] #此名字即客戶端使用rsync來同步的路徑
path = /home/rsynctest #實際需要同步的路徑
ignore errors = yes #指定rsyncd在判斷是否運行傳輸時的刪除操作時忽略server上的IP錯誤,一般來說rsync在出現IO錯誤時將將跳過--delete操作,以防止因為暫時的資源不足或其它IO錯誤導致的嚴重問題
read only = yes #表示可以pull
write only = no #表示不可以push
hosts allow = 192.168.177.131 #客戶端同步的地址
hosts deny = * #指定不允許連接rsync伺服器的機器,可以使用hosts allow的定義方式來進行定義。預設是沒有hosts deny定義。
list = false #該選項設定當客戶請求可以使用的模塊列表時,該模塊是否應該被列出。如果設置該選項為false,可以創建隱藏的模塊。預設值是true。
uid = root #獲取文件的身份
gid = root
auth users = root #客戶端獲取文件的身份 此用戶並不是本機中確實存在的用戶
secrets file = /etc/rsyncd.passwd #用來認證客戶端的秘鑰文件 格式 USERNAME:PASSWD 此文件許可權一定需要改為600,且屬主必須與運行rsync的用戶一致。(需自行創建)
創建對應密碼文件
vim /etc/rsyncd.passwd
格式如下:root:123456(前用戶名後密碼)
修改文件許可權:chmon 600 /etc/rsyncd.passwd
啟動rsync服務端:sudo rsync --daemon(客戶端不用啟動)
Rsync客戶端(192.168.177.131)
安裝rsync工具
yum -y install rsync (預設會在etc目錄下生成一個rsync的配置文件)
配置認證密碼文件
echo passwd(只需要密碼就行) >> /etc/rsyncd.passwd
修改許可權
chmon 600 /etc/rsyncd.passwd
測試文件同步情況:
rsync -avz --progress --password-file=/etc/rsyncd.passwd [email protected]::rsynctest /tmp/rsynctest/
測試完成!
命令參數詳解:
-v, –verbose 詳細模式輸出
-z, –compress 對備份的文件在傳輸時進行壓縮處理
-r, –recursive 對子目錄以遞歸模式處理
-t, –times 保持文件時間信息
-o, –owner 保持文件屬主信息
-p, –perms 保持文件許可權
-g, –group 保持文件屬組信息
–-progress 顯示傳輸進度
--delete 刪除客戶端多餘文件
總結的還不到位,希望有問題可以指出!