rsync基礎及基本使用

一、rsync同步工具算法

1.一、rsync介紹shell

    rsync(remote sync)是unix系統下的數據鏡像備份工具,也是一款快速增量備份工具,支持遠程同步、本地複製等功能。並且rsync不但傳輸速度快,並且在傳輸時,能夠實現差別備份,也就是僅若是服務器端和客戶端之間數據不一致時,僅複製不一樣的部分。vim

1.1.一、特色:安全

    • 能夠鏡像保存整個目錄樹或文件系統bash

    • 有較高的文件傳輸效率服務器

    • 能夠藉助於ssh實現安全數據傳輸併發

    • 支持匿名數據傳輸ssh

1.1.二、rsync工做模式socket

    • 本機上直接運行,相似cp工具shell模式(本地模式)ide

    • 使用rsh或ssh上實現服務器端與客戶端之間數據傳輸(遠程shell模式,可利用ssh協議承載其遠程傳輸過程

    • 列表模式,僅列出源中的內容,而不復制(-nv)

    • 服務器模式,此時rsync工做爲守護進程。可以接收客戶端的數據傳輸請求,並且在同步時能夠把客戶端的數據同步給服務器端,也能夠反過來

1.1.三、同步方式

基於某種算法,也叫rsync算法,實現去檢查你的源和目標之間兩個文件是否有不一樣之處,若是有,僅去發送不一樣的文件,相同的就不作複製,因此是快速同步工具

1.1.四、缺點

    傳輸過程是不加密的(可是他能借助ssh實現傳輸加密)

1.二、rsync命令經常使用選項

    -n:測試同步,可是實際上不作同步

    -v:詳細輸出模式

    -q:靜默模式,不顯示信息

    -c:checksum,開啓校驗功能

    -r:遞歸複製

        註釋:這裏須要注意個地方,若是你複製的文件最後沒有「/」,那麼他複製的就是目錄名,若是有的話,他複製的裏面的全部文件

    -a:歸檔,保留文件的原有屬性

    -p:保留文件的權限

    -t:保留文件的時間戳

    -l:保留符號連接

    -g:保留屬組

    -o:保留屬主

    -D:保留設備文件

    -e ssh:使用ssh做爲傳輸承載

    -z:壓縮後傳輸

    --progress:顯示進度條

    --stats:顯示如何執行壓縮和傳輸

用法示例:
[root@localhost~]# rsync -r --stats -e ssh --progress /etc/pam.d root@192.168.1.187:/tmp/

1.三、服務器模式

1.3.一、服務

    rsync工做於服務器模式時,rsync自身並不監聽,由於他是瞬時守護進程,須要藉助於超級守護進程(xinetd)

1.3.二、配置文件

    若是rsync須要工做起來,將本身本地某個目錄存儲塊共享出去,還須要提供額外的配置文件。但此配置文件rsync並是沒有提供。雖然沒有提供直接的配置文件,可是在它安裝目錄下有一個叫rsyncd.conf.5.gz的文件,這個文件就是rsync的幫助手冊。咱們能夠根據裏面的幫助信息,自我編寫相應的配置文件

1.3.三、服務配置文件格式

    rsync配置文件分兩段:

        註釋:主要定義有哪些共享,每個共享都是相似Samba同樣用[]來定義

        全局配置段:一般只有一個

     共享配置段:能夠有多個        

            例如:[SHARE_NAME]    #定義共享名    #有點相似Samba

1.3.四、rsync所監聽的端口

    rsync所監聽的端口是 873

1.3.五、rsync命令格式 

    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

    示例:使用客戶端執行下面的命令(向遠端服務器推送數據)

[root@localhost ~]# rsync /etc/fstab 192.168.1.187::tools

        註釋:這裏是明肯定義推送到哪一個共享名便可

        ②

[root@localhost ~]# rsync /etc/fstab rsync://192.168.1.187/tools

    示例:使用客戶端執行下面的命令(從遠端服務器拉去數據到本地)

        註釋:前提是你的tools指定的共享盤是有數據的

        ①

[root@localhost ~]# rsync -a 192.168.1.187::tools/ ./
[root@localhost tmp]# rsync -a 192.168.1.187::tools/Local.repo ./   #拉取單個文件

        ②

[root@localhost tmp]# rsync -a rsync://192.168.1.187/tools/fstab ./


1.3.六、實驗:實現rsync安裝及應用

    實驗拓撲

wKiom1ZBWILBvdyBAABexzfB2Xo107.png

    步驟

    一、想啓動rsync服務,先安裝超級守護進程

[root@rsyncserver ~]# yum install xinetd  #安裝超級守護進程

    二、設置開機自動啓動

[root@rsyncserver xinetd.d]# chkconfig xinetd on

    三、安裝rsync

[root@rsyncServer xinetd.d]# yum install rsync -y

    四、查看超級守護進程下自動生成的rsync服務

[root@rsyncserver xinetd.d]# vim /etc/xinetd.d/rsync
service rsync
{
        disable = no         # 這裏改成no,就表示啓用起來了
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID

    五、建立共享目錄

[root@rsyncServer xinetd.d]# mkdir /data

    六、編輯配置文件/etc/rsyncd.conf(此文件是本身新建,系統不會自動生成)

[root@rsyncServer xinetd.d]# vim /etc/rsyncd.conf
# Global Settings
uid = nobody
gid = nobody
use chroot = no  #要不要啓用chroot功能
max connections = 10  #最大併發鏈接數
strict modes = yes     #是否啓用嚴格檢查權限,用戶是否容許上傳下載
pid file = /var/run/rsync.pid
log file = /var/log/rsyncd.log
# Directory to be synced
[tools]
path = /data#共享文件所存放的地方
ignore error = yes        #傳輸中若是有文件發生錯誤了怎麼辦,yes表示忽略
read only = no      #是不是隻讀
write only = no         #是否是隻寫,讓別人不能看
hosts allow = 192.168.1.0/24          #容許哪些主機來實現數據同步(白名單)
hosts deny = *                   #若是他匹配到上面的,那麼就直接經過,若是沒有,表示拒絕全部
list = false                  #是否容許列出全部 true/false
uid = root
gid = root  #這裏的uid和gid和上面的不一樣,這裏的意思是這個共享目錄是以什麼身份運行的。若是此處比寫,將會繼承上面的

    七、啓動服務

[root@rsyncserver xinetd.d]# service xinetd star

    八、使用Linux客戶端測試鏈接

[root@localhost ~]# rsync /etc/fstab 192.168.1.187::tools

    註釋:若是鏈接不成功,請查看是否開啓了防火牆

1.3.七、實驗:服務器端啓用用戶認證的功能

    咱們知道使用IP地址訪問受權既不方便也不安全,因此解決辦法就是給用戶受權。

    介紹

    一、首先要添加認證參數,就是在共享定義處添加配置 [tools]添加兩項參數

auth users = USERNAME LIST    #容許哪一個用戶,要寫具體的名字,此用戶必須是你的    password存在的用戶

Secrets file = /etc/rsynce.passwd    #密碼文件路徑,須要本身建立

    說明:USERNAME LIST以逗號分隔的再rsyncd.passwd中存在用戶名的列表

    二、建立密碼文件/etc/rsyncd.passwd       #這個密碼文件有特殊的權限要求,必須是600

    格式:

    username:password

    註釋:內容是明文的,因此要作好文件權限控制

    示例:

    一、編輯rsyncd.conf配置文件,添加用戶認證參數

[root@rsyncserver data]# vim /etc/rsyncd.conf
auth users = tom, jerry       
secrets file = /etc/rsyncd.passwd

    二、建立rsync密碼文件及建立用戶帳號密碼

[root@rsyncserver data]# vim /etc/rsyncd.passwd
wqp:pangxie
windchaser:pangxie

    三、修改權限 

[root@rsyncserver data]# chmod 600 /etc/rsyncd.passwd

    四、重啓xinetd服務

[root@rsyncserver data]# service xinetd restart

    五、使用客戶端測試

[root@localhost ~]# rsync /etc/fstab wqp@192.168.1.187::tools
相關文章
相關標籤/搜索