Rsync是一款開源、快速、多功能、可實現全量及增量的本地或者遠程數據同步的優秀工具。而且支持多系統平臺運行。Rsync具備本地與遠程兩臺主機之間的數據快速複製同步鏡像、遠程備份等功能,該功能相似scp,可是優於scp功能,還具備本地不一樣分區目錄之間全量及增量複製數據。html
scp同步實驗ios
主機A: scp 192.168.2.2:/root/a.txt .web
Rsync命令格式shell
SRC:源文件或者目錄 DEST:目標目錄或者文件vim
本地: rsync [option...] SRC... [DEST]centos
rsync -aP /etc/passwd /tmp/1.txtbash
經過shell遠程訪問:服務器
拉取: rsync [option...] user@host:src... [dest]架構
推送: rsync [option...] src... user@host:desttcp
舉例: rsync -av 192.168.2.2:/root .
rsync -av /root/a.txt 192.168.2.2:/root
rsync+sersync架構功能實現
serync能夠記錄下被監聽目錄中發生變化的(包括增長、刪除、修改)具體某個文件或者某一個目錄的名字,而後使用rsync同步的時候,只同步發生變化的文件或者目錄。
應用場景:數據在兩臺物理服務器上各存儲一份,確保第一份備份失效後,第二份有效。
rsync --daemon
netstat -antp |grep 873
給密碼文件賦權限:chmod 600 /etc/rsync.passwd
遠程數據同步rsync -avzP /data/www/ rsync_back@192.168.2.2::www/ --passwordfile=/etc/rsync.passwd
使用系統用戶的rsync備份的詳細案例過程:
實驗拓撲 huya23(源主機192.168.1.23)====huya24(目標主機 192.168.1.24)
Rsync服務依賴Xinetd,是使用超級服務來管理的須要在目標機器上安裝rsync服務端
[root@huya24 ~]# yum -y install xinetd rsync
[root@huya24 ~]# rsync --daemon
[root@huya24 ~]# netstat -antup | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2056/rsync
tcp6 0 0 :::873 :::* LISTEN 2056/rsync
使用rsync備份數據
對huya23網站根目錄的/var/www/html目錄備份到huya24的/web-back
源服務器:huya23
目標服務器:huya24
創建測試用戶
[root@huya24 ~]# useradd rget1 ; echo rget1:123456 | chpasswd
[root@huya23 ~]# useradd rget1 ; echo rget1:123456 | chpasswd
//測試用戶,rget1用於下載
對目錄賦予ACL權限
[root@huya23 ~]# mkdir /var/www/html/ -p
[root@huya23 ~]# setfacl -R -m user:rget1:rwx /var/www/html/ //設置rget1的權限
[root@huya23~]# setfacl -R -m default:rget1:rwx /var/www/html/
[root@huya23 ~]# getfacl /var/www/html
user::rwx
user:rget1:rwx
default:user:rget1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
建立測試數據
[root@huya3 ~]# cp -r /boot/* /var/www/html/ //boot目錄下的全部數據做爲測試數據
[root@huya24 ~]# mkdir /web-back
[root@huya24 ~]# chown rget1:rget1 -R /web-back/
[root@huya23 ~]# rsync -avz --delete /var/www/html/ rget1@192.168.1.24: /web-back/
使用非系統用戶的rsync備份的詳細案例過程:
使用系統配置文件/etc/rsyncd.conf來備份數據,建立備份帳戶,最後把rsync以deamon方式運行
rsyncd.conf配置文件
配置文件分爲兩部分:全局參數,模塊參數
全局參數:對rsync服務器生效,若是模塊參數和全局參數衝突,衝突的地方模塊參數生效
模塊參數:定義須要經過rsync輸出的目錄定義的參數
用配置文件定義目錄輸出
[root@huya24 ~]# vim /etc/rsyncd.conf //文件不存在,須要本身建立
【centos6.X 系統上是沒有這個文件的,在7系統上,運行來rsync – daemon 就會自動生成這個文件】
uid = root #傳輸文件時守護進程應該具備的uid身份,默認爲nobody
gid = root #傳輸文件時守護進程應該具備組
address =192.168.0.64 #監聽IP,爲本機ip地址
port =873 #監聽端口
hosts allow =192.168.0.0/24 #容許同步客戶端的IP地址,能夠是網段,或者用*表示全部 192.168.1.0/24或192.168.1.0/255.255.255.0
use chroot = yes #是否囚牢,鎖定家目錄,rsync被黑以後,黑客沒法再rsync運行的家目錄以外建立文件,選項設置爲yes
max connections =5 #最大鏈接數
pid file =/var/run/rsyncd.pid #進程PID,自動生成
lock file =/var/run/rsync.lock #指max connectios參數的鎖文件
log file =/var/log/rsyncd.log #日誌文件位置
motd file =/etc/rsyncd.motd #客戶端登錄以後彈出的消息,須要建立
[wwwroot] #共享模塊名稱
path =/web-back/ #指定該模塊的供備份的目錄樹路徑
comment = used for web-data root #描述信息
read only = false #設置服務端文件讀寫權限
list = yes #是否容許查看模塊信息,該選項設定當客戶請求可使用的模塊列表時,該模塊是否應該被列出
auth users = rsyncuser #備份的用戶,和系統用戶無關
secrets file =/etc/rsync.passwd #存放用戶的密碼文件,格式是 用戶名:密碼
uid = root
gid = root
address =192.168.1.24
port =873
hosts allow =192.168.1.0/24
use chroot = yes
max connections =5
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log file =/var/log/rsyncd.log
motd file =/etc/rsyncd.motd
[wwwroot]
path =/web-back/
comment = used for web-data root
read only = false
list = yes
auth users = rsyncuser
secrets file = /etc/rsync.passwd
建立提示文件和用戶密碼
[root@huya24 ~]# echo "Welcome to Backup Server" > /etc/rsyncd.motd
[root@huya24 ~]# vim /etc/rsync.passwd
rsyncuser:password123
[root@huya24 ~]# chmod 600 /etc/rsync.passwd //目錄權限必須是700或者600,不然的話身份驗證會失效,設置rsync user的時候
啓動服務測試
啓動rsync與xinetd服務
systemctl start xinetd #啓動xinetd服務
systemctl enable xinetd #將xinetd服務加入開機項
rsync --daemon --config=/etc/rsyncd.conf #加載配置文件rsyncd.conf啓動rsync服務
[root@huya24 ~]# ps aux|grep rsync
root 2056 0.0 0.0 114652 316 ? Ss 20:53 0:00 rsync --daemon
[root@huya24 ~]# kilall rsync
[root@huya24 ~]# rsync --daemon --config=/etc/rsyncd.conf
[root@huya24 ~]# ps aux|grep rsync
root 2155 0.0 0.0 114652 520 ? Ss 21:33 0:00 rsync --daemon --config=/etc/rsyncd.conf
root 2157 0.0 0.0 112660 972 pts/0 S+ 21:33 0:00 grep --color=auto rsync
[root@huya24 ~]# netstat -antup | grep :873
tcp 0 0:::873 :::* LISTEN 45089/xinetd
測試,rsync語法: rsync 選項 用戶名@目標服務器IP::共享模塊名
[root@huya23 ~]# rsync -avz --delete /var/www/html/ rsyncuser@192.168.1.24::wwwroot
Welcome to Backup Server
Password: #輸入密碼password123
密碼處理
新建一個文件保存好密碼,而後在rsync命令中使用--password-file指定此文件便可
[root@huya23 ~]# vim /etc/rsync.passwd
password123
[root@huya23 ~]# chmod 600 /etc/rsync.passwd
[root@huya23 ~]#rsync -avz --delete /var/www/html rsyncuser@192.168.0.64::wwwroot --password-file=/etc/rsync.passwd
腳本實現定時自動備份
[root@huya23 ~]# vim autobackup.sh
#!/bin/bash
rsync -avz --delete /var/www/html rsyncuser@192.168.0.64::wwwroot --password-file=/opt/passfile
[root@huya23 ~]# chmod +x autobackup.sh
[root@huya24 ~]# rm –rf /web-back/* //測試腳本
[root@huya23~]# sh autobackup.sh
[root@huya24 ~]# echo "01 3 * * * sh /root/autoback.sh &" >> /var/spool/cron/root