一 基本概念
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/
驗證完成!