增量備份之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