Rsync學習記錄 rsync服務端排錯思路 1、查看rsync服務組態檔路徑是否正確、正確的預設路徑為/etc/rsyncd.conf 2、查看設定檔裡host allow。 host deny,允許的ip網段是否允許用戶端訪問的ip網段。 3、查看設定檔中path參數的路徑是否存在,許可權是否正確(正常應為設定檔中的UID參數對應的屬主和組) 4、查看rsync服務是否啟動,查看命令為: ps -f | grep rsync 連接埠是否存在 netstat -lnt | grep 873 5、查看iptables防火牆和selinux是否開啟允許rsync服務通過,也可考慮關閉。 6、查看服務端rsync配置的密碼檔案是否為600許可權,密碼檔案格式是否正確。 7、如果是推送資料,要查看下,配置rsyncd.conf檔案中使用者是否對模組下目錄有可讀寫的許可權。 啟動rsync服務 以守護進程方式啟動rsync服務: rsync --daemon #-----daemon表示以守護進程的方式啟動rsync服務 拓展:rsync的進程參數選項: --daemon #-----daemon表示以守護進程的方式啟動rsync服務 --addrss #-----綁定指定ip地址提供服務。 --config=FILE #---更改設定檔路徑,而不是預設的/etc/rsyncd.conf --prot=PORT #---更改其它連接埠號碼提供服務,而不是預設的873連接埠。 提示:以上幾個選項為瞭解內容,生產情境使用的不多。 操作過程 #rsync --daemon lsof -i tcp:873 rsync用戶端排錯思路 1、查看用戶端rsync配置的密碼檔案是否600的許可權,密碼檔案格式是否正確,注意:僅需要有密碼,並且和服務端的密碼一致。 2、用telnet串連rsync伺服器ip地址873連接埠,查看服務是否啟動(可測試服務端防火牆是否阻擋)。telnet 192.168.1.1 873 3、用戶端執行命令時 rsync -avzP rsync_backup@192.168.1.1::lianglab/test /test// --password-file=/etc/rsync.password 此命令細節:尤其192.168.1.1::lianglab/test/處的雙冒號及隨其後的lianglab為模組名稱。 資料鏡像備份工具 rsync 隨著linux系統的快速發展和普及,linux伺服器,其穩定、高效的特性得到很多使用者的肯定。 實現資料的本地和異地備份、以保證資料的安全。 rsync簡介、傳統的資料備份方式有cp命令和wget命令 cp命令是源檔案和目標檔案都在本地。 該命令僅實現對檔案的一種完整複製,如果要複製的資料量巨大,那麼備份的時間就會變得很長, wget命令通過網路進行備份,它不支援增量備份,每次都需要將所有的資料重新在網路上傳輸一遍, 而不考慮哪些檔案是更新過來,因此該命令的效率比較點。 我們今天就介紹一個款實用的工具rsync, 藉助於這個工具能輕鬆實現資料的本地鏡像和遠程備份。 什麼是rsync rsync是linux 系統下的檔案同步和資料轉送工具,它採用rsync算數。使一個客戶機和遠程檔案伺服器 之間的檔案同步,通過rsync可以將同一個伺服器的資料從一個分區備份到另一個分區,也可以將本地系統的資料 通知網路傳輸方式備份到任何一個遠程主機上;rsync可以在中斷之後恢複傳輸;rsync只傳輸源檔案和目標 檔案之間不一致的部分;rsync可以執行完整備份或增量備份。 rsync的功能特性 rsync即remote sync,從軟體名稱上就可以看出它所實現的功能,rsync有如下特性: ·可以鏡像儲存整個分類樹和檔案系統。 ·可以增量同步處理資料,檔案傳輸效率高,因而同步時間很短。 ·可以保持原有檔案的許可權、時間等屬性。 ·加密傳輸資料,保證了資料的安全性。 ·可以使用rcp、ssh等方式來傳輸檔案,當然也可以直接通過socket串連傳輸檔案。 支援匿名傳輸。 -v 告訴rsync詳細說明正在發生什麼 -a 告訴rsync從來源目錄 複製所有檔案和目錄 -z 告訴rsync壓縮資料以使網路傳輸更快(在進入線纜前我們的資料將被加密和壓縮) -e ssh 告訴rsync使用我們的SSH shell來執行網路傳輸,你可以通過設定RSYNC_RSH shell環境變數來避免每次輸入rsync命令時都需要加上這個參數,參考rsync的man手冊獲得詳細資料。 --delete 告訴rsync刪除待命伺服器上檔案,如果它們在主伺服器已經不存在的話(這個選項不會移除任何主或來源資料)。 /www/ 這是SSH用戶端上來源目錄,它後面帶有斜線,如果你想要rsync複製整個目錄以及它下面的內容,這個斜線就是必需的 10.1.1.2:/www 這是目標ip地址和目標目錄 利用rsync搭建資料鏡像備份系統 rsync有4種應用模式,第一種是shell應用模式,也叫本地模式, 第二種是遠程shell模式,它是利用ssh執行底層串連和加密傳輸; 第三種是查詢模式,與ls命令實現的功能類似。 第四種是伺服器模式,平時所說的搭建rsync伺服器就是指這種模式。 rsync 藉助ssh通道技術案例 #rsync -avzP /etc/hosts -e "ssh -p30000" lianglab@192.168.1.110:/tmp/ 意思:把本地/etc/hosts檔案推送到遠端ip為192.168.110tmp目錄下,SSH連接埠號碼為30000 #rsync -avzP -e "ssh -p30000" lianglab@192.168.1.110:/tmp/hosts . 意思:從遠端的ip把這個檔案拉到本地來。 我們解釋一下拉取案例的文法: rsync -avzP -e "ssh -p 22" lianglab@192.168.1.110:/opt /tmp 說明: 1、-avz相當於-vzrtopgD1,表示同步時檔案和目錄屬性不變。 2、-P顯示同步的過程,可以用--progress替換。 3、-e "ssh -p 22" 表示通過ssh的通道傳輸資料,-p 22可省略。 4、lianglab@192.168.1.110:/opt 遠端主機系統使用者,地址,路徑 5、/tmp本地的路徑。 執行個體:通過root使用者從192。168.1.110的opt目錄(包含目錄本身)把資料拉到本地的/tmp目錄。 推送案例: raync -vzrtopP -e "ssh -p 22" /etc lianglab@192.168.1.110:/tmp 執行個體:通過root使用者把本地的/tmp目錄(不包括目錄本身)推送到192.168.1.100的/opt目錄。 #rsync -vzrtopP -e 'ssh -p 22' /tmp root@192.168.1.100:/opt #和拉取的例子幾乎一樣,只是把源和目的調換一下即可。 password:輸入串連主機密碼即可。 特別說明: 1上文的資料同步都是通過加密傳輸,因為通過了ssh通道進行傳輸, 2、在傳輸前需要進行串連使用者(一般為系統使用者)密碼驗證,需要手工輸入密碼,這裡我們藉助前面章節的ssh key 密鑰免登陸驗證的方式來實現,無互動驗證資料轉送。 3、rsync軟體必須安裝在本地及遠程所有機器上。 藉助ssh key密鑰實現資料免登陸驗證加密傳輸 說明,如果事先設定了ssh key密鑰免登陸驗證,即可以用rsync 通過ssh方式免登陸驗證同步傳輸資料, 這是生產情境常用的方法之一。 配置ssh key密鑰實現資料免登陸驗證。 使用ssh通道批量傳輸資料指令碼 vi lianglab.sh #!/bin/sh ./etc/init.d/functions if [$# -ne 1];then echo "Usage:$0 argv" exit fi for ip in 17 18 do #scp -P30000 $1 lianglab@192.168.1.$ip:~ >&/dev/null&&\ #ssh -p30000 -t lianglab@192.168.1.$ip sudo rsync ~/$1 /etc >&/dev/null rsync -avzP $1 -e "ssh -p 30000" lianglab@192.168.1.$ip:~ >&/dev/null ssh -p30000 -t lianglab@192.168.1.$ip sudo rsync ~/$1 /etc >&/dev/null if [ $? -eq 0 ];then action "liang $1 successful." /bin/true else action "liang $1 failure." /bin/false fi done 問題錯誤一:no route to host問題 對方沒開機、防火牆阻擋、通過的網路上有防火牆阻擋,都有可能。 解決方案:關閉防火牆,或者把防火牆的tcp udp 的873連接埠開啟,允許rsync通過,他們可以使用telnet IP 873檢查。 實戰練習: 某公司有一台web伺服器,裡面的資料很重要,但是如果硬碟壞了,資料就會丟失,現在領導要求你把資料在其他機器上做 一個周期性定時備份。要求如下: 每天晚上00點整在web伺服器A上打包備份網站程式目錄並通過rsync命令推送到伺服器B上備份保留(備份思路可以是先在本地按日期 打包,然後在推到備份伺服器上) 具體操作如下: 1、web伺服器A和備份伺服器B的備份目錄必須都為/backup 2、web伺服器網站目錄假定為(/var/www/html) 定時備份指令碼 cd /var/www &&\ tar zcf /backup/192.168.1.110/html_$(date +%F).tar.gz./html &&\ cd /backup/ &&\ rsync -az . rsync_backup@192.168.1.100::backup --password-file=/etc/rsync.password >&/dev/null find /backup --type f -name "*.gz" -mtime +7|xargs rm -f [root @director rsync-3.0.4]# tar zxvf rsync-3.0.4.tar.gz [root @director rsync-3.0.4]# cd rsync-3.0.4 [root @director rsync-3.0.4]# ./configure config.status: creating popt/dummy config.status: creating shconfig config.status: creating config.h rsync 3.0.4 configuration successful [root @director rsync-3.0.4]# [root @director rsync-3.0.4]# make [root @director rsync-3.0.4]# make install 1、本地shell模式 本地shell主要用於複製制定目錄到另一個目錄,例如: [root @director src]# rsync -av rsync-3.0.4 /tmp ------------省略-------------- rsync-3.0.4/zlib/zlib.h rsync-3.0.4/zlib/zutil.c rsync-3.0.4/zlib/zutil.h rsync-3.0.4/zlib/zutil.o sent 5472930 bytes received 5190 bytes 10956240.00 bytes/sec [root @director src]# rsync -av rsync-3.0.4/ /tmp sent 5472780 bytes received 5189 bytes 10955938.00 bytes/sec total size is 5454825 speedup is 1.00 [root @director src]# rsync -av rsync-3.0.4 /tmp和rsync -av rsync-3.0.4/ /tmp 兩個命令是有點差距的。 明顯差距就是源參數末尾的斜杠,如果源參數的末尾沒有斜杠,就將指定的來源目錄複製到制定的目錄; 如果源參數末尾有斜杠,就會複製制定來源目錄中的內容到目錄中。 命令中:“-a” 即為“--archive”(歸檔模式),表示以遞迴方式傳輸檔案,並保持所有檔案屬性; “-v”即為“--verbose” 表示輸出詳細模式資訊。