rsync同步服务配置手记
Rsync在推送或抓取數(shù)據(jù)時(shí),在rsync客戶端會(huì)出現(xiàn)性能問題, 負(fù)載比較大且數(shù)據(jù)量比較大的生產(chǎn)環(huán)境要注意這一點(diǎn)。?本文只是個(gè)人平時(shí)配置示例,可以簡單修改后用于實(shí)際環(huán)境使用,rsync不僅可以實(shí)現(xiàn)服務(wù)器間的復(fù)制,對(duì)于本地目錄的同步也相當(dāng)方便, 其它功能如實(shí)時(shí)同步等功能待補(bǔ)充。
1. linux平臺(tái)rsync服務(wù)配置示例
(1) 客戶端同步腳本
#!/bin/bash ?
# author: koumm ? ?
# desc: backup for /data/ to 10 ? ?
# date: 20xx-xx-xx ? ?
# version: v1.0 ? ?
# modify:
#rsync bak ?
end_date=`date +%Y/%m/%d_%H%M%S`
/usr/bin/rsync -vzrtopg --delete /data/ 192.168.200.10::ip6/ --exclude "tmp/" --port=1865
echo "" ?
echo "############################################" ? ?
echo "rsync completed time is :$end_date" ? ?
echo "############################################"
(2) 加入計(jì)劃任務(wù)
# crontab -e ?
40 12,23? * * *?? /root/system/rsync_bak_to_10.sh
(3) 服務(wù)端配置方式
# vi /etc/rsyncd.conf ?
uid=root ? ?
gid=root ? ?
max connections=36000 ? ?
use chroot=no ? ?
log file=/var/log/rsyncd.log ? ?
pid file=/var/run/rsyncd.pid ? ?
lock file=/var/run/rsyncd.lock ? ?
[ip6] ? ?
path=/data/project_bak/IP6 ? ?
comment = IP6 ? ?
ignore errors ? ?
read only = no ? ?
write only = no ? ?
list = no?
hosts allow = 192.168.200.0/24 ? ?
#auth users = www ? ?
#secrets file = /etc/rsyncd.secrets
服務(wù)端配置開機(jī)自啟動(dòng),以及手動(dòng)執(zhí)行啟動(dòng)命令。
# vi /etc/rc.local
/usr/bin/rsync --daemon --port=1865
重啟rsync服務(wù)采用的殺進(jìn)程方式。先ps –ef |grep rsync 找到進(jìn)程號(hào),再kill –9 xxxx殺之,再啟動(dòng)。
?
2. windows環(huán)境中cwRsync服務(wù)器端與客戶端安裝配置
客戶端: cwRsync_4.1.0_Installer.zip ?
服務(wù)端: cwRsyncServer_4.1.0_Installer.zip ? ?
默認(rèn)安裝即可,配置文件如下:
(1) 修改rsyncd.conf配置文件(C:\Program Files\ICW\rsyncd.conf)
use chroot = false ?
strict modes = false ? ?
hosts allow = * ? ?
log file = rsyncd.log ? ?
gid = 0 ? ? ?
uid = 0
[gzbak] ?
path = /cygdrive/d/data ? ?
read only = false ? ?
transfer logging = yes
修改windows服務(wù),將rsyncserver配置為啟動(dòng),自動(dòng)啟動(dòng)。
(2) cwRsync同步備份腳本示例
rsync.bat ?
@echo off ? ?
cls ? ?
"C:\Program Files\cwRsync\bin\rsync.exe" -avr --delete /cygdrive/c/opt 192.168.233.14::gzbak/ --port=1865
(3) 配置windows計(jì)劃任務(wù)
3. 采用SSH方式直接同步,無需要配置服務(wù)
# rsync -avz -e ssh 192.168.0.25:/data/ /data01/
root@192.168.0.25's password:? 輸入密碼
receiving incremental file list
./
a.txt
abc.txt
注:如果兩服務(wù)器之前配置密鑰直接登錄的話,可以直接傳文件與SCP方式類似。
4. inotify實(shí)時(shí)同步配置
(1) Inotify-tools安裝,只在客戶端安裝即可。
下載地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
# tar zxvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.13
# ./configure --prefix=/usr/local/inotify
# make && make install
調(diào)整inotify隊(duì)列參數(shù)及參數(shù)說明:
max_queued_events: inotify隊(duì)列最大長度,如果值太小,會(huì)出現(xiàn)"** Event Queue Overflow **"錯(cuò)誤,導(dǎo)致監(jiān)控文件不準(zhǔn)確
max_user_watches:? 要同步的文件包含多少目錄
max_user_instances:每個(gè)用戶創(chuàng)建inotify實(shí)例最大值
sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"
(2) 通過配置文件準(zhǔn)備
# vi inosync.sh
#!/bin/sh
SRC=/data01/
DST=192.168.1.125::data
INWT=/usr/local/inotify/bin/inotifywait
RSYNC=/usr/bin/rsync
$INWT -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,move,delete,modify,attrib $SRC \
| while read line
do
??????? $RSYNC -az --delete /data01/ 192.168.1.125::data
done
# chmod +x inosync.sh
(3) 手動(dòng)運(yùn)行測試
運(yùn)行的時(shí)候日志會(huì)自動(dòng)輸出到終端,可以觀察運(yùn)行的情況。
# /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format? '%T %w%f' -e modify,delete,create,attrib /data01 &
說明:
--timefmt: 指定輸出時(shí)的輸出格式
--format : '%T %w%f'指定輸出的格式
(4) 啟動(dòng),或?qū)⑷缦聠?dòng)腳本加入/etc/rc.local中。
# ./inosync.sh &
[1] 23254
說明:inotify有一個(gè)問題就是如果文件數(shù)據(jù)量比較大,或同步的文件比較大,或變更比較頻繁,效率不高。
rsync參數(shù):
-v, --verbose?????? 詳細(xì)模式輸出
-q, --quiet???????? 精簡輸出模式
-c, --checksum????? 打開校驗(yàn)開關(guān),強(qiáng)制對(duì)文件傳輸進(jìn)行校驗(yàn)
-a, --archive?????? 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD
-r, --recursive???? 對(duì)子目錄以遞歸模式處理
-R, --relative????? 使用相對(duì)路徑信息
-b, --backup??????? 創(chuàng)建備份,也就是對(duì)于目的已經(jīng)存在有同樣的文件名時(shí),將老的文件重新命名為~filename。可以使用--suffix選項(xiàng)來指定不同的備份文件前綴。
--backup-dir??????? 將備份文件(如~filename)存放在在目錄下。
-suffix=SUFFIX????? 定義備份文件前綴
-u, --update??????? 僅僅進(jìn)行更新,也就是跳過所有已經(jīng)存在于DST,并且文件時(shí)間晚于要備份的文件。(不覆蓋更新的文件)
-l, --links???????? 保留軟鏈結(jié)
-L, --copy-links??? 想對(duì)待常規(guī)文件一樣處理軟鏈結(jié)
--copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的鏈結(jié)
--safe-links??????? 忽略指向SRC路徑目錄樹以外的鏈結(jié)
-H, --hard-links??? 保留硬鏈結(jié)
-p, --perms???????? 保持文件權(quán)限
-o, --owner???????? 保持文件屬主信息
-g, --group???????? 保持文件屬組信息
-D, --devices?????? 保持設(shè)備文件信息
-t, --times???????? 保持文件時(shí)間信息
-S, --sparse??????? 對(duì)稀疏文件進(jìn)行特殊處理以節(jié)省DST的空間
-n, --dry-run?????? 現(xiàn)實(shí)哪些文件將被傳輸
-W, --whole-file??? 拷貝文件,不進(jìn)行增量檢測
-x, --one-file-system 不要跨越文件系統(tǒng)邊界
-B, --block-size=SIZE 檢驗(yàn)算法使用的塊尺寸,默認(rèn)是700字節(jié)
-e, --rsh=COMMAND?? 指定使用rsh、ssh方式進(jìn)行數(shù)據(jù)同步
--rsync-path=PATH?? 指定遠(yuǎn)程服務(wù)器上的rsync命令所在路徑信息
-C, --cvs-exclude?? 使用和CVS一樣的方法自動(dòng)忽略文件,用來排除那些不希望傳輸?shù)奈募?br />--existing????????? 僅僅更新那些已經(jīng)存在于DST的文件,而不備份那些新創(chuàng)建的文件
--delete??????????? 刪除那些DST中SRC沒有的文件
--delete-excluded?? 同樣刪除接收端那些被該選項(xiàng)指定排除的文件
--delete-after????? 傳輸結(jié)束以后再刪除
--ignore-errors???? 及時(shí)出現(xiàn)IO錯(cuò)誤也進(jìn)行刪除
--max-delete=NUM??? 最多刪除NUM個(gè)文件
--partial?????????? 保留那些因故沒有完全傳輸?shù)奈募?#xff0c;以是加快隨后的再次傳輸
--force???????????? 強(qiáng)制刪除目錄,即使不為空
--numeric-ids?????? 不將數(shù)字的用戶和組ID匹配為用戶名和組名
--timeout=TIME????? IP超時(shí)時(shí)間,單位為秒
-I, --ignore-times? 不跳過那些有同樣的時(shí)間和長度的文件
--size-only???????? 當(dāng)決定是否要備份文件時(shí),僅僅察看文件大小而不考慮文件時(shí)間
--modify-window=NUM 決定文件是否時(shí)間相同時(shí)使用的時(shí)間戳窗口,默認(rèn)為0
-T --temp-dir=DIR??? 在DIR中創(chuàng)建臨時(shí)文件
--compare-dest=DIR?? 同樣比較DIR中的文件來決定是否需要備份
-P 等同于 --partial
--progress????????? 顯示備份過程
-z, --compress????? 對(duì)備份的文件在傳輸時(shí)進(jìn)行壓縮處理
--exclude=PATTERN?? 指定排除不需要傳輸?shù)奈募J?br />--include=PATTERN?? 指定不排除而需要傳輸?shù)奈募J?br />--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version?????????? 打印版本信息
--address?????????? 綁定到特定的地址
--config=FILE?????? 指定其他的配置文件,不使用默認(rèn)的rsyncd.conf文件
--port=PORT???????? 指定其他的rsync服務(wù)端口
--blocking-io?????? 對(duì)遠(yuǎn)程shell使用阻塞IO
-stats????????????? 給出某些文件的傳輸狀態(tài)
--progress????????? 在傳輸時(shí)現(xiàn)實(shí)傳輸過程
--log-format=formAT?? 指定日志文件格式
--password-file=FILE? 從FILE中得到密碼
--bwlimit=KBPS??????? 限制I/O帶寬,KBytes per second
-h, --help??????????? 顯示幫助信息
轉(zhuǎn)載于:https://blog.51cto.com/koumm/1581565
總結(jié)
以上是生活随笔為你收集整理的rsync同步服务配置手记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 41260元 LG ProBeam BU
- 下一篇: 我理解Docker的过程2