rsync同步服务配置手记
Rsync在推送或抓取數據時,在rsync客戶端會出現性能問題, 負載比較大且數據量比較大的生產環境要注意這一點。?本文只是個人平時配置示例,可以簡單修改后用于實際環境使用,rsync不僅可以實現服務器間的復制,對于本地目錄的同步也相當方便, 其它功能如實時同步等功能待補充。
1. linux平臺rsync服務配置示例
(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) 加入計劃任務
# crontab -e ?
40 12,23? * * *?? /root/system/rsync_bak_to_10.sh
(3) 服務端配置方式
# 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
服務端配置開機自啟動,以及手動執行啟動命令。
# vi /etc/rc.local
/usr/bin/rsync --daemon --port=1865
重啟rsync服務采用的殺進程方式。先ps –ef |grep rsync 找到進程號,再kill –9 xxxx殺之,再啟動。
?
2. windows環境中cwRsync服務器端與客戶端安裝配置
客戶端: cwRsync_4.1.0_Installer.zip ?
服務端: cwRsyncServer_4.1.0_Installer.zip ? ?
默認安裝即可,配置文件如下:
(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服務,將rsyncserver配置為啟動,自動啟動。
(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計劃任務
3. 采用SSH方式直接同步,無需要配置服務
# 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
注:如果兩服務器之前配置密鑰直接登錄的話,可以直接傳文件與SCP方式類似。
4. inotify實時同步配置
(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
調整inotify隊列參數及參數說明:
max_queued_events: inotify隊列最大長度,如果值太小,會出現"** Event Queue Overflow **"錯誤,導致監控文件不準確
max_user_watches:? 要同步的文件包含多少目錄
max_user_instances:每個用戶創建inotify實例最大值
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) 通過配置文件準備
# 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) 手動運行測試
運行的時候日志會自動輸出到終端,可以觀察運行的情況。
# /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format? '%T %w%f' -e modify,delete,create,attrib /data01 &
說明:
--timefmt: 指定輸出時的輸出格式
--format : '%T %w%f'指定輸出的格式
(4) 啟動,或將如下啟動腳本加入/etc/rc.local中。
# ./inosync.sh &
[1] 23254
說明:inotify有一個問題就是如果文件數據量比較大,或同步的文件比較大,或變更比較頻繁,效率不高。
rsync參數:
-v, --verbose?????? 詳細模式輸出
-q, --quiet???????? 精簡輸出模式
-c, --checksum????? 打開校驗開關,強制對文件傳輸進行校驗
-a, --archive?????? 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD
-r, --recursive???? 對子目錄以遞歸模式處理
-R, --relative????? 使用相對路徑信息
-b, --backup??????? 創建備份,也就是對于目的已經存在有同樣的文件名時,將老的文件重新命名為~filename。可以使用--suffix選項來指定不同的備份文件前綴。
--backup-dir??????? 將備份文件(如~filename)存放在在目錄下。
-suffix=SUFFIX????? 定義備份文件前綴
-u, --update??????? 僅僅進行更新,也就是跳過所有已經存在于DST,并且文件時間晚于要備份的文件。(不覆蓋更新的文件)
-l, --links???????? 保留軟鏈結
-L, --copy-links??? 想對待常規文件一樣處理軟鏈結
--copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的鏈結
--safe-links??????? 忽略指向SRC路徑目錄樹以外的鏈結
-H, --hard-links??? 保留硬鏈結
-p, --perms???????? 保持文件權限
-o, --owner???????? 保持文件屬主信息
-g, --group???????? 保持文件屬組信息
-D, --devices?????? 保持設備文件信息
-t, --times???????? 保持文件時間信息
-S, --sparse??????? 對稀疏文件進行特殊處理以節省DST的空間
-n, --dry-run?????? 現實哪些文件將被傳輸
-W, --whole-file??? 拷貝文件,不進行增量檢測
-x, --one-file-system 不要跨越文件系統邊界
-B, --block-size=SIZE 檢驗算法使用的塊尺寸,默認是700字節
-e, --rsh=COMMAND?? 指定使用rsh、ssh方式進行數據同步
--rsync-path=PATH?? 指定遠程服務器上的rsync命令所在路徑信息
-C, --cvs-exclude?? 使用和CVS一樣的方法自動忽略文件,用來排除那些不希望傳輸的文件
--existing????????? 僅僅更新那些已經存在于DST的文件,而不備份那些新創建的文件
--delete??????????? 刪除那些DST中SRC沒有的文件
--delete-excluded?? 同樣刪除接收端那些被該選項指定排除的文件
--delete-after????? 傳輸結束以后再刪除
--ignore-errors???? 及時出現IO錯誤也進行刪除
--max-delete=NUM??? 最多刪除NUM個文件
--partial?????????? 保留那些因故沒有完全傳輸的文件,以是加快隨后的再次傳輸
--force???????????? 強制刪除目錄,即使不為空
--numeric-ids?????? 不將數字的用戶和組ID匹配為用戶名和組名
--timeout=TIME????? IP超時時間,單位為秒
-I, --ignore-times? 不跳過那些有同樣的時間和長度的文件
--size-only???????? 當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間
--modify-window=NUM 決定文件是否時間相同時使用的時間戳窗口,默認為0
-T --temp-dir=DIR??? 在DIR中創建臨時文件
--compare-dest=DIR?? 同樣比較DIR中的文件來決定是否需要備份
-P 等同于 --partial
--progress????????? 顯示備份過程
-z, --compress????? 對備份的文件在傳輸時進行壓縮處理
--exclude=PATTERN?? 指定排除不需要傳輸的文件模式
--include=PATTERN?? 指定不排除而需要傳輸的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version?????????? 打印版本信息
--address?????????? 綁定到特定的地址
--config=FILE?????? 指定其他的配置文件,不使用默認的rsyncd.conf文件
--port=PORT???????? 指定其他的rsync服務端口
--blocking-io?????? 對遠程shell使用阻塞IO
-stats????????????? 給出某些文件的傳輸狀態
--progress????????? 在傳輸時現實傳輸過程
--log-format=formAT?? 指定日志文件格式
--password-file=FILE? 從FILE中得到密碼
--bwlimit=KBPS??????? 限制I/O帶寬,KBytes per second
-h, --help??????????? 顯示幫助信息
轉載于:https://blog.51cto.com/koumm/1581565
總結
以上是生活随笔為你收集整理的rsync同步服务配置手记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 41260元 LG ProBeam BU
- 下一篇: 我理解Docker的过程2