890
技術社區[雲棲]
rsync , rsync + ssh, rsync + lsyncd 多種同步方案與比較
1. 利用 ssh+rsync
隻需要在服務器端打開 ssh 服務, 並啟動 xinetd 中 rsync 服務則可使用
a. 增量同步
rsync -av /src-dir/. user@ipadress:/dest-dir/.
b. 鏡像同步
rsync -av --delete /src-dir/. user@ipadress:/dest-dir/.
特點: 配置簡單, 不需要配置 rsyncd.conf 配置文件, 但需要在同步過程中進行用戶認證
注: 利用 expact + gzipexe 可以創建自動同步加密腳本
使用: 可手動同步或每天晚上定製時間任務同步
缺點:無法實現實時同步, 不可以成為雙機熱備份方案麼
2. 啟用 rsync 服務
需要配置 /etc/rsyncd.conf 配置文件, 需要啟動 xinetd 中 rsync 服務, 可以不通過 sshd 協調
a. 配置文件 (參考 man 5 rsyncd.conf , 目錄共享管理參考 smb.conf)
rsyncd.conf 參考
motd file = true # 時間記錄
pid file = /var/run/rsyncd.pid
port = 873
address = 0.0.0.0
log file = /var/log/rsyncd.log # rsync 獨立日誌, 記錄每個文件更新信息
syslog facility = syslog # 增加同步啟動與結束信息到 /var/log/messages 仲
uid = nobody # 注: 定義同步時 rsync 進程用戶 id
gid = nobody
use chroot = no
[share]
path=/tmp/test
read only=false
rsyncd.conf 配置安全信息:
charset 用於設定字符集, 可用字符集參考 smb.conf 標準
max connections 並發連接數量
read only 讀寫控製
write only 讀寫控製
list 是否允許客戶端利用 rsync --list-only rsync://192.168.1.11:873 查詢共享目錄信息
注: rsync --list-only rsync://192.168.1.11:873/share/. 能夠列出文件信息, 與 list 參數無關
exclude 同步過程中忽略某個文件或目錄 ex: = new/ old/ kdump.conf (注:隻需要相對路徑)
exclude from = /etc/rsyncd.list 以文件記錄同步過程忽略信息
incoming chmod 文件目錄權限定義
outgoing chmod 文件目錄權限定義
auth users 配合 secrets file 使用, 定義用戶認證(明文) = user1 user2 user3
secrets file = filepath 驗證文件 語法 user:password (必須包含上述user123) 文件 root 600 屬性
hosts allow 主機 IP 定義
hosts deny 主機 IP 定義
log format 默認格式 %o %h [%a] %m (%u) %f %l 參考 rsyncd.conf
常見同步語法
rsync --list-only rsync://192.168.1.11:873/share/. 能夠列出文件信息
rsync --list-only rsync://192.168.1.11:873 查詢共享目錄信息
rsync --exclude-from=file.txt rsync://192.168.1.11:873/share/. /tmp/test/. 不同步指定信息
優點: 避免顯示主機文件信息絕對路徑, 多種安全設定, 不需要利用ssh 進行用戶驗證, 支持匿名同步
缺點: 無法主動推送文件
3. rsync+lsyncd 數據同步
[rsync server ] <------ [ lsyncd ] ---> [ rsync server ]
rsync 客戶端需要編譯 lsyncd 軟件,安裝 rsync 工具
rsync 服務器需要配置並啟動 rsync 進程, 如上例子, 匿名共享 share 目錄
下載最新版
https://lsyncd.googlecode.com/files/lsyncd-2.0.5.tar.gz
依賴: lua >= 5.1.3, rhel6 補丁
https://yq.aliyun.com/articles/ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6rolling/i386/os/Packages/lua-devel-5.1.4-4.1.el6.i686.rpm
語法需調用 LUA 格式
創建配置文件 share.lua
settings = {
.. 略
nodaemon = true, # false 成為前台進程, 方便測試
statusInterval = 3, # lsyncd.status 狀態更新時間間隔
...略
}
sync{
.. 略
}
bash = {
... 略
}
settings 為主配置, sync 為同步配置, bash 為同步方案
啟動方法
lsyncd share.lua
初次啟動則會自動同步文件內容, 後發生文件修改, 增加, 刪除都會進行自動同步
如果需要對多台電腦進行同步, 可以利用 lsyncd backup.lua 等腳本多次進行進程啟動
方案優點:
1. 自動對目錄中文件向 rsync 服務器進行推送
2. 能夠支持多台 rsync 服務器
3. 避免人工參與修改
缺點:
同步時間非實時, 約莫具有30秒延時
不建議采用大文件進行同步
最後更新:2017-04-02 06:52:18