Rsync數據同步備份

来源:https://www.cnblogs.com/chenjiangfeng/archive/2019/04/08/10671601.html
-Advertisement-
Play Games

1、 Rsync 基礎概述 Rsync是一款開源的備份工具,可以在不同主機之間進行同步,可實現全量備份和增量備份,因此非常適合用於架構集中式備份或異地備份等應用。 Rsync官方地址:https://rsync.samba.org/ Rsync監聽埠:873 Rsync運行模式:C/S Rsync ...


1、 Rsync 基礎概述

Rsync是一款開源的備份工具,可以在不同主機之間進行同步,可實現全量備份和增量備份,因此非常適合用於架構集中式備份或異地備份等應用。

Rsync官方地址:https://rsync.samba.org/

Rsync監聽埠:873

Rsync運行模式:C/S

Rsync常見的兩種備份方式

  1. 完全備份

  2. 增量備份

Rsync優點:

1. 支持增量備份,第一次全量備份,第二次增量備份:邊複製,邊比較,邊統計,傳輸效率很高。

2. 數據集中備份,客戶端可以推送數據至服務端,也可以從服務端獲取數據,以客戶端為參照物。保持文件屬性,符號鏈接,硬鏈接,許可權,時間等。

3. 安全方式傳輸,rsync本身不對不對數據加密,使用SSH作為傳輸埠。

4. 指定排除文件,排除無需同步的文件或目錄。

5. 進程方式同步,rsync運行在C/S架構,通過進程方式傳輸文件或數據。

Rsync缺點:

1. 大量小文件同步會比較慢,需要比對較長時間,有可能會造成rsync進程停止。

解決思路:將小文件進行打包,然後在同步,減少比對時間,傳輸效率提高。

2. 同步大文件會出現中斷情況,而且長時間同步會造成網路資源被耗盡。

解決思路:配置限速同步,未同步完之前修改為隱藏文件,同步完成後修改為正常文件。

解析

假設客戶端上有 file1 file2 file3文件,服務端上有file1文件,現要將客戶端上的數據備份至服務端

 

2、 Rsync 應用場景

1. 推:所有主機推送本地數據至Rsync備份伺服器,會導致數據同步緩慢(適合少量數據備份)

 

2.拉:Rsync備份伺服器拉取所有主機上的數據,會導致備份伺服器開銷過大

 

3.大量伺服器備份場景

 

4.異地備份場景

 

3、 Rsync 命令講解

Rysnc命令格式

rsync  [OPTION...]  SRC...  [USER@]HOST::DEST

rsync  [OPTION...]  SRC...  rsync:#[USER@]HOST[:PORT]/DEST

Rsync常⽤選項:

參數選項

選項說明

-a

歸檔模式傳輸,等於 -tropgDl

-v

詳細模式輸出,列印速率,文件數量等

-z

傳輸時進行壓縮以提高效率

-r

遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸

-t

保持文件時間信息

-o

保持文件屬主信息

-p

保持文件許可權

-g

保持文件屬組信息

-l

保留軟鏈接

-P

顯示同步的過程及傳輸時的進度等信息

-D

保持設備文件信息

-L

保留軟鏈接指向的目標文件

-e

使用的通道協議,指定替代rsh的shell程式

--exclude=PATTERN

指定排除不需要傳輸的文件模式

--exclude-from=file

文件名所在的目錄文件

--bwlimit=100

限速傳輸

--partial

斷點續傳

--delete

讓目標目錄和源目錄數據保持一致

 

Rsync大致使用三種主要的數據傳輸方式

  1. 本地傳輸

  2. 遠程通道傳輸

  3. 守護進程傳輸

4、 Rsync 傳輸模式

1. 本地傳輸 local

語法:

Access via remote shell:

Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

命令 選項 源文件 目標文件

實例:

[root@rsync-servre ~]# rsync /etc/passwd /tmp/

# 命令

2. 遠程通道傳輸 remote shell

語法:拉取遠端數據⾄本地(下載)

Access via remote shell:遠程傳輸

Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST](下載)

Push: rsync [OPTION...] SRC... [USER@]HOST:DEST(上傳)

遠程方式存在的缺陷:

    1. 需要使用系統用戶(不安全)

    2. 使用普通用戶(許可權不足)

    3. 需要走SSH協議

3. 守護進程傳輸 daemon(服務,持續後臺運行)

語法:

Access via rsync daemon:守護進程方式傳輸

Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST](下載)

Push: rsync [OPTION...] SRC... [USER@]HOST::DEST(上傳)

一、項目需求:

已知3台伺服器主機名分別為web、nfs、rsync,主機信息見下表:       

伺服器角色 外網IP(NAT) 內網IP(LAN) 主機名
Rsync伺服器 ens33:192.168.1.232 ens37:172.16.30.30 rsync_server
web伺服器 ens33:192.168.1.233 ens37:172.16.30.20 web_server
NFS伺服器 ens33:192.168.1.234 ens37:172.16.30.10 nfs_server

具體要求如下:

每天晚上01點整在Web伺服器上打包備份系統配置文件、日誌文件、其他目錄並通過rsync命令推送備份伺服器backup上備份保留,所有伺服器在本地按日期打包,然後再推到備份伺服器backup上。

  1. 所有伺服器的備份目錄必須都為/backup。

  2. 備份的系統配置文件包括但不限於;

  3. Web伺服器本地保留最近7天的數據,避免浪費磁碟空間

  4. Rsync備份伺服器上,其它要保留6個月的數據副本。

  5. 客戶端伺服器推送數據,以主機名_IP地址_當前時間作為目錄,所有的備份數據存放至該目錄下rsync_server_172.16.30.30_2019-04-06/

  6. 確保備份的數據完整,在備份伺服器上對備份的數據進行檢查,把備份的成功及失敗結果信息發送到系統管理員郵箱中。

  7. 真實工作中除了伺服器之間備份,可能還會需要異地備份,這個地方請大家思考如何異地備份。

二、需求分析:

1、客戶端需求:

1. 客戶端每天凌晨1點在伺服器本地打包備份(系統配置文件、日誌文件、其他目錄、應用配置等文件);

2. 客戶端備份的數據必須打包存放在主機名_IP地址_當前時間命名的目錄中;

3. 客戶端對打包數據進行添加標記信息;

4. 客戶端最後推送到本地已打包好的備份文件至Rsync備份伺服器上;

5. 客戶端伺服器本地保留最近7天的數據,避免浪費磁碟空間。

2、服務端需求:

1. 服務端部署配置郵件服務;

2. 服務端部署rsync服務,用於接收客戶端推送過來的備份數據;

3. 服務端需要每天校驗客戶端推送過來數據的完整性;

4. 服務端需要每天校驗的結果以郵件的形式通知給管理員;

5. 服務端本地僅僅保留180天備份數據,其餘的全部刪除;

註意:所有伺服器的備份目錄必須都為/backup

三、操作步驟:

1、服務端配置

1. 同步伺服器時間

[root@rsync_server ~]# ntpdate ntp.aliyun.com

2. 配置郵件伺服器

2.1 安裝郵件軟體

[root@rsync_server ~]# yum -y install mailx

2.2 配置郵箱發件伺服器

[root@rsync_server ~]# vim /etc/mail.rc

set [email protected]

set smtp=smtps://smtp.qq.com:465

set [email protected]

set smtp-auth-password=dkmcmgeovuebbe

set smtp-auth=login

set ssl-verify=ignore

set nss-config-dir=/etc/pki/nssdb/

1.3 發送郵件測試發件伺服器是否配置成功

[root@rsync_server ~]# mail -s "123" [email protected] </etc/hosts

1.4 打開郵箱查看是否收到郵件

 

3. 安裝rsync軟體

[root@rsync_server ~]# yum -y install rsync

4. 配置rsync服務

##rsyncd.conf start##
uid = rsync                             
gid = rsync                             
port = 873                              
use chroot = no                         
max connections = 2000                  
timeout = 600                           
pid file = /var/run/rsyncd.pid          
lock file = /var/run/rsync.lock         
log file = /var/log/rsyncd.log          
ignore errors                           
read only = false                       
list = false                            
address = 172.16.30.30                  
hosts allow = 172.16.30.0/24            
hosts deny = 0.0.0.0/32                 
auth users = rsync_backup               
secrets file = /etc/rsync.password      
                                        
[backup]                                
path = /backup                          
comment = rsync server backup  

5. 創建rsync用戶不創建家目錄,不允許其登陸

[root@rsync_server ~]# useradd -M -s /sbin/nologin rsync

[root@rsync_server ~]# id rsync

6. 創建備份目錄(儘可能磁碟空間足夠大),授權rsync用戶為屬組

[root@rsync_server ~]# mkdir /backup

[root@rsync_server ~]# chown rsync:rsync /backup/

[root@rsync_server ~]# ll / |grep backup

7. 創建虛擬用戶和密碼,並賦予600許可權

[root@rsync_server ~]# echo "rsync_backup:123" >> /etc/rsync.password

[root@rsync_server ~]# chmod 600 /etc/rsync.password

[root@rsync_server ~]# ll /etc/ |grep rsync.password

8. 啟動服務,並加入開機自啟

[root@rsync_server ~]# systemctl start rsyncd

[root@rsync_server ~]# systemctl enable rsyncd

[root@rsync_server ~]# systemctl status rsyncd

9. 查看監聽埠是否正常運行

[root@rsync_server ~]# netstat -lntp |grep rsync

10. 編寫服務端腳本

[root@rsync_server ~]# vim /server/shell/server_rsync.sh

#!/bin/bash

#定義全局變數信息

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#定義本地變數信息

Path=/backup

Date=$(date +%F)

#查找flag文件,並對該文件進行校驗,校驗完畢的結果輸出到MD5_result_時間

find $Path/*_${Date} -type f -name "flag_${Date}"|xargs md5sum -c >$Path/MD5_result_${Date}

#檢查校驗輸出的文件是否為空

if test -s $Path/MD5_result_${Date}; then

#如果不為空則把校驗後的結果發送郵件給管理員

mail -s "Rsync backup ${Date}" [email protected] <$Path/MD5_result_${Date}

#如果不為空則給管理員發送校驗文件為空

else

echo "校驗文件輸出文件為空,請您儘快處理" |mail -s "校驗失敗" [email protected]

fi

#刪除超過七天的校驗MD5_result文件

find $Path/ -type f -name "MD5_result*" -mtime +7 |xargs rm -f

#刪除超過180天的備份數據

find $Path/ -type d -mtime +180 |xargs rm -rf

11. 添加到定時計劃任務

[root@rsync_server ~]# crontab -e

      30 6 * * * /usr/bin/sh /server/shell/server_rsync.sh

二、客戶端配置

1. 同步伺服器時間

[root@nfs ~]# ntpdate ntp.aliyun.com

2. 安裝rsync軟體

[root@nfs ~]# yum -y install rsync

3. 編寫腳本

[root@nfs ~] vim rsync_crond_backup.sh

#!/bin/bash

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#定義變數信息

Host=$(hostname)

Addr=$(ifconfig ens37 |awk 'NR==2{print $2}')

Date=$(date +%F)

Dest=${Host}_${Addr}_${Date}

Path=/backup

#創建備份目錄

mkdir -p $Path/$Dest

#備份對應的文件

cd / && \

/usr/bin/tar -czf $Path/$Dest/system_$Date.tar.gz etc/fstab etc/rsyncd.conf &&\

/usr/bin/tar -czf $Path/$Dest/log_$Date.tar.gz var/log/messages var/log/secure &&\

#生成MD5驗證信息

md5sum $Path/$Dest/*.tar.gz > $Path/$Dest/flag_$Date &&\

#推送本地數據到rsync服務端

export RSYNC_PASSWORD=1

rsync -az $Path/ [email protected]::backup &&\

#配置本地保留7天數據

find $Path/ -type d -mtime +7|xargs rm -rf

4. 配置定時計劃任務

[root@nfs ~]# crontab -e

10 1 * * * /usr/bin/sh /root/rsync_crond_backup.sh

 web 客戶端配置與NFS客戶端配置相同,唯一不同就是你需要備份的目錄是什麼。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 先說BUG,最近要做項目需要樹莓派和陀螺儀,資金充足的話肯定是買一個硬體卡爾曼濾波的感測器類似JY901模塊,資金不足的就買MPU6050。 網上關於MPU6050在樹莓派上的代碼還能用,關於JY901的代碼真的是千奇百怪,而且複製現象特別嚴重,有很多系統本身有問題,導致很多像我一樣的新手在上面浪費 ...
  • 1. 主機規劃 Targeting Minions文檔 另請參見:自動化運維神器之saltstack (三)節點組及複合匹配器 註意事項 修改了master或者minion的配置文件,那麼必須重啟對應的服務。 2. 目標指定方式 Letter Match Type Example Alt Delim ...
  • 本文主要介紹一下阿裡雲CentOS7下如何對MySql 8.0資料庫進行自動備份,並使用.NET Core 將備份文件上傳至七牛雲存儲上,並對整個過程所踩的坑加以記錄. 環境、工具、準備工作 伺服器:阿裡雲64位CentOS 7.4.1708版本;並安裝MySql 8.0 資料庫(如何安裝點擊) 客 ...
  • Windows 評估和部署工具包 (Windows ADK) 具有自定義大規模部署的 Windows 映像以及測試系統、添加的組件和在該系統上運行的應用程式的質量和性能所需的工具。 Windows ADK 包括:用於評估系統或組件的質量和性能的 Windows 評估工具包和 Windows Perf ...
  • 想學會如何在STM8上使用ADC這個功能,我們先得瞭解單片機中ADC究竟是什麼。 ADC是模擬信號轉成數值信號,單片機只能識別TTL電平,其實就是 1 或者 0 ,但是如果我們給它一個3.3V電壓,單片機就無法識別,,若想使用單片機讀取出來得時候,它必須將模擬量變成數字量。 瞭解完後,我們就開始講解 ...
  • [TOC]     1. Linux啟動過程 Linux的啟動過程是在執行多級初始化過程中啟動一個Linux的安裝,它在許多方面類似於BSD和其他Unix風格的引導過程,從中衍生出來。   引導Linux安裝設計多個階段和軟體組成,包括固件初始化,引導載入程式的執行,L ...
  • 必要瞭解函數的功能和使用場景: fflush, setbuf, setvbuf 瞭解的操作: setbuf(stdout,NULL); // 關閉輸出緩衝區; 保持更新,轉載請註明出處。 ...
  • 現狀描述與需求描述 最近梳理系統功能的時候發現現在每個月處理完數據之後,需要給別的系統傳送批介面文件,介面文件的內容是來自於Oracle數據表中的數據。我每次都需要手工執行一下存儲過程,讓數據從正式表中插入到介面表中,然後再藉助plsql工具軟體sqlplus的spool工具導出介面文件,然後把導出 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...