1. 程式人生 > 實用技巧 >rsync遠端同步

rsync遠端同步


一、配置rsync源伺服器



wKioL1hI9hjhE44SAABYBfOXqj0658.png

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

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

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

[[email protected] ~]# 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.為備份賬戶建立資料檔案

[[email protected] ~]# vim /etc/rsyncd_users.db

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

[[email protected] ~]# chmod 600 /etc/rsyncd_users.db //調整檔案許可權,避免賬號資訊洩露。未調整檔案許可權,會導致認證失敗。


wKioL1hI-ALSggIVAAAErUOiin0351.png

注意:備份使用者

backuper需要對源目錄/var/www/html有相應的讀取許可權。實際上只要other組有讀取許可權,則備份使用者backuper和執行使用者nobody也就有讀取許可權了。


1.啟動rsync服務程式

[[email protected]~]# rsync --daemon //啟用rsync服務

[[email protected]~]# 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):

[[email protected] ~]# 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金鑰對連線

最後,便可以在同步源上執行指令碼檔案,實時監控本伺服器上的檔案變化,並進行備份。





轉載於:https://blog.51cto.com/fengjicheng/1880721