Rsync遠程同步
rsync是什麼?
是一個遠程數據同步工具,可以實現不同主機之間的同步,同時也支持增量和全量的備份
同步源:負責響應來自客戶機的rsync同步操作的服務器,在同步過程中,同步源負責提供文檔的原始位置
發起端:負責發起rsync同步操作的客戶機,對文檔的原始位置有讀取權限
rsync配置文件/etc/rsyncd.conf解析
uid = rsync \\運行進程的用戶
gid = rsync \\運行進程的用戶組
port = 873 \\監聽端口
address = 192.168.0.101 \\監聽地址
log file = /var/log/rsyncd.log \\日誌的文件位置
pid file = /var/run/rsyncd.pid \\存放進程pid的文件位置
fake super = yes \\無需讓rsync以root身份運行,允許接收文件的完整屬性
use chroot = no \\是否禁錮在源地址
max connections = 200 \\最大連接數
timeout = 600 \\超時時間
ignore errors \\忽略錯誤信息
read only = false \\對備份數據可讀寫
list = false \\不允許查看模塊信息
hosts allow = 192.168.0.0/24 \\允許訪問的客戶機地址
[test] \\定義共享模塊名稱
comment = commit \\模塊註釋信息
path = /test \\定義接收備份數據目錄
read only = yes \\是否爲只讀
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z \\挺不是不在壓縮的文件類型
auth users = rsyncd \\授權賬戶用戶名
secrets file = /etc/rsyncd_users.db \\存放賬戶祕鑰的數據文件位置
配置使用rsync
一、下行同步(客戶端向同步源發起同步)
同步源配置
1.安裝rsync
yum -y install rsync
2.編輯配置文件
vim /etc/rsyncd.conf
3.創建獨立的賬號文件,權限給600,並啓動服務
vim /etc/rsyncd_users.db
wangmazi:123456
chmod 600 /etc/rsyncd_users.db
rsync --daemon
客戶端配置使用
1.安裝rsync
yum -y install rsync
2.創建一個目錄來專門存放備份的東西
mkdir /mybak
3.使用rsync命令進行同步備份以及刪除操作
rsync 選項 原始位置 目標位置
“-r”:表示遞歸整個目錄樹
“-l”:用來備份鏈接文件
常用選項:
-a:歸檔模式,遞歸併保留對象屬性,等同於 -rlptgoD
-v:顯示同步過程的詳細(verbose)信息
-r:遞歸模式,包含目錄以及子目錄的所有文件
-l:對於符號鏈接文件仍然複製爲符號鏈接文件
-p:保留文件的權限標記
-t:保留文件的時間標記
-g:保留文件的屬組標記(僅超級用戶使用)
-o:保留文件的屬主標記(僅超級用戶使用)
-D:保留設備文件及其他特殊文件
-z:在傳輸文件時進行壓縮(compress)
-H:保留硬連接文件
-A:保留ACL屬性信息
--delete:刪除目標位置有而原始位置沒有的文件
--checksum:根據對象的校驗和來決定是否跳過文件
rsync同步的兩種使用方法
用戶名@主機地址::共享模塊
rsync -avz [email protected]::wwwroot /mybak/
rsync://用戶名@主機地址/共享模塊名
rsync -avz rsync://[email protected]/wwwroot /mybak/
同步刪除源位置沒有的文件,而本地還存在的文件
rsync -avz --delete [email protected]::wwwroot /mybak/
4.自動同步操作
之前需要創建一個登錄使用的文件內容爲賬戶密碼(只要密碼就行了),給該文件600的權限
vim /etc/server.pass
123456
chmod 600 /etc/server.pass
編寫週期性計劃:crontab -e
30 22 * * 8 /usr/bin/rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /mybak
二、上行同步(把客戶端發起端裏面的文件同步到同步源裏面)
將rsync工具與inotify機制結合,可以實現觸發式備份(實時上行同步)
1.在發起端下載安裝inotify-tools工具
tar zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make && make install
inotifywait:用於持續監控,實時輸出結果
inotifywatch:用於短期監控,任務完成後再出結果
2.編輯配置文件添加調整inotify的內核參數
vim /etc/rsyncd.conf
gid = nobody
use chroot = yes
address = 192.168.0.101
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.0.0/24
[wwwroot]
path = /var/www/html
comment = Document Root of wwwhtml
read only = no
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = wangmazi
secrets file = /etc/rsyncd_users.db
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
3.測試監控文件變化
inotifywait -m -r -q -e modify,create,move,delete /mybak/
-e:指定要監控哪些事件
-m:持續監控
-r:遞歸整個目錄
-q:簡化輸出信息
4.將rsync工具與inotify機制結合,可以實現觸發式備份(實時上行同步)
編寫腳本實現:vim /root/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD=`inotifywait -mrq -e modify,create,attrib,move,delete /mybak`
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /mybak rsync://[email protected]/wwwroot /var/www/html"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ]
then
$RSYNC_CMD
fi
done
注意: rsync.conf 中read only=no
要把本地文件上行同步寫入同步源的文件夾中給同步源192.168.0.101的目錄 777權限
chmod 777 /var/www/html
運行腳本即可