1. 程式人生 > >增量備份之rsync(ubuntu16.04)

增量備份之rsync(ubuntu16.04)

rsync(remote synchronize) 是一個遠端資料同步工具,可以使用“rsync演算法”同步本地和遠端主機之間的檔案。rsync的好處是隻同步兩個檔案不同的部分,相同的部分不在傳遞。類似於增量備份,這使的在伺服器傳遞備份檔案或者同步檔案,比起scp工具要省時間,頻寬

 

Ubuntu16.04預設安裝rsync,但是沒有預設啟動

安裝及啟動:

sudo vim /etc/default/rsync
將RSYNC_ENABLE=false改為true
RSYNC_ENABLE=true 
sudo cp /usr/share/doc/rsync/examples/rsyncd.conf  /etc
sudo vim /etc/rsyncd.conf
修改path路徑,然後啟動
sudo /etc/init.d/rsync start

配置檔案引數說明(rsyncd.conf):

# 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]#rsync方式備份時的引數,可以修改為別的名字

        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 #只讀選項,預設為yes,只可以進行下行同步,若要進行上行同步需要改為no
        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那些檔案在傳輸前不用壓縮,預設已設定壓縮包不再進行壓縮

基本命令:

啟動:sudo /etc/init.d/rsync start

重啟:sudo /etc/init.d/rsync restart

關閉:sudo /etc/init.d/rsync stop

檢視狀態:sudo /etc/init.d/rsync status

上傳下載:rsync [選項] 原始位置 目標位置

引數:

-a 歸檔模式,遞歸併保留物件屬性,等同於 -rlptgoD
-v 顯示同步過程的詳細(verbose)資訊
-z 在傳輸檔案時進行壓縮(compress)
-H 保留硬連結檔案
-A 保留ACL屬性
--delete 刪除目標位置有而原始位置沒有的檔案
-r 遞迴模式,包含目錄及子目錄中所有檔案
-l 對於軟連結檔案仍然複製為軟連結檔案
-p 保留檔案的許可權標記
-t 保留檔案的時間標記
-g 保留檔案的屬組標記(僅超級使用者使用)
-o 保留檔案的屬主標記(僅超級使用者使用)
-D 保留裝置檔案及其他特殊檔案

同步方式:

rsync支援兩種同步源,一種是基於SSH的同步源,另一種是基於rsync的同步源。SSH方式類似於scp操作,無需開啟rsync服務,rsync方式需要在服務端開啟rsync服務。

使用上行同步的方式,要將配置檔案rsyncd.conf中,設定read only = no。

下面同步命令中username去掉也可以同步。

下行同步:客戶端操作,將服務端的檔案下載到客戶端

上行同步:客戶端操作,將客戶端的檔案上傳到服務端

SSH方式同步:

下行同步:rsync -avz 使用者名稱@伺服器地址:/伺服器目錄 /本地目錄 

rsync  -avz  [email protected]:/srv/ftp/pub/*  ./

上行同步:rsync -avz /本地目錄 使用者名稱@伺服器地址:/伺服器目錄

rsync  -avz  ./1.txt  [email protected]:/srv/ftp/pub/

rsync方式同步:

下行同步:rsync -avz 使用者名稱@伺服器地址::ftp  /本地目錄 

rsync  -avz  --progress  --delete  [email protected]::ftp  ./

上行同步:rsync -avz /本地目錄 使用者名稱@伺服器地址::ftp 

rsync  -avz  --progress  --delete  ./1.txt  [email protected]::ftp