Rsync遠程同步配置筆記

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

運行腳本即可

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章