Rsync實現文件的同步

故事背景:咱們公司是作新零售的,須要對發佈的每臺機器進行文件的同步更新,因此我這裏作了一個小小的調研linux

 

技術調研:linux之間同步文件有兩種方式rsync與scp。vim

sync和scp在文件夾均不存在時,執行時間相差不大,可是文件夾存在的狀況下差別很大。緣由是scp是複製:若mas2文件不存在則新建,若存在則覆蓋,若mas2上有而Dashboard主機沒有,則不改變。能夠理解爲scp爲「複製」。而rsync則在文件在存在於兩主機時,比較兩文件是夠相同,相同的話,就什麼都不作,若存在差別就直接更新。安全

簡單的說rsync只對差別文件作更新。ssh


#### Rsync介紹
rsync是一款開源的備份工具,能夠再不一樣主機之間進行同步,實現全量和增量備份,適用於集中備份或異地備份等應用場景。
rsync監聽端口:873
rsync運行模式:C/S
#### Rsync傳輸模式
- 本地模式
本地傳輸,主機內部進行數據傳輸(相似於cp命令)
- 遠程模式
遠程通道傳輸,經過ssh通道傳輸數據(相似scp命令)
- 守護進程模式
守護進程傳輸,不使用系統用戶進行傳輸(安全性高) 工具

#### Rsync命令參數
-a 複製各類類型的文件(至關於-tropgDl)
-v 顯示傳輸過程
-z 傳輸時進行壓縮
-r 遞歸傳輸目錄和子目錄
-t 保持文件時間不變
-o 保持文件屬主信息
-g 保持文件屬組信息
-p 保持文件權限
-l 保持軟鏈接
-P 顯示同步進度及過程
-D 保持設備文件信息
--bwlimit=100 限速傳輸
--delete 源和目標數據保持一致
--partial 斷點續傳 ui

#### 安裝rsync
`sudo apt-get install`通常機器好像都有
#### 服務端
1. 建立rsyncd.conf配置文件,sudo vim /etc/rsyncd.conf
`uid = ai #運行進程用戶
gid = ai #運行用戶組
port = 873 #監聽端口
fake super = yes #無需rsync以root身份運行,容許接受數據
use chroot = no #禁錮推送數據至某個目錄
max connections = 0 #最大鏈接數
timeout = 600 #超時時間
log file = /var/log/rsyncd.log #定義日誌文件路徑
#####################################
[backup] #模塊名稱
path = /backup #定義接收備份數據目錄
ignore errors #忽略錯誤信息
read only = false #對備份數據可讀寫
list = false #不容許查看模塊信息
auth users = test #定義虛擬用戶,認證使用
secrets file = /etc/rsync.passwd #認證密碼路徑` spa

2. 建立rsync.passwd
`echo "test:123456" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd 否則傳輸會報錯`
3. 啓動rsync
`rsync --daemon` 日誌

#### 客戶端
1. 建立rsync.passwd
`echo "123456" > /etc/rsync.password
chmod 600 /etc/rsync.password 否則傳輸會報錯` 遞歸

#### 實例(拉取)
`rsync -avz test@192.168.174.128::backup --password-file=/etc/rsyncd.password /tmp/backup/` 進程

#### 定時拉取 把拉取指令配置在客戶端crontab便可

相關文章
相關標籤/搜索