rysnc知識梳理

rsync語法:html

Local: rsync [OPTION...] SRC... [DEST]            #<===本地傳輸數據

Access via remote shell:                          #<===藉助通道傳輸數據,本地-遠程主機;遠程主機-本地
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] #<===從遠程主機拉取數據到本地
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST   #<===從本地推數據到遠程主機

Access via rsync daemon:                          #<===經過守護進程socket網絡套接字)傳輸數據---重點     
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]    #<===注意daemon模式下傳輸數據,使用的是自定義的模塊的名稱
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

本地傳輸模式和藉助通道傳輸模式使用實例linux

[root@meinv01 ~]# rsync /etc/hosts /tmp/    #<==本地到本地
[root@meinv01 ~]# ls /tmp/
hosts
ssh-NFCFOdb882
[root@meinv01 ~]# rsync -avz /etc/hosts -e 'ssh -p 22' root@192.168.81.169:~   #<==藉助ssh通道,拷貝本地文件到遠程主機,若是是遠程拉取數據到本地,調換一下位置便可
root@192.168.81.169's password:
sending incremental file list
sent 30 bytes  received 12 bytes  12.00 bytes/sec
total size is 158  speedup is 3.76
[root@meinv02 ~]# ll
total 44
-rw-------. 1 root root  1116 Aug  1 12:58 anaconda-ks.cfg
-rw-r--r--  1 root root   158 Aug  1 12:35 hosts

注意點源路徑若是是一個目錄的話,帶上尾隨斜線和不帶尾隨斜線是不同的,不帶尾隨斜線表示的是整個目錄包括目錄自己,帶上尾隨斜線表示的是目錄中的文件,不包括目錄自己shell

如:服務器

[root@xuexi ~]# rsync -a /etc /tmp    #<==表示把etc這個目錄及其目錄下的文件和目錄拷貝到tmp下
[root@xuexi ~]# rsync -a /etc/ /tmp   #<==只把etc下的文件及目錄拷貝到tmp

rsync的經常使用參數說明:(-avzP至關於-vzrtopgDlP,腳本內用az便可)網絡

-v      --verbose          輸出傳輸時的進度信息
-z      --compress         傳輸時進行壓縮傳輸以提升效率 --compress-level=NUM可按級別壓縮
-a      --archive          歸檔模式,遞歸方式傳輸並保持全部文件屬性,等價於--rtopgDl
-r      --recursive        對子目錄以遞歸模式傳輸,小寫r參數
-t      --times            保持文件時間信息
-o      --owner            保持文件屬主信息
-p      --perms            保持文件權限信息
-g      --group            保持文件屬組信息
-P      --progress         顯示同步的過程及傳輸的進度等信息
-D      --devices          保持文件設備信息
-l      --links            保持軟連接信息
-e      --rsh=command      指定使用的信道協議,指定替換的rsh的shell程序,如ssh
--exclude=pattern          指定排除不須要的傳輸的文件模式
--exclude-from=file        排除指定文件內容中的文件
--bwlimit=RATE             傳輸時進行限速(整數)
--delete                   同步參數(慎用

rsync經過守護進程socket傳輸數據圖解:ssh

rsync服務端配置:socket

[root@C-linux ~]# uname -r         #<==查看版本號
2.6.32-431.el6.x86_64
[root@C-linux ~]# cat /etc/redhat-release 
CentOS release 6.5 (Final)
[root@C-linux ~]# /etc/init.d/iptables status    #<==中止防火牆
iptables: Firewall is not running.
[root@C-linux ~]# getenforce                    #<==關閉selinux
Disabled
[root@C-linux ~]# rpm -qa|grep rsync    #<==服務端和客戶端和要保證rsync軟件包已安裝
rsync-3.0.6-9.el6_4.1.x86_64
[root@C-linux ~]# rsync --version        #<==查看rsync版本號
rsync version 3.0.6 protocol version 30
[root@C-linux ~]# rz -y
rz waiting to receive.
???a? zmodem ′???£ °′ Ctrl+C ???£
??′?? rsyncd.conf...
100% 562 bytes 562 bytes/s 00:00:01 0 ′?
?[root@C-linux ~]# ls
rsyncd.conf
[root@C-linux ~]# cp rsyncd.conf /etc/
[root@C-linux ~]# useradd -M -s /sbin/nologin rsync   #<==添加指定用戶做爲傳輸時使用的用戶
[root@C-linux ~]# id rsync 
uid=502(rsync) gid=502(rsync) 組=502(rsync)
[root@C-linux ~]# vi /etc/rsyncd.conf 
[root@C-linux ~]# cat /etc/rsyncd.conf    #<==rsync服務端配置文件具體配置
#rsync_configuration
#port=873                          # 指定rsync端口。默認873(沒有特殊需求,使用默認端口便可)
uid = rsync                        # rsync服務的運行用戶,默認是nobody,文件傳輸成功後屬主將是這個uid
gid = rsync                        # rsync服務的運行組,默認是nobody,文件傳輸成功後屬組將是這個gid
use chroot = no                    # rsync daemon在傳輸前是否切換到指定的path目錄下,並將其監禁在內
max connections = 200              # 指定最大鏈接數量,0表示沒有限制
timeout = 300                      # 連接超時時間,確保rsync服務器不會永遠等待一個崩潰的客戶端,0表示永遠等待
pid file = /var/run/rsyncd.pid     # 指定rsync daemon的pid文件
lock file = /var/run/rsync.lock    # 指定鎖文件
log file = /var/log/rsyncd.log     # 指定rsync的日誌文件存放,而不把日誌發送給syslog
[data] # 模塊ID ,傳輸數據時指定模塊ID,就會將數據傳輸到模塊指定對應的目錄下 path = /data/ # 指定該模塊的路徑,該參數必須指定。啓動rsync服務前該目錄必須存在。rsync請求訪問模塊本質就是訪問該路徑 ignore errors # 忽略某些IO錯誤信息 read only = false # 指定該模塊是否可讀寫,即可否上傳文件,false表示可讀寫,true表示可讀不可寫。全部模塊默認不可上傳 #write only = false # 指定該模式是否支持下載,設置爲true表示客戶端不能下載。全部模塊默承認下載 list = false # 客戶端請求顯示模塊列表時,該模塊是否顯示出來,設置爲false則該模塊爲隱藏模塊。默認true hosts allow = 10.0.0.0/24 # 指定容許鏈接到該模塊的機器,多個ip用空格隔開或者設置區間 hosts deny = 0.0.0.0/32 # 指定不容許鏈接到該模塊的機器 auth users = rsync_backup # 指定鏈接到該模塊的用戶列表,只有列表裏的用戶才能鏈接到模塊,用戶名和對應密碼保存在secrts file中, # 這裏使用的不是系統用戶,而是虛擬用戶。不設置時,默認全部用戶都能鏈接,但使用的是匿名鏈接 secrets file = /etc/rsync.password # 保存auth users用戶列表的用戶名和密碼,每行包含一個username:passwd。因爲"strict modes", # 默認爲true,因此此文件要求非rsync daemon用戶不可讀寫。只有啓用了auth users該選項纔有效 #rsync_config_______________end #[test] # 如下定義的是第二個模塊(根據狀況加載便可) :wq #<==保存退出
[root@C-linux ~]# mkdir /data #<==建立rsync模塊所存放的目錄 [root@C-linux ~]# chown -R rsync.rsync /data #<==受權 [root@C-linux ~]# echo 'rsync_backup:123456' >/etc/rsync.password #<==指定密碼文件 [root@C-linux ~]# cat /etc/rsync.password rsync_backup:123456 [root@C-linux ~]# chmod 600 /etc/rsync.password #<==此文件權限需爲600,不然出錯 [root@C-linux ~]# ll /etc/rsync.password -rw------- 1 root root 20 1月 31 13:16 /etc/rsync.password
[root@C-linux ~]# rsync --daemon                   #<==啓動rsync服務
[root@C-linux ~]# netstat -lntup|grep rsync        #查看服務是否起來
[root@C-linux ~]# echo 'rsync --daemon' >>/etc/rc.local

以上是服務端(rsync --damon)的配置,下面測試

配置客戶端ui

[root@A-linux ~]# /etc/init.d/iptables stop
[root@A-linux ~]# getenforce 
Disabled
[root@A-linux ~]# rpm -qa|grep rsync [root@A-linux ~]# echo '123456' >/etc/rsync.password [root@A-linux ~]# cat /etc/rsync.password #<===客戶端密碼文件只須要保留密碼便可,無需將用戶一塊兒保留 123456 [root@A-linux ~]# chmod 600 /etc/rsync.password [root@A-linux ~]# ll /etc/rsync.password -rw------- 1 root root 7 1月 31 13:28 /etc/rsync.password

配置完成後,須要注意2個地方:spa

1. 數據的流向是從客戶端到服務端,在客戶端進行拉/推操做數據流向

2. 全部操做(備份)都是在客戶端,服務端只是守護進程

3. 配置好rsync --daemon服務端後,在客戶端推拉數據的時候,就不用借用通道了,直接是使用服務端偵聽的端口傳輸數據

測試驗證:

客戶端推數據到服務端

[root@A-linux ~]# rsync -avz /tmp/ rsync_backup@10.0.0.4::data --password-file=/etc/rsync.password 
sending incremental file list
./
hosts
.ICE-unix/
ssh-hBbdsD1500/
ssh-hBbdsD1500/agent.1500

sent 253 bytes received 41 bytes 588.00 bytes/sec
total size is 166 speedup is 0.56

服務端查看數據

[root@C-linux ~]# ll /data/
總用量 8
-rw-r--r-- 1 rsync rsync 166 1月 31 10:36 hosts
drwx------ 2 rsync rsync 4096 1月 31 13:27 ssh-hBbdsD1500

若是出現報錯信息,查看日誌排錯便可!  更多rsync知識及原理深刻了解,請查看好友博客

http://www.cnblogs.com/f-ck-need-u/p/7220009.html

相關文章
相關標籤/搜索