使用rsync同步目錄

来源:http://www.cnblogs.com/MikeZhang/archive/2016/08/18/rsyncExample_20160818.html
-Advertisement-
Play Games

本文描述了linux下使用rsync單向同步兩個機器目錄的問題。 使用rsync同步後可以保持目錄的一致性(含刪除操作)。 數據同步方式 從主機拉數據 備機上啟動的流程 同步命令: 參數說明: -a 參數,相當於-rlptgoD(-r 是遞歸 -l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件 ...


本文描述了linux下使用rsync單向同步兩個機器目錄的問題。 使用rsync同步後可以保持目錄的一致性(含刪除操作)。

數據同步方式

從主機拉數據

備機上啟動的流程

同步命令:

rsync -avzP --delete root@{remoteHost}:{remoteDir} {localDir}

參數說明:

-a 參數,相當於-rlptgoD(-r 是遞歸 -l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有許可權;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當於塊設備文件);
-z 傳輸時壓縮;
-P 傳輸進度;
-v 傳輸時的進度等信息;

示例:

rsync -avzP --delete root@192.168.1.100:/tmp/rtest1 /tmp/

向備機推數據

主機上啟動的流程

同步命令:

rsync -avzP --delete {localDir} root@{remoteHost}:{remoteDir}

示例:

rsync -avzP --delete /tmp/rtest1 root@192.168.1.101:/tmp/

自動同步配置

描述同步時不輸入密碼的配置的方法。

使用ssh key

該方法可以直接使用rsync命令進行同步,同步過程中無需輸入密碼。

  • 在主機上產生ssh key :

    ssh-keygen -t rsa

  • 在備機上加入pubkey

    ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

    或者手動添加:

    在主機上執行以下命令獲取pubkey:

    cat ~/.ssh/id_rsa.pub
    

    在備機上加入key內容:

    vi ~/.ssh/authorized_keys

使用pexpect自動輸入密碼

示例代碼如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pexpect
import time
import traceback

def doRsync(user,passwd,ip,srcDir,dstDir,timeout=3600):
    cmd = "rsync -azPq --delete {srcDir} {rUser}@{rHost}:{dstDir}".format(
        rUser = user,rHost=ip,srcDir=srcDir,dstDir=dstDir
    )
    try:
        ssh = pexpect.spawn(cmd,timeout=timeout)
        print cmd
        i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5)
        if i == 0 :
            ssh.sendline(passwd)
        elif i == 1:
            ssh.sendline('yes')
            ssh.expect('password: ')
            ssh.sendline(passwd)
        ssh.read()
        ssh.close()
    except :
        #print traceback.format_exc()
        pass

if __name__ == '__main__':
    doRsync("root","123456","192.168.1.101","/tmp/rtest1","/tmp")

上面是使用python實現的代碼,大家可根據情況用其它語言實現該功能。

其它

1、rsync在執行過程中被kill掉會怎麼樣;

http://unix.stackexchange.com/questions/5959/how-can-i-pause-resume-rsync

It is safe to kill an rsync process and run the whole thing again; it will continue where it left off. It may be a little inefficient, particularly if you haven't passed --partial (included in -P), because rsync will check all files again and process the file it was interrupted on from scratch.

rsync被kill掉是安全的,下次啟動時還可以正常工作。

2、rsync不能指定時間段;

1)該問題可以通過kill來解決
2)或者使用pexpect的timeout參數來控制
3)可以先通過find查找過濾出文件夾的名字,然後使用rsync進行同步 這個可以根據現有業務的特征進行,比如:

find /tmp -name '*' -newermt '2016-03-08' ! -newermt '2016-03-20'

3、rsync在寫文件過程中同步(比如錄音過程中執行rsync操作)

經測試,rsync會同步部分文件內容,文件寫入完成後再執行rsync會保持文件的一致

4、當文件數量達到百萬級以上時,rsync同步時掃描改變的文件非常耗時

本文github地址:

https://github.com/mike-zhang/mikeBlogEssays/blob/master/2016/20160818_使用rsync同步目錄.md

歡迎補充


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

-Advertisement-
Play Games
更多相關文章
  • 1.分詞 全文檢索必須要分詞,所謂分詞就是把一句話切分成一個個單獨的詞。分詞有很多演算法,比如自然分詞、n-gram分詞、字典分詞等等。對中文來說沒有自然分隔符,一般採用字典分詞,再加上對人名、地名的特殊處理,提高分詞的準確性。 我們使用ik分片語件,ik有兩種分詞策略:smart策略、max wor ...
  • 前言:事先說明:在實際應用中這種做法設計需要各位讀者自己設計,本文只提供一種思想。準備工作:安裝後本地數redis伺服器,使用mysql資料庫,事先插入1000萬條數據,可以參考我之前的文章插入數據,這裡不再細說。我大概的做法是這樣的,編碼使用多線程訪問我的資料庫,在訪問資料庫前先訪問redis緩存 ...
  • grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; flush privileges; 以上兩句話的意思是:1、帶著賦予許可權的權利,賦予他人許可權,可訪問任何資料庫任何表,登陸賬號為root ...
  • 第一篇:屌炸天實戰 MySQL 系列教程(一) 生產標準線上環境安裝配置案例及棘手問題解決 第二篇:屌炸天實戰 MySQL 系列教程(二) 史上最屌、你不知道的資料庫操作 第三篇:屌炸天實戰 MySQL 系列教程(三)你不知道的 視圖、觸發器、存儲過程、函數、事物、語句 第四篇:屌炸天實戰 MySQ ...
  • 摘自:http://www.apelearn.com/bbs/thread-6658-1-1.html passwd -l 鎖定賬戶,在密碼字元串的前面加上!。 passwd -u是去掉密碼字元串前面的!。 usermod -L 預設只是鎖定密碼,在密碼字元串前面加!。 usermod -U預設只是 ...
  • 我用的linux操作系統類別是CentOS-6.5 首先在虛擬機選項的設置里設置CD/DVD選項其中勾選Connect at power on選項 在連接中選擇Use ISO image file:即選擇鏡像文件的目錄地址 然後在/root目錄下輸入命令:mount /mnt/cdrom 輸出錯誤為 ...
  • 摘自:http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=7595&extra=page%3D1%26filter%3Dtypeid%26typeid%3D36 1. /etc/passwd由 : 分隔成7個欄位(1) 用戶名 規則:大小 ...
  • 近期我的電腦總是不定時的彈出同城色情交友網站,一彈就是2個頁面,頁面彈出後,發起調用瀏覽器彈出色情網站的主程式自動退出,導致無法查明到底是哪個應用程式發起的彈出頁面視窗,我乾IT工作十多年,一時間認為我的電腦中毒了 ,通過PChunter,Powertools等工具卻沒有發現任何中毒跡象,也沒有異常 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...