天天看點

rsync , rsync + ssh, rsync + lsyncd 多種同步方案與比較

1. 利用 ssh+rsync

 隻需要在伺服器端打開 ssh 服務, 并啟動 xinetd 中 rsync 服務則可使用

 a. 增量同步

 b. 鏡像同步

 特點: 配置簡單, 不需要配置 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 目錄

下載下傳最新版

<a href="http://lsyncd.googlecode.com/files/lsyncd-2.0.5.tar.gz">http://lsyncd.googlecode.com/files/lsyncd-2.0.5.tar.gz</a>

依賴: lua &gt;= 5.1.3, rhel6 更新檔

<a href="ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6rolling/i386/os/packages/lua-devel-5.1.4-4.1.el6.i686.rpm">ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6rolling/i386/os/packages/lua-devel-5.1.4-4.1.el6.i686.rpm</a>

文法需調用 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秒延時

  不建議采用大檔案進行同步

繼續閱讀