rsync 可實現全量及增量的本地或遠程數據鏡像同步備份的優秀工具
rsync官方詳細說明:http://www.samba.org/ftp/rsync/rsync.html
rsync學習視頻:https://blog.51cto.com/oldboy/1216457html
rsync學習整理筆記
1.1 rsync 一種快速、通用、遠程(和本地)文件複製工具
rsync特性:
1.支持拷貝特殊文件如連接、設備等;
2.能夠有排除指定文件或目錄的同步功能,至關於打包命令tar的排除功能;
3.能夠作到保持原文件或目錄的權限、時間、軟硬連接、屬主、組等全部屬性均不改變;
4.可實現增量同步,既只同步發生變化的數據,所以數據傳輸效率很高;
5.可使用rcp.rsh.ssh等方式來配合傳輸文件,也能夠直接經過socket(進程方式)傳輸;
6.支持匿名的或認證的進程模式傳輸,可實現方便安全的進行數據備份及鏡像。
7.不須要超級用戶權限linux
1.2 rsync 工做方式:
1.主機本地間的數據傳輸;
2.藉助rcp、ssh等通道來傳輸數據(相似scp命令);
3.以守護進程socket的方式傳輸數據(這個是rsync重要功能)。web
1.2.1 本地數據傳輸模式 local-only model
rsync本地傳輸模式語法:
rsync [OPTION...] SRC... [DEST]
語法說明:
1.rsync 爲同步命令
2.[OPTION]爲同步時的參數選項
3.SRC爲源,即待拷貝的分區、文件或目錄等
4.[DEST]爲目的分區、文件或目錄等shell
示例1:把系統的hosts文件同步到opt目錄vim
[root@root /]# rsync /etc/hosts /opt/ <== cp -p /etc/hosts /opt/
示例2:把opt目錄拷貝到mnt目錄下windows
[root@root /]# rsync -avz /opt/ /mnt/ <== cp -ap /opt/ /mnt/
1.2.2 經過遠程shell進行數據傳輸remote shell model
經過遠程shell訪問:
拉取Pull:rsync [OPTION...] [USER @]HOST:SRC ... [DEST]
推送Push:rsync [OPTION...] SRC ... [USER @] HOST:DEST
語法說明:
1.rsync 爲同步命令;
2.[OPTION...]爲同步時的參數選項;
3.[USER @]HOST: 爲Rsync同步的遠程地鏈接用戶和主機地址;
4.SRC爲源;
5.DEST爲目的
拉取(get),表示從遠端主機把數據同步到執行命令的本地主機相應目錄;
推送(put),表示從本地主機執行命令把本地的數據同步到遠端主機指定的目錄下。安全
拉取示例語法:遠端opt目錄抓取到本地tmp目錄
rsync -vartopgP -e '-ssh -p 22' root@192.168.119.119:/opt/ /tmp/
推送實用語法:本地hosts文件推送到遠端家目錄
rsync -avz /etc/hosts -e 'ssh -p 22' root@192.168.119.119:~
關鍵語法說明:服務器
1.2.3 使用守護進程的方式數據傳輸 daemon mode
經過守護進程方式傳輸一樣分爲兩種狀況,每種狀況又有兩種語法寫法。分別以下:
經過rsync守護進程訪問:
拉取:Pull
rsync [OPTION ...] [USER @] HOST :: SRC ... [DEST]
rsync [OPTION ...] rsync: // [USER @] HOST [:PORT] / SRC ... [DEST]
推送:Push
rsync [OPTION ...] SRC ... [USER @] HOST :: DEST
rsync [OPTION ...] SRC .. . rsync:// [USER @] HOST [:PORT] / DEST
特別值得注意的是,與遠程shell方式的命令不一樣的是,第一種語法格式,本節命令[USER @] HOST :: DEST 結尾處,均爲雙冒號鏈接SRC與DEST,另外,這個SRC或DEST也不在是路徑了,而是守護進程中配置的模塊名稱,下文會有例子詳細說明。
拉取實踐命令:架構
>>>rsync -vzrtopgP rsync://rsync_backup@192.168.1.1:/tmp/ /opt/ \ --password-file=/etc/rsync.password #自動讀取密碼文件中的密碼,免密登陸
推送實踐命令:併發
>>>rsync -vzrtopgP /test/ rsync://rsync_backup@192.168.1.1:/tmp/ \ --password-file=/etc/rsync.password #自動讀取密碼文件中的密碼,免密登陸
特別說明:以上的用法是個不錯的方法,他在拉取和推送時的寫法極其相似,尤爲是最後的守護進程服務時,第一種方法經過雙冒號家加模塊名的方法不利於記憶。因此對於初學者,建議你們也能夠記憶這個語法格式。
1.3 rsync 命令同步參數選項
rsync [IPTION...] SRC... [DEST]
經常使用參數選項說明:
-v, --verbose 詳細模式輸出,傳輸時的進度等信息;
-z, --compress 傳輸時進行壓縮以提升傳輸效率, --compress-level=NUM可按級別壓縮;
-r, --recursive 對子目錄以遞歸模式,即目錄下的全部目錄都一樣傳輸,注意小寫r;
-t, --times 保持文件時間信息;
-o, --owner 保持文件屬主信息;
-p, --perns 保持文件權限;
-g, --group 保持文件屬組信息;
-P, --progress 顯示同步的過程及傳輸時的進度等信息;
-a, --archive 歸檔模式(archive mode),表示以遞歸的方式傳輸文件,並保持全部文件屬性,等於 -rtopgDl;
-D, --devices 保持設備文件信息;
-l, --links 保留軟連接;
-e, --rsh=COMMAND 使用的信道協議,指定代替rsh的shell程序。例如:ssh --exclude=PATTERN 指定排除不須要傳輸的文件模式
保持同步目錄及文件屬性:
這裏的-avzP 至關於 -vzrtopDlP (還多了個Dl功能),生產環境經常使用的參數選項爲-avzP或者-vzrtopgP若是是放在加入腳本中,也能夠把-v和-pqudiao 。這裏的--progress 能夠用-P代替。
特別提示:請注意一下兩個命令的差異:
a. rsync -avz /opt/ /tmp/
b. rsync -avz /opt /tmp/
1.中/opt/意思是,僅把opt目錄裏面的內容同步過來,opt目錄自己並不一樣步,然後者b中/opt表示把opt自己及其內容所有同步到/tmp/下,僅一個/(斜槓之差),意義就大不相同,請注意使用的差異。
2.後面要說的經過遠程shell進行數據傳輸的內容也會有相似的問題,請牢記。
1.4 藉助ssh通道在不一樣主機間傳輸數據
藉助ssh通道從遠端主機拉取數據例子實踐:
1.4.1 拉取實踐:
[root@root ~]# rsync -avzP -e 'ssh -p 22' root@10.0.0.1:/opt /tmp
關鍵語法說明:
[root@root ~]# rsync -avzP -e 'ssh -p 22' root@10.0.0.11:/opt /tmp
1.4.2 藉助ssh key密鑰實現數據免密登陸驗證加密傳輸
說明:若是事先設置了ssh key密鑰免登陸驗證,便可用rsync經過ssh方式免登陸驗證同步傳輸數據,這是生產場景經常使用的方法之一。
配置ssh key密鑰實現數據免登陸驗證:
https://blog.51cto.com/000011211684/1693597
輕鬆實現遠程批量拷貝文件腳本:
https://blog.51cto.com/oldboy/1205715
特別提示:本文免驗證鏈接分發文件是基於普通用戶oldboy的,若是要實現hosts文件等的推送工做,是須要root權限的,咱們應該怎麼辦呢?
方法大概有三:
方法一:此時能夠把oldboy用戶配置sudo權限用戶,而後就能夠實現經過sudo功能來實現普通用戶推送只有root才能處理的問題了,此法爲推薦的方法。
方法二:還記得前面講的setuid權限位麼?能夠把全部客戶端如echo、cp、scp命令,修改成setuid位,這樣在推送文件時就可使用以上命令,來搞定了。不過這個方法,不推薦。
方法三:能夠配置root用戶的免密登陸認證,但這又會帶來必定的安全問題(雖然能夠防火牆封堵ssh端口),此方法比方法一稍遜一籌。
更詳細的說明可見ssh key的相關章節, 分發數據免密碼登陸的幾點須知!
-e, - rsh = COMMAND 指定要使用的遠程shell
1.5 rsync守護進程傳輸文件
1.5.1 rsync服務端配置
編輯rsync配置文件並啓動rsync服務
[root@root ~]# vim /etc/rsyncd.conf #rsync服務端配置,沒有的話須要手動生成 uid = rsync ##運行rsync守護進程的用戶-rsync gid = rsync ##運行rsync守護進程的組-rysnc use chroot = no ##不實用chroot max connections = 200 ##併發設置及最大鏈接數 strict modes = yes ##是否檢查口令文件權限 #port = 873 ##rsync服務默認端口873 timeout = 100 ##超時設置 ###安裝完rsync服務後自動生成的文件,添加一下也無妨### pid file = /var/run/rsyncd.pid ##pid文件的存放位置 lock file = /var/run/rsync.lock ##鎖文件的存放位置 log file = /var/log/rsyncd.log ##日誌記錄文件的存放位置 ###模塊參數配置#### [oldboy] ##模塊名,可根據實際狀況設定 path = /oldboy/ ##備份路徑 comment = This is a oldboy. ##這是模塊註釋信息,可忽略。 ignore errors ##能夠忽略一些無關的IO錯誤 read only = false ##只讀爲假,可寫文件 list - false ##不容許列文件 hosts allow = 192.168.120.0/24 ##容許主機 hosts deny = 0.0.0.0/32 ##禁止主機 auth users =rsync_backup #認證用戶/受權用戶,若是沒有這行則代表是匿名,此用戶與系統無關 secrets file = /etc/rsync.password #上面虛擬用戶的密碼文件:明文的
dos2unix /etc/rsyncd.conf (格式化,當windows文件拉入linux中時操做因爲格式問題能夠先格式化一下)
[root@root /]# useradd rsync -s /sbin/nologin -M #添加用戶不用登錄不須要家目錄 [root@root /]# mkdir /oldboy [root@root /]# chown -R rsync.rsync oldboy [root@root /]# chown -R rsync.rsync oldboy
配置用於rsync同步的帳號、密碼及帳號文件權限
[root@root etc]# echo "rsync_backup:oldboy" >> /etc/rsync.password [root@root etc]# cat rsync.password rsync_backup:oldboy [root@root etc]# ls -l rsync.password -rw-r--r--. 1 root root 20 12月 21 17:45 rsync.password [root@root etc]# chmod 600 /etc/rsync.password #明文密碼文件權限給到最小-保密 [root@root etc]# ll rsync.password -rw-------. 1 root root 20 12月 21 17:45 rsync.password
rsync啓動服務
[root@root etc]# rsync --daemon ##後臺運行rsync服務 [root@root etc]# netstat -natp | grep rsync tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 9985/rsync tcp 0 0 :::873 :::* LISTEN 9985/rsync [root@root etc]# lsof -i :873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 9985 root 4u IPv4 35058 0t0 TCP *:rsync (LISTEN) rsync 9985 root 5u IPv6 35059 0t0 TCP *:rsync (LISTEN) [root@root etc]# ps -ef | grep 873 root 10005 9801 0 17:50 pts/1 00:00:00 grep 873
1.5.2 rsync客戶端配置
##設定密碼文件,注:客戶端密碼文件路徑與服務端全無關係,弄得同樣便於記憶 [root@root /]# echo "oldboy" > /etc/rsync.password [root@root /]# cat rsync.password oldboy [root@root etc]# ls -l rsync.password -rw-r--r--. 1 root root 20 12月 21 17:45 rsync.password #明文密碼文件權限給到最小600,切莫忘記否則後續從客戶端推送數據時會報錯 [root@root etc]# chmod 600 /etc/rsync.password [root@root etc]# ll rsync.password -rw-------. 1 root root 20 12月 21 17:45 rsync.password
1.5.3 下面進行守護進程傳輸文件測試:
rsync服務端192.168.120.120
rsync客戶端192.168.120.121
要求:將本地客戶端的web數據打包備份後傳輸到服務端上
[root@root www]# man rsync ##經過man手冊能夠看下rsync守護進程語法格式(以前詳細介紹過) rsync(1) rsync(1) NAME rsync — a fast, versatile, remote (and local) file-copying tool SYNOPSIS Local: rsync [OPTION...] SRC... [DEST] ##本地傳輸模式 Access via remote shell: ##經過shell傳輸的語法格式 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST Access via rsync daemon: ##經過守護進程傳輸的語法格式 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST ...省略若干...
1.5.3.1 守護進程備份操做-Pull推送(適用於數據備份)
#使用tar命令打包本地web數據,參數中的"-"符號加與不加功能同樣 [root@root www]# tar -zcvf html_$(date +%F).tar.gz html html/ [root@root www]# ll 總用量 28 drwxr-xr-x. 2 root root 4096 8月 2 2013 cgi-bin drwxr-xr-x. 3 root root 4096 11月 19 22:12 error drwxr-xr-x. 2 root root 4096 8月 2 2013 html -rw-r--r--. 1 root root 109 12月 21 21:13 html_2018-12-21.tar.gz drwxr-xr-x. 3 root root 4096 11月 19 22:12 icons drwxr-xr-x. 14 root root 4096 11月 19 22:17 manual drwxr-xr-x. 2 webalizer root 4096 11月 19 22:15 usage ##客戶端經過守護進程方式傳輸web備份數據 [root@root www]# rsync -azvp html_2018-12-21.tar.gz rsync_backup@192.168.120.120::oldboy Password: sending incremental file list html_2018-12-21.tar.gz sent 196 bytes received 27 bytes 49.56 bytes/sec total size is 109 speedup is 0.49
注意:
##使用上面rsync這條命令語句還須要填寫密碼,傳輸比較麻煩,只須要在後面加上 --password-file=/etc/rsync.password 引用密碼文件就能達到免密傳輸的效果
>>推送1 rsync -azvp html_2018-12-21.tar.gz rsync_backup@192.168.120.120::oldboy --password-file=/etc/rsync.password >>推送2 rsync -azvp html_2018-12-21.tar.gz rsync://rsync_backup@192.168.120.120/oldboy --password-file=/etc/rsync.password
語法解釋:看不懂這條命令的,請參考上面的1.2.3 使用守護進程的方式數據傳輸 部分。
1.5.3.2 進入rsync服務端查看客戶端的備份數據
[root@root etc]# cd /oldboy/ ##進入指定的path路徑 [root@root oldboy]# ll 總用量 4 -rw-r--r--. 1 rsync rsync 109 12月 21 21:13 html_2018-12-21.tar.gz
1.5.3.3 rsync使用過程當中的報錯整理
錯誤1: rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.2]
解決:很大多是服務器端沒有開啓 rsync 服務,開啓服務。 或者開啓了防火牆指定的端口沒法訪問。
錯誤2:@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]
解決:服務器端同步目錄沒有權限,cwrsync默認用戶是Svcwrsync。爲同步目錄添加用戶Svcwrsync權限。
錯誤3:@ERROR: failed to open lock file
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]
解決:服務器端配置文件 rsyncd.conf中添加 lock file = rsyncd.lock 便可解決。
錯誤4:@ERROR: invalid uid nobody
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.2]
解決:在rsyncd.conf文件中添加下面兩行便可解決問題 。(添加守護進程用戶+組)
UID = 0
GID = 0
錯誤5:@ERROR: auth failed on module test2
rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=3.0.2]
解決:服務端沒有指定正確的secrets file,請在 [test2]配置段添加以下配置行:
auth users = coldstar #同步使用的賬號
secrets file = rsyncd.password #密碼文件
錯誤6:password file must not be other-accessible
解決:客戶端的pass文件要求權限爲600, chmod 600 /etc/rsync.pass 便可。
錯誤7:rsync: chdir /cygdrive/c/work failed
: No such file or directory (2)
解決:服務器端同步文件夾路徑或名稱寫錯了,檢查path。
錯誤8:No route to hosts
解決:先telnet一下,出現鏈接拒絕,表示被防火牆阻擋,能夠關閉防火牆。
===============================================================
rsyncserver 服務啓動時報錯「rsyncserver服務啓動後又中止了。一些服務自動中止,若是它們沒有什麼可作的,例如「性能日誌和警報」服務。」
解決方法:將安裝目錄下的rsyncd.pid文件刪除,再從新啓動RsyncServer服務。通常是異常關機致使的。
1.5.4 備份全網服務器數據生產架構方案案例模型
上機實戰考試題:
某公司裏有一臺web服務器,裏面的數據很重要,可是若是硬盤壞了,數據就會丟失,如今領導要求你把數據在其它機器上作一個週期性定時備份。要求以下:
天天晚上0點整在web服務器A上打包備份網站程序目錄並經過rsync命令推送到服務器B上備份保留(備份思路能夠是先在本地按日期打包,而後在推到備份服務器上)
具體要求以下:
1.web服務器A和備份服務器B的備份目錄都必須爲/backup
2.web服務器站點目錄嘉定爲(/var/www/html)
根據 1.5 rsync守護進程傳輸文件 的配置作修改。其中rsync服務端=備份服務器,rsync客戶端=web服務器。
1.5.4.1 web服務器A配置 192.168.120.121
[root@root etc]# mkdir -p /backup/192.168.120.121 [root@root etc]# chown -R rsync /backup/ [root@root etc]# cd /study/ [root@root study]# vim web_bak.sh ##編輯web服務器備份腳本 cd /var/www/ &&\ tar -zcvf /backup/192.168.120.121/html_$(date +%F).tar.gz ./html &&\ ##備份數據打包 cd /backup/ &&\ rsync -azvp . rsync_backup@192.168.120.120::backup --password-file=/etc/rsync.password >/dev/null 2>&1 find /backup -type f -name "*.tar.gz" -mtime +7 | xargs rm -f [root@root study]# crontab -e ##添加定時任務 00 00 * * * sh /study/web_bak.sh >/dev/null 2>&1
1.5.4.2 備份服務器B配置 192.168.120.120
[root@root ~]# cd /etc/ [root@root etc]# cp rsyncd.conf rsyncd.conf_bak [root@root etc]# vim rsyncd.conf [backup] ##該模塊名,通常都弄一致便於記憶 path = /backup/ ##修改備份目錄 [root@root etc]# mkdir /backup [root@root etc]# chown -R rsync /backup/ [root@root backup]# pkill rsync #殺掉rsync服務 [root@root backup]# lsof -i :873 [root@root backup]# rsync --daemon #從新啓動rsync服務 [root@root backup]# lsof -i tcp:873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 16058 root 4u IPv4 50262 0t0 TCP *:rsync (LISTEN) rsync 16058 root 5u IPv6 50263 0t0 TCP *:rsync (LISTEN)
1.5.5 守護進程分發操做-Push拉取(適用於數據分發)
##web服務器上數據拉取操做## [root@root study]# rsync -azvp rsync_backup@192.168.120.120::backup /mnt --password-file=/etc/rsync.password receiving incremental file list ./ 192.168.120.121/ 192.168.120.121/html_2018-12-22.tar.gz sent 90 bytes received 341 bytes 862.00 bytes/sec total size is 111 speedup is 0.26 [root@root study]# cd /mnt/ [root@root mnt]# ll 總用量 4 drwxr-xr-x. 2 501 501 4096 12月 22 03:10 192.168.120.121
1.5.5 分發數據生產架構方案案例模型
下載、分發數據。
1.6 rsync應用拓展排除打包
首先看tar如何進行排除打包 [root@root 192.168.120.121]# cd /study/ [root@root study]# ll 總用量 20 -rw-r--r--. 1 root root 1471 12月 21 14:32 ssh_expect.sh -rw-r--r--. 1 root root 17 12月 21 14:26 ssh_host_ip.txt -rw-r--r--. 1 root root 458 12月 21 14:33 ssh_host.sh -rw-r--r--. 1 root root 1048 12月 21 14:28 ssh_host.sh_bak -rw-r--r--. 1 root root 303 12月 22 01:18 web_bak.sh ##使用 --exclude 排除web_bak.sh打包 [root@root study]# tar -zcvf a.tar.gz ./* --exclude=web_bak.sh ./ssh_expect.sh ./ssh_host_ip.txt ./ssh_host.sh ./ssh_host.sh_bak [root@root study]# tar -ztvf a.tar.gz ##查看下打包內容 -rw-r--r-- root/root 1471 2018-12-21 14:32 ./ssh_expect.sh -rw-r--r-- root/root 17 2018-12-21 14:26 ./ssh_host_ip.txt -rw-r--r-- root/root 458 2018-12-21 14:33 ./ssh_host.sh -rw-r--r-- root/root 1048 2018-12-21 14:28 ./ssh_host.sh_bak
rsync也可使用--exclude 參數進行排除傳輸文件
[root@root backup]# mkdir a b d c ##建立文件a、b、c、d四個文件進行排除推送測試 [root@root backup]# touch a/1 b/2 c/3 d/4 [root@root backup]# tree . ├── 192.168.120.121 │ └── html_2018-12-22.tar.gz ├── a │ └── 1 ├── b │ └── 2 ├── c │ └── 3 └── d └── 4 [root@root backup]# rsync -azvp --exclude=a/1 --exclude=b . rsync_backup@192.168.120.120::backup --password-file=/etc/rsync.password sending incremental file list ./ a/ c/ c/3 d/ d/4 sent 229 bytes received 62 bytes 582.00 bytes/sec total size is 111 speedup is 0.38
另外一種方式:修改rsync配置文件。
在/etc/rsyncd.conf配置文件中添加一行 exclude = a b/2
注意: exclude = a b/2 表示排除文件夾a 與文件夾b下面的2文件
[root@root backup]# vim /etc/rsyncd.conf
exclude = a b/2 ##添加須要排除的文件或目錄
rsync客戶端的排除測試-Push推送:(雖然報錯,可是到rsync服務器上確實有這些文件。疑似權限問題)
[root@root backup]# rsync -azvp . rsync_backup@192.168.120.120::backup --password-file=/etc/rsync.password sending incremental file list ./ skipping daemon-excluded directory "a" *** Skipping any contents from this failed directory *** b/ skipping daemon-excluded file "b/2" c/ c/3 d/ d/4 sent 255 bytes received 63 bytes 212.00 bytes/sec total size is 111 speedup is 0.35 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
rsync客戶端的排除測試-Pull拉取:
[root@root backup]# rsync -azvp rsync_backup@192.168.120.120::backup /mnt --password-file=/etc/rsync.password receiving incremental file list ./ 192.168.120.121/ 192.168.120.121/html_2018-12-22.tar.gz b/ c/ c/3 d/ d/4 sent 140 bytes received 480 bytes 1240.00 bytes/sec total size is 111 speedup is 0.18
參數說明:
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
注意:服務端的排除參數用於客戶端的拉取Push
1.7 rsync應用拓展無差別同步講解
1.7.1 本地刪除--delete參數使用
要實現這種同步方式就要使用rsync的--delete參數。下面是--delete參數使用詳解:
[root@root /]# mkdir /boy #建立兩個臨時文件夾,第一個文件夾空的,第二個有內容 [root@root /]# mv /mnt/ /girl [root@root /]# rsync -azvP --delete boy/ girl/ #因爲boy文件夾內容爲空,因此使用--delete參數進行無差別同步時會將girl文件夾內容刪除 sending incremental file list ./ deleting d/4 deleting d/ deleting ceshi/ deleting c/3 deleting c/ deleting b/ deleting 192.168.120.121/html_2018-12-22.tar.gz deleting 192.168.120.121/ sent 29 bytes received 15 bytes 88.00 bytes/sec total size is 0 speedup is 0.00 [root@root /]# tree girl/ girl/ 0 directories, 0 files
1.7.2 無差別同步-拉取Pull
[root@root ~]# rsync -azvP --delete rsync_backup@192.168.120.120::backup /tmp --password-file=/etc/rsync.password
以上方式表示遠程服務端發生變化的文件,例如刪除了文件,那麼若是本地要保持與服務端數據一致,就可使用這個命令。
這個命令很是危險,使用不當可能形成本地目錄及文件,甚至是根本目錄數據丟失,所以要特別注意當心使用。
執行--delete參數從rsync服務端往客戶端拉取(Push)數據時,必定要當心,最好不用,它比從rsync客戶端帶--delete參數往rsync服務端推送(Pull)危險的多,客戶端帶--delete參數往服務端推送僅刪除服務端模塊下的數據,而前者有能力刪除rsync客戶端本地的全部數據包括根下的全部目錄。
1.7.3 無差別同步-生產場景應用
通常是有須要兩臺服務器之間,必需要求數據一致,且時時性又不是很高的狀況下,若是兩臺負載均衡下面web服務器之間的同步,或者高可用雙擊配置之間的同步等。rsync無差別同步很是危險,並且有不少的替代方案,所以,生產場景沒有特殊的需求,應避免使用。
1.8 rsync應用拓展多模塊同步
添加多模塊配置,其實並無多大變化。只是加了一個模塊名與Path路徑
[root@root backup]# cat /etc/rsyncd.conf uid = rsync gid = rsync use chroot = no max connections = 200 timeout = 100 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log ignore errors read only = false list - false hosts allow = 192.168.120.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password #exclude = a b/2 [backup] path = /backup/ [oldboy] path = /oldboy/
特別說明:添加多個模塊能夠有多個路徑(至關於多個共享)
若是須要每一個模塊都有不一樣的帳號和密碼,就須要在每個模塊裏面添加帳號與密碼,因爲自學沒那麼高要求,就簡單添加了一個模塊名加模塊路徑。不在模塊裏面添加的配置就至關於全局變量。
1.9 rsync服務配置回顧
1.9.1 服務端配置
配置rsync的配置文件:/etc/rsyncd.conf
建立同步的本地目錄/backup並根據須要受權rsync服務的用戶可讀寫權限,/backup目錄和/etc/rsync.password爲配置文件中path=/backup參數配置。
帳號及密碼文件配置
[root@root etc]# echo "rsync_backup:oldboy" >> /etc/rsync.password [root@root etc]# chmod 600 /etc/rsync.password #明文密碼文件權限給到最小-保密
提示:
1./etc/rsync.password爲配置文件中secrets file = /etc/rsync.password的參數配置
2.帳號rsync_backup爲配置文件中auth users = rsync_backup的參數配置
1.9.2 客戶端配置
添加密碼文件與修改密碼文件權限
[root@root /]# echo "oldboy" > /etc/rsync.password
[root@root etc]# chmod 600 /etc/rsync.password
提示:
客戶端的密碼文件路徑/etc/rsync.password與服務端的免密文件路徑/etc/rsync.password沒有任何關係,只要和客戶端rsync命令的參數--password-file=/etc/rsync.password中的路徑對應便可
1.9.3 客戶端操做命令細節
Pull推送
>>>rsync -avzP . rsync_backup@192.168.120.120::backup --password-file=/etc/rsync.password >>>rsync -avzP . rsync://rsync_backup@192.168.120.120/backup --password-file=/etc/rsync.password
注意:第二條推送命令的推送路徑必須是服務端配置的path路徑下才行
Push抓取:
>>>rsync -avzP rsync_backup@192.168.120.120::backup /mnt --password-file=/etc/rsync.password >>>rsync -avzP rsync://rsync_backup@192.168.120.120/backup /mnt --password-file=/etc/rsync.password
2.0 rsync配錯思路
2.0.1 rsync服務端排錯思路
1.查看rsync服務配置文件路徑是否正確,正確的默認路徑爲:/etc/rsyncd.conf;
2.查看配置文件裏面的host allow,host deny,容許的ip網段是不是容許客戶端訪問的ip網段;
3.查看配置文件中的path參數裏面的路徑是否存在,權限是否正確(正常應爲配置文件中的UID參數對應的屬主和組);
4.查看rsync服務是否啓動。查看寧陵爲ps -ef | grep rsync ,端口是否存在netstat -lnt |
grep 873(rsync默認端口爲873);
5.查看iptables防火牆和selinux是否開啓容許rsync服務經過,也可考慮關閉;
6.查看服務器rsync配置的密碼文件是否爲600的權限,密碼文件格式是否正確,正確格式用戶名:密碼,文件路徑和配置文件裏的secrect files參數對應;
7.若是是推送數據,要查看下配置rsyncd.conf文件中用戶是否對模塊下目錄有可讀寫的權限;
2.0.2 rsync客戶端排錯思路1.查看客戶端rsync配置的密碼文件是否爲600權限,密碼文件格式是否正確,注意:僅須要有密碼,而且和服務端的密碼一致;2.用telnet鏈接rsync服務器ip地址873端口,查看服務是否啓動(可測試服務端防火牆是否阻擋),telnet 10.0.0.141 8733.客戶端執行命令時rsync -avzP rsync_backup@192.168.120.120::backup --password-file=/etc/rsync.password此命令的細節要記清楚,尤爲192.168.120.120::backup 處的雙冒號及隨其後的backup爲模塊命令。