文章目錄
- 關于rsync
- 配置rsync源服務器
- 使用rsync備份工具
- rsync遠程同步實驗
- 實驗環境
- 推薦步驟
- rsync實時同步
- 關于inotify
- rsync+inotify實驗
- 實驗環境
- 推薦步驟
關于rsync
●一款快速增量備份工具
●Remote Sync,遠程同步
●支持本地復制,或者與其他SSH,rsync主機同步
●官方網站:http://rsync.samba.org

配置rsync源服務器
●rsync同步源
- 指備份操作的遠程服務器的,也稱為備份源

●基本思路:
- 建立rsyncd.conf組態檔,獨立的賬號檔案
- 啟用rsync–daemon模式
●應用實體
- 用戶backuper,允許下行同步
- 操作目錄為/var/www/html
●組態檔rsync.conf
- 需手工建立,語法類似于Samba配置
- 認證配置auth users secrets file,不加則為匿名
●rsync賬號檔案
- 采用“用戶名:密碼”的記錄格式,每行一個用戶記錄
- 獨立的賬號資料,不依賴于系統賬號
- 不依賴于系統賬號是安全的,因為用獨立的賬號,和系統沒有關系
●啟用rsync服務
- 通過–daemon獨自提供服務,daemon手動同步
使用rsync備份工具
●rsync命令的用法
Rsync[選項] 原始位置 目標位置
●常用選項
- -a:歸檔模式,遞回并保留物件屬性,等同于 -rlptgoD
- -v:顯示同步程序的詳細資訊
- -z:在傳輸檔案時進行壓縮
- -H:保留硬鏈接檔案
- -A:保留ACL屬性資訊
- –delete:洗掉目標位置有而原始位置沒有的檔案
- –checksum:根據物件的校驗和來決定是否跳過檔案
rsync遠程同步實驗
實驗環境

推薦步驟
1.配置源站點虛擬機修改rsync組態檔
[root@source ~]# hostnamectl set-hostname source
[root@source ~]# su
[root@source ~]# vim /etc/rsyncd.conf
uid = nobody ##指定uid為nobody
gid = nobody ##指定gid
use chroot = yes ##禁錮在源目錄
port 873 ##監聽埠號
#max connections = 4
log file = /var/log/rsyncd.log ##日志檔案存放位置
pid file = /var/run/rsyncd.pid ##pid檔案存放位置
hosts allow = 192.168.148.0/24 ##允許訪問的客戶機地址網段
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[wwwroot] ##共享模塊名稱
path = /var/www/html ##源目錄的實際路徑
comment = www.test.com
read only = yes ##是否只讀
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 ##同步時不在壓縮的檔案型別
auth users = backuper ##授權用戶為backuper
secrets file = /etc/rsyncd_users.db ##存放賬戶資訊的資料檔案
2.創建用于密碼的檔案
[root@source ~]# vim /etc/rsyncd_users.db ##創建檔案
backuper:123456 ##用戶名稱:密碼
[root@source ~]# chmod 666 /etc/rsyncd_users.db ##給資料檔案設定權限
[root@source ~]# yum -y install httpd ##安裝httpd服務,我們需要用到站點目錄
[root@source ~]# cd /var/www/html/
[root@source html]# echo "this is test" > test.txt ##寫入兩個檔案資訊
[root@source html]# echo "this is benet" > 123.html
[root@source html]# ls
123.html index.html
[root@source html]# rsync --daemon ##啟動服務
3.在目標站點同步資訊
[root@localhost ~]# hostnamectl set-hostname mubiao ##修改主機名方便區分
[root@localhost ~]# su ##切換主機名
[root@localhost ~]# setenforce 0 ##關閉防護系統
[root@localhost ~]# iptables -F ##清空防火墻規則
[root@bendi ~]# rpm -q rsync ##服務不需要安裝,系統自帶的
rsync-3.1.2-4.el7.x86_64
格式一:rsync -zva 用戶名@對方地址::模塊名稱 拷貝到哪個目錄下
[root@mubiao ~]# rsync -zva backuper@192.168.148.135::wwwroot /opt

格式二:rsync -zva rsync://用戶名@對方地址/模塊名稱 拷貝到哪個目錄下
[root@mubiao opt]# rm -rf *.html ##先將檔案全部洗掉
[root@mubiao opt]# rsync -zva rsync://backuper@192.168.148.135/wwwroot /opt
格式三:面互動的方式去同步
[root@mubiao opt]# vim /etc/server.pass ##創建一個檔案存放對方用戶密碼
123456
[root@mubiao opt]# chmod 600 /etc/server.pass ##給密碼檔案設定權限為600
[root@mubiao opt]# ls
rh ##/opt目錄下有rh檔案
[root@mubiao opt]# rsync -zva --delete --password-file=/etc/server.pass backuper@192.168.148.135::wwwroot /opt

因為–delete會洗掉目標位置有而原始位置沒有的檔案,所有rh檔案被洗掉了
rsync實時同步
●定期同步不足
- 執行備份的時間固定,延遲明顯,實時性差
- 當同步源長期不變化時,密集的定期任務是不必要的
●實時同步的優點
- 一旦同步源出現變化,立即啟動備份
- 只要同步源無變化,,則不執行備份
關于inotify
●Linux內核的inotify機制
- 從版本2.6.13開始提供
- 可以監控檔案系統的變動情況,并做出通知回應
- 輔助軟體:inotify-tools

rsync+inotify實驗
實驗環境

推薦步驟
1.接著上面的環境繼續,服務端改為148.136并進行配置
[root@mubiao opt]# yum -y install httpd ##安裝apache服務
[root@mubiao opt]# cd /var/www/html/
[root@mubiao html]# ls
[root@mubiao html]# ##站點目錄是空的
[root@mubiao html]# vim /etc/sysctl.conf
# For more information, see sysctl.conf(5) and sysctl.d(5).
fs.inotify.max_queued_events = 16384 ##監控佇列大小
fs.inotify.max_user_instances = 1024 ##最多監控實體數
fs.inotify.max_user_watches = 1048576 ##每個實體最多監控檔案數
[root@mubiao html]# sysctl -p ##配置讓其生效

[root@mubiao opt]# tar zxvf inotify-tools-3.14.tar.gz ##解壓工具
[root@mubiao opt]# cd inotify-tools-3.14/
[root@mubiao inotify-tools-3.14]# yum -y install gcc gcc-c++ ##安裝編譯安裝包
[root@mubiao inotify-tools-3.14]# ./configure
[root@mubiao inotify-tools-3.14]# make&&make install
[root@mubiao inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html ##配置監控/var/www/html目錄
這時需要再打開一個192.168.148.136的終端
[root@mubiao ~]# cd /var/www/html/
[root@mubiao html]# ls
[root@mubiao html]# touch 123.txt ##在新終端的/var/www/html目錄下創建檔案

[root@mubiao html]# vim /opt/inotify.sh ##寫入腳本執行監控
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.148.135::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
~
[root@mubiao html]# chmod +x /opt/inotify.sh ##給腳本增加執行權限
[root@mubiao html]# chmod 777 /var/www/html/
[root@mubiao opt]# ./inotify.sh ##執行監控腳本(需要將原來的監控停止)
2.客戶端192.168.148.135配置
[root@source opt]# cd /var/www/html/
[root@source html]# ls
123.html index.html
[root@source html]# rm -rf *.html ##將148.135虛擬機中的apache站點內容洗掉
[root@source html]# vim /etc/rsyncd.conf ##修改rsync組態檔
[wwwroot]
path = /var/www/html
comment = www.test.com
read only = no ##將只讀改為no
[root@source html]# netstat -ntap | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 10464/rsync
tcp6 0 0 :::873 :::* LISTEN 10464/rsync
[root@source html]# kill 10464 ##將行程號洗掉
[root@source html]# rsync --daemon 重新啟動服務
[root@source html]# chmod 777 /var/www/html/ ##站點目錄增加權限
回到服務端的另一個終端,在站點中寫入內容

3.服務端寫入內容


4.客戶端站點也有資訊,同步成功
5.這時將服務端的資訊洗掉


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/20350.html
標籤:其他
上一篇:Linux~修改檔案屬性與權限(chgrp、chown、chmod)的使用
下一篇:yum安裝及配置方法來啦!
