1、rsync是什麼?html
rsync全稱Remote Sync ,遠程同步,是Linux/UNIX系統下的文件同步和數據傳輸工具,數據備份,它採用了「rsync算法」使一個客戶機和遠程文件服務器之間的文件同步。web
能夠將同一個服務器的數據從一個分區備份到另外一個分區,也能夠將本地系統的數據經過網絡傳輸方式備份到任何一個遠程主機上;算法
rsync能夠在中斷後恢復傳輸;windows
rsync只傳輸源文件和目標文件之間不一致的部分;rsync能夠執行完整備份或增量備份。後端
scp,遠程傳輸工具,send copy,相似於windows地複製,可是沒法備份大量數據centos
想傳目錄,使用 「scp -r」安全
rsync:能夠邊複製,邊統計,邊比較bash
第一次全傳服務器
第二次計算哪些文件已傳送,傳送過的文件就不會再傳送了網絡
也就是說,rsync只會傳輸兩邊差別的文件
都是基於ssh協議的。
2、rsync的功能特性:
能夠鏡像保存整個目錄樹和文件系統;
能夠增量同步數據,文件傳輸效率高,於是同步時間很短;
能夠保持原文件的權限、時間、軟硬連接等屬性;
無需特殊權限便可安裝;
快速:第一次同步時rsync會複製所有內容,但在下一次只傳輸修改過的文件;
壓縮傳輸:rsync在傳輸數據的過程當中能夠實行壓縮及解壓縮操做,所以可使用更少的帶寬;
加密傳輸數據,保證了數據的安全性;
可使用scp、ssh等方式來傳輸文件,也能夠經過直接的socket連接;
支持匿名傳輸,以方便進行網站鏡像;
3、運行模式和端口:
採用C/S模式(客戶端/服務器模式)[就是一個點到點的傳輸,直接使用rsync命令]
端口:873(默認)
3、發起端和同步源(備份源)
發起端:在同步任務中,負責發起rsync同步操做的客戶機,通知服務器我要備份你的數據
同步源(備份源):負責響應來自於客戶機的rsync同步操做的服務器,須要備份的服務器。
服務端:運行rsyncd服務,通常來講,須要備份的服務器
客戶端:存放備份數據
4、數據同步方式
推(push):一臺主機負責把數據傳送給其餘主機,服務器開銷很大,比較適合後端服務器少的狀況
拉(pull):全部主機定時去找一主機拉數據,可能就會致使數據緩慢
推:目的主機配置爲rsync服務器,源主機週期性的使用rsync命令吧要同步的目錄推過去
(須要備份的機器是客戶端,存儲備份的機器是服務端)
拉:源主機配置爲rsync服務器,目的主機週期性的使用rsync命令把要同步的目錄拉過來
(須要備份的機器是服務端,存儲備份的機器是客戶端)
在同步過程當中,同步源負責提供文檔的原始位置,而發起端對該位置具備讀取權限
拓撲圖以下:
5、xinetd管理rsync工做原理
xinetd,超級互聯網守護進程服務,管理服務
使用rsync來同步是先經過xinetd監聽873號端口,若是rsync進來的是873號端口,那麼xinetd就會通知它所管轄的rsync服務來作迴應,接下來就是rsync兩服務之間的通信。
rsync服務依賴xinetd,是使用超級服務來管理的。
6、安裝rsync:
1、yum安裝
yum install -y xinetd rsync
rsync --daemon
netstat -anpt | grep 873
2、源碼編譯安裝rsync軟件包
#解壓
tar zxvf rsync-3.1.3.tar.gz -C /opt
#切換目錄
cd /opt/rsync-3.1.3
#配置
./configure
#編譯及安裝
make && make install
rsync --daemon
netstat -anpt | grep 873
7、rsync主要命令選項:
-r:遞歸模式,對子目錄以遞歸模式處理
-l:--links 保留軟鏈結
-v:--verbose 詳細模式輸出
-a:--archive 權限保存模式,表示以遞歸方式傳輸文件,並保持全部文件屬性,至關於-rlptgoD
-z:--compress 壓縮模式,對備份的文件在傳輸時進行壓縮處理
-p:--perms 保持文件權限,文件原有屬性。
-o:--owner 保持文件原有屬主信息。
-g:--group 保持文件原有屬組信息。
-D:--devices 保持設備文件信息。
-t:--times 保持文件時間信息。
-A:保持ACL屬性信息
-D:保留設備文件及其其餘特殊文件
--delete:刪除目標位置有而原始位置沒有的文件
--password-file=FILE,從FILE中獲得密碼
總結:
經常使用的-avz
8、使用rsync備份數據:
對192.168.80.100網站根目錄的/var/www/html目錄備份到192.168.80.101的/web-back
源服務器:192.168.80.100
目標服務器:192.168.80.101
在源服務器和目標服務器上:
useradd rget1;echo rget1:123456|chpasswd
在源服務器上:
mkdir -p /var/www/html
setfacl -R -m u:rget1:rwx /var/www/html/
setfacl -R -m default:rget1:rwx /var/www/html/
getfacl /var/www/html
cp -rf /etc/b* /var/www/html/
在目標服務器上:
mkdir /web-back
chown rget1:rget1 -R /web-back/
rsync -avz --delete /var/www/html/ rget1@192.168.80.101:/web-back
注:若是隻想傳輸目錄下的內容,在該目錄後面加「/」,若是想連該目錄一塊兒傳輸,就不加「/」
以上是使用系統用戶備份數據
9、非系統用戶備份數據
使用系統配置文件/etc/rsyncd.conf來備份數據,建立備份帳戶,最後把rsync以deamon方式運行。
rsync.conf配置文件分爲兩部分:全局參數,模塊參數
全局參數:對rsync服務器生效,若是模塊參數和全局參數衝突,衝突的地方模塊參數優先。
模塊參數:定義須要經過rsync輸出的目錄定義的參數。
2.rsync配置文件詳解
該配置文件在centos 6.x版本中沒有,在centos 7.x纔有
vi /etc/rsyncd.conf
uid = root #用戶ID
gid = root #用戶組ID
address = 192.168.80.100 #監聽地址
port = 873 #監聽端口
hosts allow = 192.168.80.0/24 #黑名單
use chroot = yes #禁錮家目錄
max connections = 10 #最大併發鏈接數,默認0(無限制)
strict modes=yes #是否檢查口令文件的權限,yes時必須爲root用戶權限
pid file = /var/run/rsyncd.pid #守護進程PID路徑
lock file=/var/run/rsync.lock #指定支持max connections的鎖文件
log file=/var/run/rsyncd.log #日誌輸出文件路徑
motd file = /etc/rsyncd.motd #指定消息文件,當客戶鏈接服務器時給文件的內容顯示給客戶,默認沒有該文件
[www] #自定義模塊名稱
path = /web-back/ #需備份的文件或目錄,真實系統路徑
comment = ftp area #描述文字
ignore errors #能夠忽略一些無關的I/O錯誤
read only=false #false:客戶端能夠上傳文件 yes:只讀
write only=false #false:客戶端能夠下載文件 yes:不能下載
hosts allow=* #*:容許鏈接任何主機
hosts deny=192.168.100.10 #禁止鏈接rsync服務器的IP
list=yes #客戶端請求可使用的模塊列表時,該模塊是否被列出
uid=root
gid=root
auth users=backup #用戶名backup,與系統用戶沒有任何關係
secrets file=/etc/server.pass #只有定義了auth users項,該文件才起做用,默認沒有此文件,須手動建立(文件格式爲:"用戶名:密碼")
建立motd文件
echo "welcome to backup server" > /etc/rsyncd.motd
建立密碼文件(文件格式:user:pass)
vi /etc/server.pass
backup:www123
修改密碼文件權限
chmod 600 /etc/server.pass
pkill -9 rsync
systemctl start xinetd
systemctl enable xinetd
rsync --daemon --config=/etc/rsyncd.conf
netstat -anpt | grep 873
以上在目的服務器中配置
在源服務器中:
rsync -avz --delete /var/www/html/ backup@192.168.80.101::wwwroot
無密碼交互傳輸:
新建一個文件保存賬號密碼,而後在rsync命令中使用--password-file指定此文件便可
service:/etc/init.d/
systemctl:/usr/lib/systemd/system/*.service
vi /etc/rsync.passwd
www123
chmod 600 /etc/rsync.passwd
rsync -avz --delete /var/www/html/ backup@192.168.80.101::wwwroot --password-file=/etc/rsync.passwd
10、腳本實現定時自動備份
vi autobackup.sh
#!/bin/bash
rsync -avz --delete /var/www/html backup@192.168.80.101::wwwroot --password-file=/opt/file
chmod +x autobackup.sh
echo '01 3 * * * sh /root/autobackup.sh &' >> /var/spool/cron/root或者:crontab -e1 * * * * sh /root/autobackup.sh &