搭建的服務:rsync
需求:
- 服務端的 /mnt/rsync 文件夾內容同步到客戶端的 /mnt/rsync 文件夾內容, 時間爲1小時同步一次。
- 服務端的 /data/rsync 文件夾內容同步到客戶端的 /data/rsync 文件夾內容, 時間爲實時同步。
架構圖
搭建 rsync(在服務器 192.168.10.204操作)
yum 安裝 rsync 版本:rsync-3.1.2-4
yum install -y rsync
1、配置 rsync 配置文件(解析只需要修改的部分,不修改不做解析)
uid = nobody
gid = nobody
use chroot = no //是否使用chroot
strict modes = false
read only = false //是否爲只讀
log file = /var/log/rsyncd.log //日誌文件位置
pid file = /var/run/rsyncd.pid //存檔進程ID的文件位置
port = 873 //監聽端口
max connections = 4 //最大連接數
[mnt] //共享模塊名稱
path = /mnt/rsync //源目錄的實際路徑
auth users = rosen //授權賬戶
secrets file = /etc/rsyncd.scrt //存放賬戶信息的數據文件
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 //同步時不再壓縮的文件類型
[data]
path = /data/rsync
auth users = rosen
secrets file = /etc/rsyncd.scrt
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
2、建立賬號文件,修改權限
# vim /etc/rsyncd.scrt
rosen:rosen123
# chmod 600 /etc/rsync.scrt
注:另一臺服務器 192.168.10.246 安裝啓動就好,不用修改配置
添加賬號文件/etc/rsyncd.scrt 直接寫密碼即可
# vim /etc/rsyncd.scrt
rosen123
3、兩臺 rsync 啓動服務
# service rsyncd start
# netstat -ntlp (端口號 873)
在服務端建立文件夾和文件測試觀察效果
# mkdir /mnt/rsync
# chmod 777 /mnt/rsync/
# touch {1..9}.txt /mnt/rsync
# mkdir /data/rsync
# chmod 777 /data/rsync/
# touch {1..9}.sql /data/rsync
4、連接同步(以下 4 和 5 的操作都在服務器 192.168.10.246 上實現)
# rsync -az --delete --password-file=/etc/rsyncd.scrt [email protected]::mnt /mnt/rsync/
# rsync -az --delete --password-file=/etc/rsyncd.scrt [email protected]::data /data/rsync/
5、加入到 crontab -e 中定時同步數據
# crontab -e
* 1/* * * * rsync -az --delete --password-file=/etc/rsyncd.scrt [email protected]::mnt /mnt/rsync/ 每1小時同步一次
* * * * * rsync -az --delete --password-file=/etc/rsyncd.scrt [email protected]::data /data/rsync/ 每秒鐘同步一次
用法如下:
下行:rsync […] user@host:遠程目錄 本地目錄
上行:rsync […] 本地目錄 user@host:遠程目錄
語法解釋
-a 同步,歸檔模式,相當於-rpltgoD(-r遞歸,包括目錄/子目錄及所有文件。-l 保留符號鏈接文件。 -p 、-t 保留文件的權限、時間標記。 -o 、-g 保留文件的屬主?屬組標記。 -D 保留設備文件及其他特殊文件)
-v 可以看到操作細節
-n 測試同步操作,不做實際修改
-z 是壓縮傳輸,-r 是recursive
-u 是隻同步已經更新的文件,避免沒有更新的文件被重複更新一次,不過要注意兩者機器的時鐘的同步。
–progress是指顯示出詳細的進度情況
–delete是指如果服務器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致
–password-file=/etc/rsyncd.scrt 來指定密碼文件,無需交互式地輸入驗證密碼,注意的是這份密碼文件權限屬性要設得只有屬主可讀
rsync -a /boot /todir //同步整個文件夾
rsync -a /boot/ /todir/ //只同步目錄下的數據
用法一:手動輸入密碼交互方式共享資源同步到本地
rsync -az <用戶名>@ip::<共享目錄>/ /opt
用法二:自動交互式
rsync -az --delete --password-file=/etc/rsyncd.scrt <用戶>@IP::<遠端目錄> /<本地目錄>