linux實現rsync+sersync實時數據備份

1.概述

rsync(Remote Sync) 是一個Unix/linux系統下的文件同步和傳輸工具

2.端口和運行模式

tcp/873

采用C/S模式(客戶端/服務器模式)

3.特點

  • 可以鏡像保存整個目錄和文件
  • 第一次全量備份(備份全部的文件),之后是增量備份(只備份變化的文件)

4. 數據同步方式

  • 推(push) 本地將數據發送到遠程服務器
  • 拉(pull) 遠程服務器獲取數據到本地

5.rsync命令

  • 基本用法 rsync 選項 源文件位置 目標文件位置

  • 選項

    -a,--archive 歸檔模式,表示以遞歸的方式傳輸文件,并且保持文件屬性,等同于-rlptgoD
    -r,–recursive 對子目錄以遞歸模式處理,即同步所有下面的數據
    -l,--links 表示拷貝鏈接文件
    -p , --perms 表示保持文件原有權限
    -t , --times 表示保持文件原有時間
    -g , --group 表示保持文件原有屬用戶組
    -o , --owner 表示保持文件原有屬主
    -D , --devices 表示塊設備文件信息
    -z , --compress 表示壓縮傳輸
    -H 表示硬連接文件
    -A 保留ACL屬性信息(需配合-p選項)
    -P 顯示傳輸進度
    -u, --update 僅僅進行更新,也就是跳過所有已經存在于目標位置,并且文件時間晚于要備份的文件。(不覆蓋更新的文件)
    --port=PORT 定義rsyncd(daemon)要運行的Port(預設為tpc  873)
    --delete 刪除那些目標位置有而原始位置沒有的文件
    --password-file=FILE 從FILE中得到密碼
    --bwlimit=KBPS 限制I/O帶寬,KBytes /second
    --filter “-filename” 需要過濾的文件
    --exclude=filename :需要過濾的文件
    -v 顯示同步過程的詳細信息
    #常用的-avz
    #補充:如果傳輸的特別大的文件,就不要用z 參數,因為壓縮和解壓比較耗時
    
  • 示例

    #格式1
    rsync  選項  rsync://用戶名@同步源服務器IP:/共享模塊名  目標目錄  
    rsync -avz --delete rsync://backuper@192.168.98.143:/test /test  
    #--delete 是刪除服務端(下面實驗的主機A)沒有的文件
    #格式2
    rsync  選項  用戶名@同步源服務器IP::共享模塊名  目標目錄  
    rsync -avz --delete backuper@192.168.98.143::test /test
    

6.實驗

主機ip 地址
A192.168.98.143
B192.168.98.140
(1).數據同步
  • 在主機A上編寫rcync的配置文件

    vim /etc/rsyncd.confuid = rootgid = rootaddress = 192.168.98.143 #寫的是本機的ip地址否則服務無法啟動use chroot = yesport = 873 #定義端口hosts allow = 192.168.98.0/24 #定義允許訪問的地址max connections = 4pid file = /var/run/rsyncd.pid #進程id文件lock file = /var/run/rsyncd.lock #日志文件log file = /var/log/rsyncd.log #鎖文件motd file = /etc/rsyncd.motd #消息文件[backup] #模塊名path = /test  #備份路徑comment = backup area #描述read only = yes #是否只讀list = yes #是否隱藏模塊列表auth users = b1 #備份所使用的用戶secrets file = /etc/rsync.passwd #校驗文件,包含用戶名和密碼的文件,用戶名是			auth users的值	
    
  • 創建描述文件和校驗文件

    echo "I am backup server" > /etc/rsyncd.motd #創建描述文件
    echo  "b1:123456" >> /etc/rsync.passwd #創建用戶名和密碼文件
    chmod 600 /etc/rsyncd.passwd #設置校驗文件的權限,不設置會報錯
    
  • 開啟服務

    rsync --daemon --config=/etc/rsyncd.conf  #指定配置文件并啟動服務
    ss -anputl | grep 873 #查看服務是否啟動
    systemctl stop firewalld 
    setforce 0
    iptables -F #關閉防火墻
    
  • 主機B測試

    sync -avz --delete b1@192.168.98.143::backup /test  #輸入/etc/rsync.passwd中定義的密碼
    #免密備份
    vim /etc/rsync.passwd #在主機B上創建文件123456 #只寫密碼不寫用戶名,輸入/etc/rsync.passwd中定義的密碼
    chmod 600 /etc/rsync.passwd  #修改文件權限否則會報錯
    sync -avz --delete b1@192.168.98.143::backup /test  --password-file=/etc/rsync.passwd  #指定密碼文件
    
(2).實時數據同步(rsync+sersync)

? 目的:將主機B的數據實時同步到主機A上

  • 修改主機A的rsync的配置文件

    uid = root
    gid = root
    address = 192.168.98.143
    use chroot = yes
    port = 873
    hosts allow = 192.168.98.0/24
    max connections = 4
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock
    log file = /var/log/rsyncd.log
    motd file = /etc/rsyncd.motd[backup]path = /testcomment = backup area read only = false  #在上述實驗的基礎上只修改這里list = yesauth users = b1secrets file = /etc/rsync.passwd
    
  • 主機B安裝sersync

    #使用tar包解壓后直接使用
    tar -xf  sersync2.5.4_64bit_binary_stable_final.tar.gz -C /opt/mv /opt/GNU-Linux-x86 /opt/sersync  #修改文件名cp /opt/sersync/confxml.xml{,.bak}  #備份配置文件
    #修改配置文件vim /opt/sersync/confxml.xml#修改第24-28行<localpath watch="/monitored">  #本地監控目錄<remote ip="192.168.98.143" name="backup"/> #主機A(rsync主機的ip),模塊名<!--<remote ip="192.168.8.39" name="tongbu"/>--><!--<remote ip="192.168.8.40" name="tongbu"/>--></localpath>#修改第31-34行<commonParams params="-artuz"/><auth start="true" users="b1" passwordfile="/etc/rsync.passwd"/>  #users是備份使用的用戶,rsync配置文件中定義的用戶, passwordfile就是rsync的校驗文件,包含用戶名和密碼<userDefinedPort start="false" port="874"/><!-- port=874 --><timeout start="false" time="100"/><!-- timeout=100 --><ssh start="false"/>
    
  • 主機B開啟守護進程同步數據

    #創建校驗文件,修改權限
    echo "123456" > /etc/rsync.passwd  && chmod 600 /etc/rsync.passwd  
    /opt/sersync/sersync2  -d  -r  -o  /opt/sersync/confxml.xml #開啟服務,停止服務使用kill命令
    mkdir /monitored  && echo "hello linux !!!" >> /monitored/1.txt  #更改監聽的目錄查看是否會同步到主機A
    

    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75123.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75123.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75123.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【第30節】MFC編程:ListCtrl控件和TreeCtrl控件

目錄 引言 一、高級控件ListCtrl 二、高級控件TreeCtrl 三、Shell控件 四、CImageList 五、綜合代碼示例 引言 在MFC編程里&#xff0c;高級控件能大幅提升應用程序的交互性與功能性。接下來&#xff0c;咱們會詳細講講ListCtrl和TreeCtrl這兩個高級控件。不僅會介紹它們…

為什么 ThreadLocalMap 的 key 是弱引用 value是強引用

問題一&#xff1a;為什么 ThreadLocalMap 的 key 是弱引用&#xff1f; 【假設 Entry 的 key 是對 ThreadLocal 對象的強引用】&#xff1a;這個 Entry 又持有 ThreadLocal 對象和 value 對象的強引用。如果在其他地方都沒有對這個 ThreadLocla 對象的引用了、然后在使用 Thr…

DeepSeek本地部署(linux)

一、下載并安裝Ollama 1.下載Ollama Ollama官網:Ollama 點擊"Download",會跳轉至下載頁面。 1.1在線下載安裝 可復制此命令到Linux服務器進行在線下載,如下載速度過慢,可選擇離線下載安裝。 curl -fsSL https://ollama.com/install.sh | sh1.2離線下載安裝 …

基于Halcon仿VM流程列表的執行效果

Halcon本身應用需要一定的門檻&#xff0c;但是也可以封裝成類似VM簡單易操作的樣子 上期文章分享的是連線功能&#xff0c;本期分享數據傳參 1&#xff0c;定義通用屬性和方法 public class BaseModel {public HObject HInput { get; set; }//圖像輸入public HObject HOutpu…

打車APP訂單系統邏輯梳理與實現

一、邏輯分析 打車 APP 訂單系統是整個打車業務的核心&#xff0c;負責處理從乘客下單到行程結束的一系列流程&#xff0c;涉及乘客、司機和平臺三方的交互。 乘客端 下單&#xff1a;乘客打開 APP&#xff0c;輸入上車地點、目的地&#xff0c;選擇車型等信息后提交訂單。此時…

雜草YOLO系列數據集4000張

一份開源數據集——雜草YOLO數據集&#xff0c;該數據集適用于農業智能化、植物識別等計算機視覺應用場景。 數據集詳情 ?訓練集&#xff1a;3,664張高清標注圖像?測試集&#xff1a;180張多樣性場景樣本?驗證集&#xff1a;359張嚴格篩選數據 下載鏈接 雜草YOLO數據集分…

算法 | 河馬優化算法原理,公式,應用,算法改進及研究綜述,matlab代碼

以下是關于河馬優化算法(Hippopotamus Optimization Algorithm, HO)的完整綜述,包含原理、公式、應用場景、改進方向及可直接運行的 Matlab 完整代碼。一、算法原理 河馬優化算法(HO)由Amiri等人于2024年提出,是受河馬群體行為啟發的元啟發式算法,其核心基于以下三階段行…

知識就是力量——HELLO GAME WORD!

你好&#xff01;游戲世界&#xff01; 簡介環境配置前期準備好文章介紹創建頭像小功能組件安裝本地中文字庫HSV顏色空間音頻生成空白的音頻 游戲UI開發加載動畫注冊登錄界面UI界面第一版第二版 第一個游戲&#xff08;貪吃蛇&#xff09;第二個游戲&#xff08;俄羅斯方塊&…

Android Activity 的 launchMode 與 Task Stack 管理

Android 中的 android:launchMode 決定了 Activity 在啟動時如何在任務欄中管理它的存在方式。下面我們來結合 Task Stack 管理詳細解釋。 1. android:launchMode 的四種模式 1.1 standard (標準模式, 默認) 啟動方式&#xff1a;每次啟動都會創建一個新實例并壓入欄任務堆中…

2025選擇手機之我見

自從開店之后&#xff0c;沒當有手機召開發布會&#xff0c;我就得去大概看看&#xff0c;了解一下屏幕&#xff0c;充電之類的東西。畢竟跟我的生意息息相關&#xff0c;而且還得研究要不要上新&#xff0c;從我目前賣貨的情況來看&#xff0c;折疊屏不是大眾的選擇&#xff0…

【區塊鏈安全 | 第九篇】基于Heimdall設計的智能合約反編譯項目

文章目錄 背景目的安裝1、安裝 Rust2、克隆 heimdall-dec3、編譯 heimdall-dec4、運行 heimdall-dec 使用說明1、訪問 Web 界面2、輸入合約信息3、查看反編譯結果 實戰演示1、解析普通合約2、解析代理合約 背景 在區塊鏈安全研究中&#xff0c;智能合約的審計和分析至關重要。…

利用 PCI-Express 交換機實現面向未來的推理服務器

在數據中心系統的歷史上&#xff0c;沒有比被 Nvidia 選為其 AI 系統的組件供應商更高的贊譽了。 這就是為什么新興的互連芯片制造商 Astera Labs 感到十分高興&#xff0c;因為該公司正在 PCI-Express 交換機、PCI-Express 重定時器和 CXL 內存控制器方面與 Broadcom 和 Marv…

智能交通預警桿:守護道路安全的科技先鋒

在城市化進程加速以及機動車保有量持續增長的背景下&#xff0c;道路交通安全與擁堵問題漸趨嚴峻。智能交通預警桿應時而生&#xff0c;其集成多種高科技功能&#xff0c;正逐步成為現代城市交通管理中至關重要的智能裝備&#xff0c;對于提升交通效率、保障出行安全發揮著關鍵…

flink 基站與服務器長連接,每次連接和斷開都會上報數據,統計過去一小時每個基站斷開次數和時長

模擬生成數據 CREATE TABLE ods_station_log (base_station_id int, -- 基站IDevent_type int, -- 事件類型: connect/disconnectevent_time TIMESTAMP_LTZ(3), -- 事件時間WATERMARK FOR event_time AS event_time - INTERVAL 5 SECOND -- 允許5秒亂序 ) WITH …

自定義一些C語言的字符串函數

一、代碼如下 (一)十六進制字符串轉十進制整數 #include<stdio.h> // 把一個十六進制字符轉成十進制整數 int hexToInt(char hexs[]){ int index; int k 0; for(k 0; ; k) { if(hexs[k] \0) { index k; break; …

核函數(機器學習深度學習)

一、核函數的基本概念 核函數&#xff08;Kernel Function&#xff09; 是機器學習中處理非線性問題的核心工具&#xff0c;通過隱式映射將數據從原始空間轉換到高維特征空間&#xff0c;從而在高維空間中實現線性可分或線性建模。其數學本質是計算兩個樣本在高維空間中的內積…

微服務架構中的精妙設計:服務注冊/服務發現-Eureka

一.使用注冊中心背景 1.1服務遠程調用問題 服務之間遠程調?時, 我們的URL是寫死的 String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 缺點&#xff1a; 當更換機器, 或者新增機器時, 這個URL就需要跟著變更, 就需要去通知所有的相關服…

極速版:棧的內存/局部變量表/堆的內存細分

1. 棧的存儲 每個線程都有自己的棧&#xff0c;棧中數據以棧幀&#xff08;Stack Frame&#xff09;為基本單位 線程上正在執行的每個方法都各自對應一個棧楨&#xff08;Stack Frame&#xff09; 棧楨是一個內存區塊&#xff0c;是一個數據集&#xff0c;維系著方法執行過程…

【操作系統】內存泄漏 vs 內存碎片

【操作系統】內存泄漏 vs 內存碎片 內存泄漏&#xff08;Memory Leak&#xff09; vs 內存碎片&#xff08;Memory Fragmentation&#xff09;1. 內存泄漏&#xff08;Memory Leak&#xff09;2. 內存碎片&#xff08;Memory Fragmentation&#xff09;3. 內存泄漏 vs 內存碎片…

力扣HOT100之矩陣:73. 矩陣置零

這道題我沒有想到什么好的辦法&#xff0c;直接暴力AC了&#xff0c;直接遍歷兩次矩陣&#xff0c;第一次遍歷用兩個向量分別記錄出現0的行數和列數&#xff0c;第二次遍歷就判斷當前的元素的行數或者列數是否出現在之前的兩個向量中&#xff0c;若出現了就直接置零&#xff0c…