rsync同步工具

簡介:###

rsync 是Linux系統下的數據鏡像備份工具,通過rsync 可以將本地的系統數據通過網絡備份到任何遠程主機上.
rsync 主頁地址:http:/rsync.samba.org
rsync特性:

  • 可以鏡像保存整個目錄樹和文件系統
  • 可以增量同步數據,文件傳輸效率高,因而同步時間很短
  • 可以保持原有文件的權限,時間等屬性
  • 加密傳輸數據,保證了數據的安全性

安裝rsync###

服務端和客戶端都需要安裝

./configure
make
make install

創建rsync 配置文件###

vi /etc/rsysncd.conf

uid=nobody
gid=nobody
max connections=10
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/run/rsyncd.log

[webdba]
path=/webdata
comment=webdba file
ignore errors
read only=true
list=false
uid=root
gid=root
auth users=backup
secrets file=/etc/server.pass

創建rsync連接用戶和密碼文件###

vi /etc/server.pass
backup:abc123

配置文件解釋
uid 當模塊傳輸文件時守護進程應該具有的用戶ID,默認值時 "nobody"
gid 當模塊傳輸文件時守護進程應該具有的用戶組ID,默認值時 "nobody"
max connections 最大并發連接數,以保護服務器,超過限制的連接數請求時,將被暫時限制。默認為0(沒有限制)
pid file 用來指定rsync 守護進程對應的PID文件路徑
lock file 用來支持max connections 的鎖文件,默認值時/var/run/rsyncd.lock
log file 指定rsync的日志輸出文件路徑
[webdba] 定義一個模塊的開始 webdba對應的是模塊名稱
path 用來指定需要備份的文件或目錄,必須填
list 當客戶端請求可以使用模塊列表時,該模塊可以被列出。默認為True,如果需要被隱藏,可以設置為false
auth users 用來定義可以連接到該模塊的用戶名,多個用戶用空格或者逗號分隔(需要注意這里的用戶不是Linux的系統用戶,沒有任何關系)
secrets file 指定一個包含 "用戶名:密碼" 格式的文件

服務端啟動 rsync 守護進程###

/usr/local/bin/rsync --daemon

ps -rf|grep rsync
root     20278     1  0 16:29 ?        00:00:00 /usr/local/bin/rsync --daemon 

客戶端配置rsync###

創建一個 secrets file,此文件的內容為服務端的 rsyncd.conf 文件中 "auth users"選項指定用戶的密碼,僅為備份用戶的密碼,而這個文件的名稱以及路徑可以隨意
指定,只要在執行 rsync 同步時指定即可。

vi /etc/server.pass
abc123

在客戶端執行同步命令###

/usr/local/bin/rsync -vzrtopg --delete --progress backup@192.168.60.253::webdba /webdba  --password-file=/etc/server.pass 

"--vzrtopg" 選項中
v 是"—verbose",即詳細模式輸出
z 表示"--compress" 即對備份的文件在傳輸時進行壓縮處理
r 表示"--recursive",也就是對子目錄以遞 歸模式處理
t 即"--times",用來保持文件時間信息
o 即"--owner"用來保持文 件屬主信息
p 即"--perms"用來保持文件權限
g 即"--group"用來保持文件的屬組信息

"--delete" 選項指定以 rsync 服務端為基準進行數據鏡像同步,也就是要保持 rsync 服務端目錄與客戶端目錄的完全一致性。在這里是以服務器為基準進行同步。

"--progress" 選項用于顯示數據鏡像同步的過程。

"backup@192.168.60.253::webdba" 表示對服務器 192.168.60.253 中的 webdba 模塊進行備份,也就是指定備份的模塊,backup 表示使用"backup"這個用 戶對該模塊進行備份。

"/webdba"用于指定備份文件在客戶端機器上的存放路徑,也就是將備份的文件 存放在備份機的/webdba 目錄下。

"--password-file=/etc/server.pass" 用來指定客戶機上存放的密碼文件位置,這樣在客戶端執行同步命令時就無需輸入交互密碼了,注意,這個密碼文件的名稱和位置可以隨意指定,但是在客戶機上必須存在此文件,文件的內容僅僅為備份用戶的密碼,這里指的是 backup 的密碼。

rsync+ssh 實現文件備份###

當在兩臺計算機之間保持大型、復雜目錄結構的同步時候,使用 ssh+rsync 比 tar 或 wget 等方式都要快。而且可以做到精確同步。
首先需要利用 ssh 客戶端密鑰建立信任關系,然后直接調用 rsync 命令即可。
用法如下:

/usr/bin/rsync -avzPL  --timeout=600  root@IP:/A/B/C  /B/D/F 
命令              參數      超時時間       遠程地址:遠程服務器的目錄  本地保存的目錄


觸發同步指令的方式有很多種,例如可以將同步指令放入客戶端系統的 crontab 守護進程, 設定同步時間,然后讓Linux 去觸發同步指令,自動完成數據備份。這種數據備份方式可以用于數據安全性要求不是很高的業務系統上。

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 給出某些文件的傳輸狀態
–log-format=formAT 指定日志文件格式
–password-file=FILE 從 FILE 中得到密碼
–bwlimit=KBPS 限制 I/O 帶寬,KBytes per second
-h, –help 顯示幫助信息

常見 rsync 錯誤總結

  1. rsync: failed to connect to 118.244.216.177: No route to host (113)
    rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]
    原因:防火墻屏蔽了端口
    解決:打開 873 段考
    iptables -i INPUT -p tcp --dport 873 -j ACCEPT iptables -L
    如果以上指令不行,可以直接停掉防火墻 /etc/init.d/iptables stop
  1. @ERROR: auth failed on module backup
    rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
    那估計是密碼文件沒有設置權限哦: chmod 600 /home/admin/security/rsync.pass 應該差不多就可以了
  1. @ERROR: auth failed on module xxxxx
    rsync: connection unexpectedly closed (90 bytes read so far)
    rsync error: error in rsync protocol data stream (code 12) at io.c(150)
    這是因為密碼設錯了, 無法登入成功, 請檢查一下 rsyncd.scrt 中的密碼, 二端是否一致?
  1. password file must not be other-accessible continuing without password file Password:
    這表示 rsyncd.scrt 的檔案權限屬性不對, 應設為 600。
  1. @ERROR: chroot failed
    rsync: connection unexpectedly closed (75 bytes read so far)
    rsync error: error in rsync protocol data stream (code 12) at io.c(150)
    這通常是您的 rsyncd.conf 中的 path 路徑所設的那個目錄并不存在所致.請先用 mkdir 開 設好要備份目錄
  1. @ERROR: access denied to www from unknown (192.168.1.123) rsync: connection unexpectedly closed (0 bytes received so far) [receiver] rsync error: error in rsync protocol data stream (code 12) at io.c(359)
    這是因為有兩個網段都需要同步該文件夾內容,但沒有在 hosts allow 后面添加另一個 IP 段 hosts allow = 192.168.1.0/24
    改為
    hosts allow = 192.168.1.0/24 192.168.2.0/24
    重新啟動 rsync 服務,問題解決
  2. @ERROR: auth failed on module backup
    rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
    client 端沒有設置/etc/rsync.pas 這個文件,而在使用 rsync 命令的時候,加了這個參數 --password-file=/etc/rsync.scrt
  1. rsync: recv_generator: mkdir "/teacherclubBackup/rsync……" failed: No space left on device
    (28)
    *** Skipping any contents from this failed directory ***
    磁盤空間滿了
  1. rsync: opendir "/kexue" (in dtsChannel) failed: Permission denied (13)
    同步目錄的權限設置不對,改為 755
  1. rsync: read error: Connection reset by peer (104)
    rsync error: error in rsync protocol data stream (code 12) at io.c(759) [receiver=3.0.5]
    未啟動 xinetd 守護進程
    [root@CC02 /]# service xinetd start
  1. rsync: unable to open configuration file "/etc/rsyncd.conf": No such file or directory
    xnetid 查找的配置文件位置默認是/etc 下,在/etc 下找不到 rsyncd.conf 文件
  1. rsync: failed to connect to 203.100.192.66: Connection timed out (110) rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.5]
    連接服務器超時,檢查服務器的端口 netstat –tunlp,遠程 telnet 測試
  1. 我需要在防火墻上開放哪些端口以適應 rsync?
    rsync 可以直接通過 873 端口的 tcp 連接傳文件,也可以通過 22 端口的 ssh 來進行文件傳遞, 但也可以通過下列命令改變它的端口:
    rsync --port 8730 otherhost:: 或者
    rsync -e 'ssh -p 2002' otherhost:
  1. 如何通過 rsync 只復制目錄結構,忽略掉文件呢?
    rsync -av --include '/' --exclude '' source-dir dest-dir
  1. 為什么我總會出現"Read-only file system"的錯誤呢? 看看是否忘了設"read only = no"了
  1. @ERROR: chroot failed
    rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
    原因:
    服務器端的目錄不存在或無權限。創建目錄并修正權限可解決問題。
  1. @ERROR: auth failed on module tee
    rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
    原因:
    服務器端該模塊(tee)需要驗證用戶名密碼,但客戶端沒有提供正確的用戶名密碼,認證 失敗。提供正確的用戶名密碼解決此問題。
  2. @ERROR: Unknown module ‘tee_nonexists’
    rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
    原因:
    服務器不存在指定模塊。提供正確的模塊名或在服務器端修改成你要的模塊以解決問題。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,676評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,730評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,118評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,873評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,266評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,482評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,036評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,846評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,025評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,279評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,684評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,953評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,751評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,016評論 2 375

推薦閱讀更多精彩內容