rsync

Rsync
一款快速增量備份工具
支持遠程同步,支持上傳和下載
命令:
Rsync [選項] 原始位置 目標位置
-a:歸檔模式,遞歸併保留對象屬性,等同於 -rlptgoD
-v:顯示同步過程的詳細(verbose)信息
-z:在傳輸文件時進行壓縮(compress)
-H:保留硬連接文件
-A:保留ACL屬性信息
--delete:刪除目標位置有而原始位置沒有的文件
--checksum:根據對象的校驗和來決定是否跳過文件
上傳:rsync -avz A(/opt/) B(root@目標IP:/root/html)
rsync -avz A(/opt/
) B(root@目標IP::wwwroot)
:: 表示連接的是共享文件夾
將A主機的文件上傳到主機B
下載:rsync -avz B(root@IP:/root/html) A(/opt/)
rsync -avz B(root@目標IP::wwwroot) A(/opt/
)
A是客戶端,B是服務器
實驗:2臺linux
服務器:192.168.80.182
客戶端:192.168.80.181
客戶端:安裝rsync工具
服務器:
1 yum install -y rsync
2 vi /etc/rsyncd.conf uid = nobody
gid = nobody
use chroot = yes
address = 192.168.80.182
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.80.0/24
[wwwroot]
path = /var/www/html
comment = Document Root of www.benet.com
read only = no
dont compress = .gz .bz2 .tgz .zip .rar .z auth users = zlx
Secrets file = /etc/rsyncd_users.db
3建立虛擬用戶zlx(客戶端以虛擬用戶訪問服務器)
vi /etc/rsyncd_users.db zlx:abc123
4設置權限chmod 600 /etc/rsyncd_users.db
5啓動程序:rsync --daemon
6檢查:netstat -anpt | grep rsync 出現873口
註釋:源主機文件位置/var/www/html 共享名wwwroot
客戶端使用命令進行下載操作:
rsync -avz [email protected]::wwwroot/ ./
有密碼交互,可以設置去除:
export RSYNC_PASSWORD=abc123 (永久生效則寫入/etc/ profile中)
客戶端使用命令進行上傳操作:
1,注意共享文件夾的屬性:read only = no
2,文件的屬主改爲nobody
確認權限沒問題後執行本地文件上傳操作:
rsync -avz /bin/b
[email protected]::wwwroot
·
--delete的使用
rsync -avzH --delete [email protected]::wwwroot /opt
客戶端刪除與服務器共享文件夾內不符的文件,同時根據要求下載共享文件夾內的數據
實驗2:rsync+inotify實時同步:
服務器(92.168.80.182)安裝inotify監控,若發生改變則將上行同步至客戶端(192.168.80.181)
服務器:
1編譯安裝inotify
確保有c++,gcc,make工具
tar xf inotify-tools-3.14.tar.gz -C /opt
cd /opt/inotify-tools-3.14/
./configure
make && make install
2配合inotify觸發備份、調整內核參數
vi /etc/sysctl.conf
fs.inotify.max_queued_events = 16384 //監控隊列大小
fs.inotify.max_user_instances = 1024 //最多監控實例數
fs.inotify.max_user_watches = 1048576 //每個實例最多監控文件數
3 查看參數設置:sysctl –p
4通過腳本完成出發備份任務
vi /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait –mrq -e modify,create,attrib,move,delete /var/www/html"
RSYNC_CMD="rsync -azH --delete /var/www/html/ [email protected]:/srv"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 50 ] ; then
$RSYNC_CMD
fi
Done
注:去除交互,腳本才能正常執行。
5執行腳本,開始監控:sh /opt/inotify_rsync.sh &
實時測試
1首先將服務器共享文件夾內的文件刪除
2將客戶端內/srv文件夾內數據刪除(腳本:是服務器共享問件夾和客戶端/srv文件夾的同步)
3在服務器上新建文件夾abc (監控端有反應)
4查看客戶端是否同步
檢查完畢!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章