1.1服務器硬件信息
1.2 服務器軟件信息
1.3 Rsync所能夠支持的功能
(1)支持斷點續傳
(2)支持使用ssh傳輸加密
(3)支持128位MD4校驗(3.0以後版本使用MD5加密)
(4)支持鏡像
(5)支持限速
(6)支持目錄層級遞歸拷貝
1.4常用Rsync參數詳解
-a, --archive |
It is a quick way of saying you want recursion and want to preserve almost everything. |
-r, --recursive |
This tells rsync to copy directories recursively. |
-t, --times |
This tells rsync to transfer modification times along with the files and update them on the remote system |
-u, --update |
This forces rsync to skip any files for which the destination file already exists and has a date later than the source file |
-z, --compress |
With this option, rsync compresses any data from the files that it sends to the destination machine |
-P |
斷點續傳 詳細顯示傳輸過程(傳輸進度) |
-c, --checksum |
This forces the sender to checksum all files using a 128-bit MD4 checksum before transfer |
-n, --dry-run |
This tells rsync to not do any file transfers, instead it will just report the actions it would have taken. |
--delete |
This tells rsync to delete any files on the receiving side that aren't on the sending side |
--bwlimit=KBPS |
This option allows you to specify a maximum transfer rate in kilobytes per second |
--protocol (隱藏參數) |
選擇傳輸時使用的TCP/IP協議字段號 |
-B |
--block-size=SIZE checksum blocking size (default 700) |
1.5服務器邏輯
兩臺服務器相鄰,在同一個機房
1.6 rsync server模式配置
1、目標主機(DST)設置:
(1)添加rsyncd.conf配置文件
cat>/etc/rsyncd.conf<<EOF uid=root gid=root secrets file = /etc/rsyncd.secrets max connections=36000 use chroot=no log file=/var/log/rsyncd.log pid file=/var/run/rsyncd.pid lock file=/var/run/rsyncd.lock [rsyncDST] path=/home/work/rsyncDST/share/1/0/ comment = rsync test ignore errors = no read only = no hosts allow =10.0.101.241 hosts deny = * EOF |
(2)配置rsync.secrets認證文件
cat>/etc/rsyncd.secrets<<EOF rsync:123456 EOF |
(3)修改rsync.secrets認證文件權限
chmod 600 /etc/rsyncd.secrets |
(4)啓動rsync server
/usr/local/rsync/bin/rsync --daemon |
Rsync傳輸測試
2.1初始化
(1)將兩臺機器加入監控
(2)將兩臺服務器建立SSH信任關係
2.2 傳輸壓縮測試
1、SSH隧道加密傳輸,啓用壓縮,不啓用數據校驗
2、SSH隧道加密傳輸,未啓用壓縮,不啓用數據校驗
3、數據分析:
Rsync在傳輸時,不啓用壓縮,比啓用壓縮要快將近10倍
壓縮使用的場合:低帶寬,或對帶寬有要求。傳輸文件壓縮比率大
非壓縮適用的場合:帶寬充足,傳輸文件比較大,傳輸文件壓縮比率小
建議不啓用壓縮
2.3 傳輸數據校驗測試
1、SSH隧道加密傳輸,未啓用壓縮,不啓用數據校驗
2、SSH隧道加密傳輸,未啓用壓縮,啓用數據校驗
3、數據分析:
Rsync在傳輸時,啓用數據校驗,比不啓用數據校驗多耗時30%
文件校驗使用的場合:對文件完整性要求高
非文件校驗適用的場合:對文件完整性要求低
建議使用文件校驗
2.4 傳輸方式測試
1、SSH隧道加密傳輸,未啓用壓縮,啓用數據校驗
2、rsync server傳輸,未啓用壓縮,啓用數據校驗
3、數據分析:
SSH隧道傳輸,速度比rsync server要快,但CPU資源消耗比較高,加密耗時較多
SSH隧道傳輸適用的場合:安全性要求比較高,對CPU資源消耗要求低
rsync server適用的場合:對安全性要求比較低,對CPU資源消耗要求高。
建議使用SSH加密隧道模式傳輸
2.5 其他影響傳輸速度的因素
1、SSH加密算法影響文件傳輸速度
注:以上文件傳輸測試過程中未啓用壓縮,未啓用數據校驗
使用SSH加密隧道傳輸時,如果希望數據傳輸較快,建議使用arcfour弱加密算法
2、修改TCP/IP協議字段,--protocol=29
(1)SSH隧道加密傳輸,未啓用壓縮,啓用數據校驗,不修改TCP/IP協議字段
(2)SSH隧道加密傳輸,未啓用壓縮,啓用數據校驗,修改TCP/IP協議字段爲29
(3)數據分析:
修改TCP/IP協議字段,傳輸速度有了明顯的提升。但是由於使用SSH加密隧道,程序運行耗時依舊很多。
建議修改TCP/IP協議字段爲29
附: TCP/IP協議字段號
3、其他
rsync server模式,未啓用壓縮,啓用數據校驗,修改TCP/IP協議字段爲29。
傳輸平均速度在120MB/S以上。傳輸耗時3m2.584s
rsync server模式,未啓用壓縮,未啓用數據校驗,修改TCP/IP協議字段爲29。
傳輸平均速度在122MB/S以上。傳輸耗時2m14.185s
測試過程中,調節—block-size參數等於512,可以縮短checksum時間,總傳輸時間可節省大概3s左右
結 論
根據當前生產環境,以及測試數據,我得出的結論如下:
1、 如果對數據安全性要求低,建議選擇rsync server模式,未啓用壓縮,啓用數據校驗,修改TCP/IP協議字段號爲29。
2、 如果對數據安全性要求高,建議選擇SSH隧道加密傳輸,arcfour弱加密算法,未啓用壓縮,啓用數據校驗,修改TCP/IP協議字段號爲29
3、 如果是第一次推送數據,建議加上-W參數,意思是不檢查文件更新,直接傳送整個文件,這樣可以減少文件檢測時間,節省程序總運行時間。
4、 如果想進一步節省程序運行時間,可在使用checksum的同時,加上—block-size=512這個參數(默認是700)。數值建議是500以上,並且是2的N次方,最大不超過2048。推薦512,1024,2048這三個值。
5、 在傳輸數據時,爲了不影響線上正常業務,建議根據線上實際情況,通過—bwlimit=KPBS參數對帶寬進行限制