rsync使用

rsync命令的工作模式:

       第一種:shell模式,也稱作本地模式

       第二種:遠程shell模式,此時可以利用ssh協議承載其數據傳輸過程

       第三種:列表模式,其工作方式與ls相似,僅列出源的內容: -nv

       第四種:服務器模式,此時,rsync可以工作爲守護進程,能夠接受客服端的數據傳輸請求:在使用時,可以使用rsync命令把文件發送給守護進程,也可以向服務器端請求獲取文件


rsync有許多選項:

       -n: 在不確定命令是否能按意願執行時,務必要事先測試,

       -v: --verbose,詳細輸出模式

       -q: --quite,靜默模式

       -c: --checksum,開啓校驗功能,強制對文件傳輸進行校驗

       -r: --recursive,遞歸複製:

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

       -p: --perms,保留文件的權限

       -t: --time,保留文件的時間戳

       -l: --links, 保留文件的符號鏈接

       -g: --group, 保留文件的屬組

       -o: --owner, 保留文件的屬主

       -D: --devices 保留設備文件

       -e SSH: 表示使用ssh協議作承載

       -z: 對文件壓縮後傳輸


       --progress: 顯示進度條

       --stats:顯示統計結果

       

遞歸複製示例:

       rsync -r /etc abc#把/etc下的所有文件遞歸複製到abc目錄裏

       rsync -r /mydata/data /backups/ : #會把目錄data直接同步至/backups目錄中

       rsync -r /mydata/data/  /backups/ : 會把目錄data/中的內容同步至/backups目錄中

       rsync -e ssh -r redis-4.0.2 [email protected]:/tmp#把本地的redis-4.0.2目錄推送到遠程主機192.168.1.51下的目錄/tmp下

       

配置rsync以daemon的方式運行:


1、設定rsync服務器端:


    1)安裝並啓動xinetd

     # yum -y install xinetd


    2) 爲rsync服務提供配置文件

     配置文件爲/etc/rsyncd.conf


         定義一個全局配置和多個rsync共享配置


      #Global Settings

        uid = nobody

        gid = nobody

        use chroot = no

        max connections = 10

        strict modes = yes

        pid file = /var/run/rsyncd.pid

        log file = /var/log/rsyncd.log

       #Directory to be synced

        [synced_name]

        path = /path/to/some_dir

        ignore erros = yes

        read only = no

        write only = no

        hosts allow = white_list_ip/net

        hosts deny = black_list_ip/net

             說明:

                 1、二者都不出現時,默認允許訪問:

                 2、只出現hosts allow: 定義白名單,但沒有被匹配的主機由默認規則處理,即爲允許:

                 3、只出現hosts deny: 定義黑麪單,出現在名單中的都被拒絕

                 4、二者同時出現,先檢查hosts allow,如果匹配就allow,否則,檢查hosts

                 deny,如果匹配則拒絕:如二者均無匹配,則由默認規則處理,即爲允許:

                 

        list = false

        uid = root

        gid = root

        auth users = username

        secrets file = /etc/rsync.passwd


       3)配置密碼文件/etc/rsyncd.passwd

         文件格式(明文):

         username:password


         文件權限要設置爲600;


       4)配置服務能夠啓動

        # chkconfig rsync on

        # service xinetd start


        監聽於873/tcp

    

2、在服務器上做測試


如果需要做週期性操作,則需要將命令寫入crontab中:



實際演示:


服務器端:192.168.1.49

客戶端:192.168.1.51


CentOS自帶rsync


服務器端:


1、建立數據目錄

         

[root@localhost ~]# mkdir -pv /mydata/data

mkdir: 已創建目錄 "/mydata"

mkdir: 已創建目錄 "/mydata/data"


2、創建配置文件


[root@localhost ~]# vim /etc/rsyncd.conf


uid = nobody #設置運行rsync進程的用戶

gid = nobody

use chroot = no

max connections = 10

strict modes = yes

pid file = /var/run/rsyncd.pid #CentOS7中yum安裝不需要指定pid file 否則報錯

log file = /var/log/rsyncd.log #日誌文件

[mydata]

path = /mydata/data #實際需要同步的路徑

ignore errors = yes

read only = no #可以pull

write only = no #可以push

hosts allow = 192.168.1.0/24 #允許訪問的主機或網段

hosts deny = *

list = false

uid = root

gid = root

auth users = myuser #客戶端獲取文件的身份此用戶並不是本機確實存在的用戶

secrets file = /etc/rsync.passwd #用來認證客戶端的密鑰文件

3、創建密碼文件

[root@localhost ~]# vim /etc/rsync.passwd

myuser:mypass

4、修改密碼文件權限

[root@localhost ~]# chmod 600 /etc/rsync.passwd

5、把rsync服務設置爲開機啓動並啓動服務

[root@localhost ~]# systemctl enable rsyncd.service

ln -s '/usr/lib/systemd/system/rsyncd.service' '/etc/systemd/system/multi-user.target.wants/rsyncd.service'

[root@localhost ~]# systemctl start rsyncd.service

6、查看rsync監聽的端口

[root@localhost ~]# ss -tnlp|grep 873

LISTEN     0      5                         *:873                      *:*      users:(("rsync",28684,4))

LISTEN     0      5                        :::873                     :::*      users:(("rsync",28684,5))


測試把客戶端的jenkis文件push到服務器的mydata目錄下


客戶端:


[root@localhost src]# rsync jenkins-cli.jar [email protected]::mydata 

Password: 


服務器端:


可以正常的看到該文件


[root@localhost mydata]# cd data/

[root@localhost data]# ls

jenkins-cli.jar


測試把服務器端/mydata/data/目錄下的jenkis文件再pull到本地的/root目錄下


[root@localhost src]# rsync [email protected]::mydata/* /root

Password: 

[root@localhost src]# cd /root/

[root@localhost ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  jenkins-cli.jar




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章