rsync

remote sync

rsync有四種工作模式:
第一個是shell模式,也稱爲本地模式;
第二個是遠程shell模式,其利用SSH執行底層連接和傳輸;
第三個是列表模式,其工作方式與ls相似,即列出源的內容;-nv
第四個模式是服務器模式。rsync以守護進程方式運行,接收文件傳輸請求。在使用時,可以使用rsync命令把文件發送給守護進程,也可以向它請求文件。服務器模式非常適合創建中心備份服務器或項目存儲庫。

Rsync常用選項:
-v, --verbose 詳細模式輸出
-q, --quiet 精簡輸出模式
-c, --checksum 打開校驗開關,強制對文件傳輸進行校驗
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD
-r, --recursive 對子目錄以遞歸模式處理
-l, --links 保留符號鏈結
-p, --perms 保留文件權限
-t, --times 保留文件時間戳
-g, --group 保留文件屬組信息
-o, --owner 保留文件屬主信息
-D, --devices 保留設備文件即特殊文件信息

-e, --rsh=COMMAND 指定替代rsh的shell程序
-z, --compress 對備份的文件在傳輸時進行壓縮處理

-n執行試運行。試運行 會預覽對每個文件的操作,但是不會實際複製數據。當確認所有設置是正確的之後,***-n選項,再次運行命令。

還可以使用兩個選項監視傳輸的狀態:--progress和--stats。
--progress 顯示進度條
--stats 顯示如何執行壓縮和傳輸

--delete ***目標目錄內多餘的文件

注意:rsync命令使用中,如果源參數的末尾有斜槓,就會複製指定目錄的內容,而不復制目錄本身。目標參數末尾的斜槓沒有作用。如下面的命令會把/mydata/data目錄中的所有文件複製到/backups目錄中。
# rsync /mydata/data/ /backups/

可以同步兩臺服務器上不同目錄

rsync –rl /www/htdocs host:/www 把htdocs目錄同步到遠程主機www目錄下 用法類似scp

rsync + inotify 文件數量不是太多 文件不是太大 場景

案例

本案例實現監控原主機上指定目錄中的所有文件變化,並將變化實時同步至目標主機的指定目錄中;所用主機及相關目錄如下:

源主機:centos 6.4 (x86_64),192.168.200.131, 文件所在的目錄爲/www/htdocs;

目標主機:centos 6.4 (x86_64),192.168.200.201, 文件所在的目錄爲/www/htdocs;

設定源主機

1 安裝相關軟件

安裝epel源

yum install inotify-tools ,rsync

mkdir –p /www/htdocs

2 爲源主機的rsync提供口令文件

echo ‘redhat’ > /etc/rsync.passwd

chmod 600 /etc/rsync.passwd

3建立腳本 htdocsync.sh 通過inotifywait 監控目標文件上相應事件,並觸發同步過程

Vim htdocsync.sh

#!/bin/bash

#

DESTHOST=192.168.200.201

DESTHOSTDIR=/www/htdocs/

SRCDIR=/www/htdocs/

inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write,modify,delete,create,attrib $SRCDIR | while read DATE TIME DIR FILE; do

FILECHANGE=${DIR}${FILE}

rsync -avz --password-file=/etc/rsync.passwd $SRCDIR htdocsuser@${DESTHOST}::htdocs &>/dev/null && \

echo "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync" >> /var/log/websync.log

done

chmod u+x htdocsync.sh

bash htdocsync.sh &

開機自動啓動

echo ‘bash /roo/htdocsync.sh &’ >> /etc/rc.d/rc.local

設定目標主機

1 安裝相關軟件

yum install rsync xinetd

mkdir –p /www/htdocs

2 提供配置文件 默認沒有

Vim /etc/rsyncd.conf

# Section 1: Global settings

uid = nobody

gid = nobody

use chroot = no

max connections = 3

strict modes = yes

pid file = /var/run/rsyncd.pid

log file = /var/log/rsyncd.log

# Section 2:Directory to be synced

[htdocs]

path = /www/htdocs

ignore errors = yes

read only = no

write only = no

hosts allow = 192.168.200.0/24

hosts deny = *

list = false

uid = root

gid = root

auth users = htdocsuser

secrets file = /etc/rsync.passwd

3 提供口令文件

Vim /etc/rsync.passwd

htdocsuser:redhat

chmod 600 /etc/rsync.passwd

4 配置服務 開機啓動

chkconfig rsync on

chkconfig xinetd on

service xinetd start

netstat –tnlp | grep 873

tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3653/xinetd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章