rsync遠程同步


一、配置rsync源服務器



   wKioL1hI9hjhE44SAABYBfOXqj0658.png

在遠程同步任務中,負責發起rsync同步操作的客戶機稱爲發起端,而負責響應來自客戶機的rsync同步操作的服務器稱爲同步源。在同步過程中,同步源負責提供文檔的原始位置,發起端應對該位置具有讀取權限。

 

1.建立/etc/rsyncd.conf配置文件(同步源中)

該配置文件需要自行建立,下面將以原目錄/var/www/html、備份賬號backuper爲例,介紹其配置方法。

 

[root@localhost ~]# vim /etc/rsyncd.conf

uid = nobody

gid = nobody

use chroot = yes                                     //禁錮在原目錄

address = 192.168.1.2                                //監聽地址

port 873                                             //監聽端口

log file = /var/log/rsyncd.log                       //日誌文件位置

pid file = /var/run/rsyncd.pid                       //存放進程ID的文件位置

hosts allow = 192.168.1.0/24                         //允許訪問的客戶機地址

[wwwroot]                                            //共享模塊名稱

path = /var/www/html                             //源目錄的實際路徑

comment = document root of www.benet.com

read only = yes                                  //僅允許以只讀方式做同步

dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z //同步時不再進行壓縮的文件類型

auth users = backuper                            //授權賬戶

secrets file = /etc/rsyncd_users.db              //存放賬戶的數據文件


注意:同步可以採用匿名方式。只需將auth userssecrets file配置記錄去掉即可。


2.爲備份賬戶創建數據文件

[root@localhost ~]# vim /etc/rsyncd_users.db

backuper:pwd123                                       //無須建立同名系統用戶

[root@localhost ~]# chmod 600 /etc/rsyncd_users.db    //調整文件權限,避免賬號信息泄露。


wKioL1hI-ALSggIVAAAErUOiin0351.png

注意:備份用戶backuper需要對源目錄/var/www/html有相應的讀取權限。實際上只要other組有讀取權限,則備份用戶backuper和運行用戶nobody也就有讀取權限了。


1.啓動rsync服務程序

[root@localhost~]# rsync --daemon                                  //啓用rsync服務

[root@localhost~]# iptables -I INPUT -p tcp --dport 873 -j ACCEPT  //873端口開例外


wKiom1hI-AOQRJbcAAAFO2p6AYs836.png


如果需要結束rsync進程,可以執行:kill $(cat /var/run/rsyncd.pid)

 

二、使用rsync備份工具(在rsync客戶機,發起端)

1.rsync命令的基本用法

命令格式:rsync  [選項]  原始位置  目標位置

常用選項:-r:遞歸模式,包含目錄及子目錄中的所有文件

  -l:對於符號鏈接文件任然複製爲符號鏈接文件

  -v:顯示同步過程的詳細信息

  -a:歸檔模式,保留文件的權限、屬性等信息,等同於-rlptgoD

  -z:在傳輸文件時進行壓縮

  -p:保留文件的權限標記

  -t:保留文件的時間標記

  -g:保留文件的屬組標記(僅超級用戶使用)

  -o:保留文件的屬主標記(僅超級用戶使用)

  -H:保留硬鏈接文件

  -A:保留ACL屬性信息

  -D:保留設備文件及其他特殊文件

  --delete:刪除目標位置有而原始位置沒有的文件

  --checksum:根據校驗和(而不是文件大小、修改時間)來決定是否跳過文件

配置源的表示方法:  

  用戶名@主機地址::共享模塊名

或者      rsync://用戶名@主機地址/共享模塊名

 

注意:在本地使用rsync命令相當於cp命令


2.rsync備份操作

wKioL1hI-AOBbeMiAAANz7Wcf1U650.png

在發起端上發起遠程同步


wKiom1hI-APxM00qAAADW80x3PM479.png

確認同步結果


wKiom1hI-ASgej6uAAAT8Z-1FwI380.png

加上選項--delete選項,會在目標位置中刪除原始位置沒有的文件。


可以結合crond服務來完成定期同步:

wKioL1hI-ASADa1oAAACmBc3diM487.png

wKiom1hI-ASRjIVzAAABStWuePA175.png

wKioL1hI-AWhrtIMAAAChwe1yMY896.png

創建密碼文件


wKioL1hI-AWTxgkaAAABqzr1y3Y860.png

wKiom1hI-AXitJX8AAAFZRWduAo387.png

wKioL1hI-QvQpizhAAADEox6Ebs091.png

rsync命令指定密碼文件,可以在同步過程中不用再輸入密碼。


三、配置rsync+inotify實時同步

rsync工具與inotify機制相結合,可以實現觸發式備份(實時同步),只要原始位置的文檔發生變化,則立即啓動增量備份操作。

這裏將在同步源上進行實時監控,如果有文件變動,便進行遠程同步,將文件備份到客戶機上。

注意:實現實時同步需要使用SSH祕鑰對的方式驗證身份

 

1.調整inotify內核參數

linux內核中,默認的inotify機制提供了三個調控參數:

max_queued_events             //表示監控事件隊列(16384

max_user_instances            //最多監控實例數(128

max_user_watches              //每個實例最多監控文件數(8192


wKiom1hI-QyQyeR4AAACZkr5E6o776.png

wKioL1hI-Qzg6Z9eAAAEnyqnvuk879.png

wKiom1hI-Qzz1wX3AAABwPN7Pi0368.png

當要監控的目錄、文件數量較多時,建議加大這三個參數值。


2.安裝inotify-tools

wKioL1hI-QzivC83AAAG3ydzNPg894.png

inotify-tools軟件包可以提供inotifywaitinotifywatch輔助工具程序,用來監控、彙總改動情況。

inotifywait命令格式(監控/var/www/html):

[root@localhost ~]# inotifywait -mrq -e create,delete,modify,move /var/www/html

選項:-m表示持續監控;

  -r表示遞歸整個目錄;

  -q表示簡化輸出信息;

  -e表示用來指定要監控那些事件

 

3.編寫觸發式同步腳本

wKiom1hI-Q2yQNyTAAACj4qXDY8423.png

wKioL1hI-Q2CaFJWAAAQ1OsxTs4382.png


4.配置SSH密鑰對驗證

wKiom1hI-Q3gazubAAAB_y4WXQc030.png

在同步源上生成公鑰文件


wKioL1hI-Q3wTDsNAAAfAkbZdcs319.png

將公鑰文件傳到發起端服務器,rput用戶是發起端的用戶,-i指定公鑰文件。


wKiom1hI-Q6yzqeAAAACndLl0pk489.png

wKioL1hI-c_j_R30AAAB99sE7tY231.png

wKioL1hI-c_Dc7PEAAAEjAysKVo669.png

在發起端服務器上,修改配置文件/etc/ssh/sshd_conf,允許使用rput連接,並開啓密鑰對驗證。


wKiom1hI-dCRZ-kQAAAFhaKJRqY167.png

測試SSH密鑰對連接

 

最後,便可以在同步源上執行腳本文件,實時監控本服務器上的文件變化,並進行備份。





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