1. 程式人生 > >用rsync來同步Hadoop各伺服器配置

用rsync來同步Hadoop各伺服器配置

2012-07-05

http://abloz.com date:2012.7.5 update:2012.8.8

rsync是一個很好用遠端同步工具。相較scp而言,在Hadoop類似的分散式部署中,rsync更加強大好用。

示例,同步hbase-env.sh配置。

[[email protected] ~]$ cd hbase-0.94.0/conf
[[email protected] conf]$ vi hbase-env.sh

#將HBase預設記憶體改為4G
# The maximum amount of heap to use, in MB. Default is 1000.
export HBASE_HEAPSIZE=4000

同步到Hadoop46,47,-v引數可以看到詳細情況:

[[email protected] conf]$ rsync -v hbase-env.sh Hadoop46:~/hbase-0.94.0/conf/.
[[email protected] conf]$ rsync -v hbase-env.sh Hadoop47:~/hbase-0.94.0/conf/.

還可以同步目錄

[[email protected] conf]$ rsync -ave ssh ./ Hadoop46:~/hbase-0.94.0/conf/.
building file list ... done
./
hadoop-metrics.properties
hbase-env.sh
hbase-policy.xml
hbase-site.xml
log4j.properties
regionservers

sent 563 bytes  received 284 bytes  1694.00 bytes/sec
total size is 12833  speedup is 15.15

可以指定協議和埠。如指定ssh協議的50022埠.-a 引數表示歸檔檔案archive:

rsync -av -e 'ssh -p 50022' hbase-env.sh Hadoop47:~/hbase-0.94.0/conf/.

同步目錄,注意尾部的“/”。源目錄尾部不加”/”,會在目標中建立源的目錄。源目錄尾部加“/”,則複製的是源目錄中的內容,不會在目標中建立相應目錄

[[email protected] ~]$ rsync -uavz   ./hbase-0.94.0 h185:~/

-u: update,沒變的檔案不更新。 -a: archive,相當於-rlptgoD -z:壓縮 該命令相當於將hbase-0.94.0整個目錄都移到h185的zhouhh目錄下。 相當於

[[email protected] ~]$ rsync -uavz   ./hbase-0.94.0/ h185:~/hbase-0.94.0/

包含和布包含多個目錄或檔案: –include, –exclude 如果從遠端同步到本地,還可以用 rsync -av host:’dir1/file1 dir2/file2’ /dest

寫成make指令碼Makefile,同步test目錄

[[email protected] test]$ vi Makefile
get:
    rsync -avuzb --exclude '*~' Hadoop48:~/test/ .
put:
    rsync -Cavuzb ./ Hadoop48:~/test/
sync: get put

[[email protected] test]$ make get
rsync -avuzb --exclude '*~' Hadoop48:~/test/ .
...
sent 654 bytes  received 25839 bytes  5887.33 bytes/sec
total size is 85601  speedup is 3.23

-C 表示不同步cvs獲取檔案時的做法。會忽略一些cvs自動生成的檔案,適合做cvs目錄同步備份。

相關引數說明,也可以用man獲得:


客戶端同步命令
v, –verbose 詳細模式輸出
-q, –quiet 精簡輸出模式
-c, –checksum 開啟校驗開關,強制對檔案傳輸進行校驗
-a, –archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD
-r, –recursive 對子目錄以遞迴模式處理
-R, –relative 使用相對路徑資訊

rsync foo/bar/foo.c remote:/tmp/

則在/tmp目錄下建立foo.c檔案,而如果使用-R引數:

rsync -R foo/bar/foo.c remote:/tmp/

則會建立檔案/tmp/foo/bar/foo.c,也就是會保持完全路徑資訊。

-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的shell程式
–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 顯示幫助資訊

如非註明轉載, 均為原創. 本站遵循知識共享CC協議,轉載請註明來源