rsync數據備份


一 基本概念

1.1 rsync介紹

rsync,remote synchronize,是一款實現遠程同步功能的軟件,在同步文件的同時,可以保持原來文件的權限,時間,軟硬鏈接等附加信息。Rsync是使用rsync算法提供一個客戶機和遠程文件服務器的文件同步的快速算法,而且可以同步ssh的方式來傳輸

rsync特點

  可以鏡像保存整個目錄和文件系統

  可以很容易做到保持原來文件的權限,時間,軟硬鏈接等

  無須特殊權限即可安裝

  快速:第一次同步時,rsync會復制全部的內容,但在下一次指揮復制修改過的文件

  壓縮傳輸:rsync在傳輸數據的過程中可以實行壓縮以及解壓縮操作,因此可以使用很少的寬帶

  安全:可以使用奢scp,ssh等方式來傳輸文件,當然也可以使用docket連接

  支持匿名傳輸,以方便進行網站鏡像

  選擇性保持:符號鏈接,硬鏈接,文件屬性,權限。時間等

1.2  rsync與scp比較

  scp無法大備份大量數據,類似windows的復制

  rsync是變量復制,邊統計,邊比較

1.3 常見的備份類型

  完整備份,差異備份,增量備份

  完成備份:每次別分都是從備份源將所有的文件或者目錄備份到本地

  差量備份:備份上次完全備份以后有變化的數據,他針對的是上次的完全備份,他備份過程中部清除存檔

  增量備份:備份上次備份以后有變化的數據,會清除存檔屬性

1.4 運行模式和端口

  采用C/S模式,點到點的傳輸,端口873

  發起端:負責發起rsync同步操作的客戶機叫做發端,通知服務器要備份數據

  備份源:負責相應的客戶機,rsync同步操作的服務器所在的備份源,需要備份的服務器

  服務端:運行rsyncd服務,需要備份的服務器

  客戶端:存放備份數據

1.5 數據同步的方式  

  推push:一台主機負責把數據傳輸給其他主機,服務器開銷很大,比較適合后端服務器比較少的情況‘

  拉pull:所有主機找一台主機拉數據,可能導致數據緩慢

  推:目的主機配置為rsync服務器,源主機周期的使用rsync命令要把同步的目錄推過去

  拉:源主機配置問rsync服務器,目的主機周期的使用rsync命令要把同步的目錄拉過來,兩種方案,都有對應的命令來實現

使用rsync來同步,首先通過xineted監聽873端口,如果rsync進來的是873端口,那么xinetd就會通知他所管轄的rsync服務來回應,接下來就是rsync之間的通訊

二 安裝rsync服務

2.1 下載解壓包

[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# wget https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz

[root@localhost src]# tar -xf rsync-3.1.3.tar.gz

[root@localhost src]# cd rsync-3.1.3

安裝之前,必須安裝GCC編譯器

2.2 編譯安裝

[root@localhost rsync-3.1.3]# ./configure prefix=/usr

[root@localhost rsync-3.1.3]# make

[root@localhost rsync-3.1.3]# make install

2.3 修改配置文件

Rsync的配置文件主要有三個,rsyncd.conf主配置文件、rsyncd.secret密碼文件、rsyncd.motd服務信息

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

# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:
uid = rsync                        
gid = rsync                                  
use chroot = no                            
read only = false                     
#limit access to private LANs
hosts allow = 172.19.18.0/255.255.255.0
hosts deny = *                               
max connections = 5                     
pid file = /var/run/rsyncd.pid            
secrets file = /etc/rsyncd.secrets  
motd file = /etc/rsyncd.motd       
log file = /var/log/rsync.log              
transfer logging = yes                   
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
auth users = rsync_backup
[wiki_test]                              
path = /backup/wiki_test                      
list=yes                                  
ignore errors                              
auth users = rsync_backup
hosts allow = 172.19.18.39/32
hosts deny = *      

[root@localhost ~]# useradd rsync -s /sbin/nologin  -M

[root@localhost rsync-3.1.3]# mkdir  /backup/wiki_test

[root@localhost ~]# chown -R rsync /backup/

[root@localhost ~]# ll -d /backup/

[root@localhost rsync-3.1.3]# vim rsyncd.secrets

rsync_backup:RWDshWFN8aUd7yGP

[root@localhost ~]# cat /etc/rsyncd.motd

[root@darren rsync-3.1.3]# chmod 400 rsyncd.secrets       

設定rsyncd.motd文件

他是定義服務器信息的,也就是用戶登錄信息,

[root@dlocalhost rsync-3.1.3]# systemctl restart rsyncd

[root@localhost ~]# netstat -ntlp|grep 873

服務端配置完成

三 配置客戶端

客戶端centos6.6:172.19.18.39

3.1 安裝服務

[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# wget https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz

[root@localhost src]# tar -xf rsync-3.1.3.tar.gz

[root@localhost src]# cd rsync-3.1.3

[root@localhost rsync-3.1.3]# ./configure --prefix=/usr

[root@localhost rsync-3.1.3]# make

[root@localhost rsync-3.1.3]# make install

[root@localhost rsync-3.1.3]# mkdir /etc/rsyncd

[root@localhost rsync-3.1.3]#  touch /etc/rsyncd/rsyncd.conf

[root@localhost rsync-3.1.3]# touch /etc/rsyncd/rsyncd.secrets

[root@localhost rsync-3.1.3]# chmod 0600 /etc/rsyncd/rsyncd.secrets

[root@localhost rsync-3.1.3]# cat /etc/rsyncd/rsyncd.secrets

RWDshWFN8aUd7yGP

3.2 啟動服務,並作相關配置

[root@localhost rsync-3.1.3]# /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

[root@localhost home]# mkdir /home/tmp

[root@localhost home]# cd /home/tmp

[root@localhost tmp]# touch test1.txt

[root@localhost tmp]# touch test.txt

3.3 驗證

[root@localhost tmp]# rsync -avz --delete --password-file=/etc/rsyncd/rsyncd.secrets  /home/tmp/  rsync_backup@172.21.18.230::wiki_test

四 另添加一個新的模塊和新的客戶端測試

4.1 配置服務端,添加模塊

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

# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:
uid = rsync                        
gid = rsync                                  
use chroot = no                            
read only = false                     
#limit access to private LANs
hosts allow = 172.19.18.0/255.255.255.0
hosts deny = *                               
max connections = 5                      
pid file = /var/run/rsyncd.pid            
secrets file = /etc/rsyncd.secrets  
motd file = /etc/rsyncd.motd       
log file = /var/log/rsync.log              
transfer logging = yes                   
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
auth users = rsync_backup
[wiki_test]                              
path = /backup/wiki_test                      
list=yes                                   
ignore errors                             
auth users = rsync_backup
hosts allow = 172.19.18.39/32
hosts deny = *                               
[test]                              
path = /backup/test                      
list=yes                                   
ignore errors                             
auth users = rsync_backup
hosts allow = 172.19.18.202/32
hosts deny = *  

[root@localhost1 ~]# mkdir /backup/test

[root@localhost ~]# chown -R rsync /backup/

[root@localhost ~]# systemctl restart rsyncd

4.2配置另一個客戶端

客戶端使用centos7.2.安裝rsync使用和7相同的安裝方法

[root@localhost ~]# ip addr

[root@localhost ~]# ll /data/

4.3 驗證

[root@localhost ~]# rsync -avzx  --password-file=/etc/rsyncd.secret  /data/  rsync_backup@172.21.18.230::test 

[root@localhost ~]# touch /backup/test/test2.txt

[root@localhost ~]# rsync -avzx  --password-file=/etc/rsyncd.secret    rsync_backup@172.21.18.230::test   /data/

[root@localhost ~]# ll /data

4.4 關於delete的參數

在客戶端向服務端同步數據,使用delete參數,就會對比兩個目錄,如果存在差異文件,如果是推,就會刪除服務端存在而客戶端不存在的文件,同時發送自己存在而服務端沒有的文件,如果是拉,就會刪除自己存在而服務端不存在的文件,同時拉取服務端存在而自己不存在的文件

[root@localhost ~]# touch /data/test4.txt

[root@localhost ~]# ll /data

[root@localhost ~]# rsync -avzx  --delete  --password-file=/etc/rsyncd.secret    rsync_backup@172.21.18.230::test   /data/

 

[root@localhost ~]# ll /data

[root@localhost ~]# touch /backup/test/test3.txt

[root@localhost ~]# ls /backup/test/

[root@localhost ~]# rsync -avzx  --delete  --password-file=/etc/rsyncd.secret  /data/   rsync_backup@172.21.18.230::test 

 

[root@localhost ~]# ll /backup/test/

驗證完成!


免責聲明!

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



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