ubuntu 18.04 rsync 命令使用 服務端配置


1. rsync的主要作用

rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件。rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。

但是在使用就會發現rsync有很多種命令格式,往往會造成誤解。

測試環境Ubuntu 1804。


2. rsync的命令格式和工作模式

2.1. 語法

rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]host:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]


2.2. 工作模式

對應語法,有六種不同的工作模式:

2.2.1. 拷貝本地文件

當SRC和DES路徑信息都不包含有單個冒號":"分隔符時就啟動這種工作模式。如:

rsync -a /data /backup


2.2.2. 使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器

當DST路徑地址包含單個冒號":"分隔符時啟動該模式。如:

rsync -avz *.c foo:src


2.2.3. 使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器

當SRC地址路徑包含單個冒號":"分隔符時啟動該模式。如:

rsync -avz foo:src/bar /data

2.2.4. 從遠程rsync服務器中拷貝文件到本地機

當SRC路徑信息包含"::"分隔符時啟動該模式。如:

rsync -av root@192.168.78.192::www /databack

2.2.5. 從本地機器拷貝文件到遠程rsync服務器中

當DST路徑信息包含"::"分隔符時啟動該模式。如:

rsync -av /databack root@192.168.78.192::www

2.2.6. 列遠程機的文件列表

這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可。如:

rsync -v rsync://192.168.78.192/www


由上面六種工作模式可以看出,可用通過兩種方式與遠程機器進行同步:

  • 使用一個遠程shell,如rsh,ssh;
  • 通過遠程機器的rsync服務進行交互;


3. rsync服務器搭建

3.1. 安裝

Ubuntu 1804實際已經默認安裝rsync的,只是不是默認啟動而已,需要修改/etc/default/rsync:

RSYNC_ENABLE=true   #false改true


3.2. 增加配置

sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc

配置主要選項與意思:

# sample rsyncd.conf configuration file

# GLOBAL OPTIONS

#motd file=/etc/motd #登錄歡迎信息
#log file=/var/log/rsyncd #日志文件
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid

#指定rsync發送日志消息給syslog時的消息級別,常見的消息級別是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默認值是daemon。
#syslog facility=daemon

#自定義tcp選項,默認是關閉的
#socket options=

#以下是模塊信息,我們可以創建多個模塊
# MODULE OPTIONS

[ftp]

        comment = public archive #模塊描述
        path = /var/www/pub #需要同步的路徑
        use chroot = yes #默認是yes|true,如果為true,那么在rsync在傳輸文件以前首先chroot到path參數指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要root權限,並且不能備份指向外部的符號連接指向的目錄文件。
#       max connections=10 #最大連接數
        lock file = /var/lock/rsyncd #指定支持max connections參數的鎖文件。
# the default for read only is yes...
        read only = yes #只讀選項
        list = yes #客戶請求時可用模塊時是否列出該模塊
        uid = nobody #設定該模塊傳輸文件時守護進程應該具有的uid
        gid = nogroup #設定該模塊傳輸文件時守護進程應具有的gid,此項與uid配合可以確定文件的訪問權限
#       exclude = #用來指定多個由空格隔開的多個模式列表,並將其添加到exclude列表中。這等同於在客戶端命令中使用--exclude來指定模式,不過配置文件中指定的exlude模式不會傳遞給客戶端,而僅僅應用於服務器。一個模塊只能指定一個exlude選項,但是可以在模式前面使用"-""+"來指定是exclude還是include    #這個我的理解是排除目錄中不需同步的文件
#       exclude from = #可以指定一個包含exclude模式定義的文件名
#       include = #與exclude相似
#       include from = #可以指定一個包含include模式定義的文件名
#       auth users = #該選項指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊。這里的用戶和系統用戶沒有任何關系。如果"auth users"被設置,那么客戶端發出對該模塊的連接請求以后會被rsync請求challenged進行驗證身份這里使用的 challenge/response認證協議。用戶的名和密碼以明文方式存放在"secrets file"選項指定的文件中。默認情況下無需密碼就可以連接模塊(也就是匿名方式)
#       secrets file = /etc/rsyncd.secrets #該文件每行包含一個username:password對,以明文方式存儲,只有在auth users被定義時,此選項才生效。同時我們需要將此文件權限設置為0600
        strict modes = yes #該選項指定是否監測密碼文件的權限,如果該選項值為true那么密碼文件只能被rsync服務器運行身份的用戶訪問,其他任何用戶不可以訪問該文件。默認值為true
#       hosts allow = #允許的主機
#       hosts deny = #拒絕訪問的主機
        ignore errors = no #設定rsync服務器在運行delete操作時是否忽略I/O錯誤
        ignore nonreadable = yes #設定rysnc服務器忽略那些沒有訪問文件權限的用戶
        transfer logging = no #使rsync服務器使用ftp格式的文件來記錄下載和上載操作在自己單獨的日志中
#       log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. #設定日志格式
        timeout = 600 #超時設置(秒)
        refuse options = checksum dry-run #定義一些不允許客戶對該模塊使用的命令選項列表
        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz #告訴rysnc那些文件在傳輸前不用壓縮,默認已設定壓縮包不再進行壓縮

如果需要指定賬戶密碼或者配置日志,可以參考:Ubuntu下安裝配置rsync  。


3.3. 啟動

根據自己的需求修改配置后,啟動服務:

sudo systemctl start rsync


3.4. 開放防火牆

rsync服務使用的端口是873,如果開了防火牆需要開放:

sudo ufw allow 873


4.參考

(1) rsync命令

(2) Ubuntu下安裝配置rsync

(完)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM