rsync

来源:http://www.cnblogs.com/george-guo/archive/2017/10/23/7718515.html
-Advertisement-
Play Games

一、簡介 1、認識 Rsync(remote synchronize)是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件。Rsync使用所謂的“Rsync演算法”來使本地和遠 程兩個主機之間的文件達到同步,這個演算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快 Rsy ...


一、簡介 1、認識 Rsync(remote synchronize)是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件。Rsync使用所謂的“Rsync演算法”來使本地和遠 程兩個主機之間的文件達到同步,這個演算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快 Rsync支持大多數的類Unix系統,無論是Linux、Solaris還是BSD上都經過了良好的測試 此外,它在windows平臺下也有相應的版本,如cwRsync和Sync2NAS等工具 2、原理 Rsync本來是用於替代rcp的一個工具,目前由rsync.samba.org維護,所以rsync.conf文件的格式類似於samba的主配 置文件;Rsync可以通過rsh或ssh使用,也能以daemon模式去運行 在以daemon方式運行時Rsync server會打開一個873 埠,等待客戶端去連接。連接時,Rsync server會檢查口令是否相符,若通過口令查核,則可以開始進行文件傳輸。第一次連通完成時,會把整份文件傳輸一次,以後則就只需進行增量備份 3、特點 1、可以鏡像保存整個目錄樹和文件系統; 2、可以很容易做到保持原來文件的許可權、時間、軟硬鏈接等; 3、無須特殊許可權即可安裝; 4、優化的流程,文件傳輸效率高; 5、可以使用rsh、ssh等方式來傳輸文件,當然也可以通過直接的socket連接; 6、支持匿名傳輸   二、ssh模式 1、本地間同步 環境: 172.16.22.12 # mkdir src # touch src/{1,2,3,4} # mkdir dest # rsync -av src/ dest/ --將 src 目錄里的所有的文件同步至 dest 目錄(不包含src本身) # rsync -av src dest/ --將 src 目錄包括自己整個同步至 dest 目錄 # rsync -avR src/ dest/ --即使 src 後面接有 / ,效果同上 2、區域網間同步 環境: 172.16.22.11 # mkdir src # touch src/{a,b,c,d} # mkdir dest # rsync -av 172.16.22.12:/data/test/src/ dest/ --遠程同步至本地,需輸入root密碼 # rsync -av src/ 172.16.22.12:/data/test/dest/ --本地文件同步至遠程 # rsync -av src 172.16.22.12:/data/test/dest/ --整個目錄同步過去 # rm -rf src/d --刪除一個文件 d # rsync -av --delete src/ 172.16.22.12:/data/test/dest/ --delete,從目標目錄裡面刪除無關的文件 3、區域網指定用戶同步 --172.16.22.12 # useradd george # passwd george # mkdir /home/george/test # touch /home/george/test/g{1,2,3,4} --172.16.22.11 # rsync -av src '-e ssh -l george' 172.16.22.12:/home/george --本地同步至遠程 # rsync -av 172.16.22.12:/home/george/test/g* '-e ssh -l george -p 22' dest/   三、daemon模式 環境:192.168.22.11 1、服務啟動方式 1.1、對於負荷較重的 rsync 伺服器應該使用獨立運行方式 # yum install rsync xinetd --服務安裝 # /usr/bin/rsync --daemon 1.2、對於負荷較輕的 rsync 伺服器可以使用 xinetd 運行方式 # yum install rsync xinetd --服務安裝 # vim /etc/xinetd.d/rsync --配置托管服務,將下項改為 no disable = no # /etc/init.d/xinetd start --啟動托管服務 xinetd # chkconfig rsync on # netstat -ntpl | grep 873 --查看服務是否啟動   2、配置詳解 兩種 rsync 服務運行方式都需要配置 rsyncd.conf,其格式類似於 samba 的主配置文件 全局參數 在全局參數部分也可以定義模塊參數,這時該參數的值就是所有模塊的預設值 address --在獨立運行時,用於指定的伺服器運行的 IP 地址;由 xinetd 運行時將忽略此參數,使用命令行上的 –address 選項替代。預設本地所有IP port --指定 rsync 守護進程監聽的埠號。 由 xinetd 運行時將忽略此參數,使用命令行上的 –port 選項替代。預設 873 motd file --指定一個消息文件,當客戶連接伺服器時該文件的內容顯示給客戶 pid file --rsync 的守護進程將其 PID 寫入指定的文件 log file --指定 rsync 守護進程的日誌文件,而不將日誌發送給 syslog syslog facility --指定 rsync 發送日誌消息給 syslog 時的消息級別 socket options --指定自定義 TCP 選項 lockfile --指定rsync的鎖文件存放路徑 timeout = 600 --超時時間 模塊參數 模塊參數主要用於定義 rsync 伺服器哪個目錄要被同步。模塊聲明的格式必須為 [module] 形式,這個名字就是在 rsync 客戶端看到的名字,類似於 Samba 伺服器提供的共用名。而伺服器真正同步的數據是通過 path 來指定的 基本模塊參數 path --指定當前模塊在 rsync 伺服器上的同步路徑,該參數是必須指定的 comment --給模塊指定一個描述,該描述連同模塊名在客戶連接得到模塊列表時顯示給客戶 模塊控制參數 use chroot = --預設為 true,在傳輸文件之前首先 chroot 到 path 參數所指定的目錄下;優點,安全;缺點,需要 root 許可權,不能備份指向 path 外部的符號連接所指向的目錄文件 uid = --指定該模塊以指定的 UID 傳輸文件;預設nobody gid = --指定該模塊以指定的 GID 傳輸文件;預設nobody max connections --最大併發連接數,0為不限制 lock file --指定支持 max connections 參數的鎖文件。預設 /var/run/rsyncd.lock list --指定當客戶請求列出可以使用的模塊列表時,該模塊是否應該被列出。預設為 true,顯示 read only = --只讀選擇,也就是說,不讓客戶端上傳文件到伺服器上。預設true write only = --只寫選擇,也就是說,不讓客戶端從伺服器上下載文件。預設false ignore errors --忽略IO錯誤。預設true ignore nonreadable --指定 rysnc 伺服器完全忽略那些用戶沒有訪問許可權的文件。這對於在需要備份的目錄中有些不應該被備份者獲得的文件時是有意義的。 false timeout = --該選項可以覆蓋客戶指定的 IP 超時時間。從而確保 rsync 伺服器不會永遠等待一個崩潰的客戶端。對於匿名 rsync 伺服器來說,理想的數字是 600(單位為秒)。 0 (未限制) dont compress --用來指定那些在傳輸之前不進行壓縮處理的文件。該選項可以定義一些不允許客戶對該模塊使用的命令選項列表。必須使用選項全名,而不能是簡稱。當發生拒絕某個選項的情況時,伺服器將報告錯誤信息然後退出。例如,要防止使用壓縮,應該是:”dont compress = *”。 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz 模塊文件篩選參數 exclude --指定多個由空格隔開的多個文件或目錄(相對路徑),並將其添加到 exclude 列表中。這等同於在客戶端命令中使用 –exclude 來指定模式 exclude from --指定一個包含 exclude 規則定義的文件名,伺服器從該文件中讀取 exclude 列表定義 include --指定多個由空格隔開的多個文件或目錄(相對路徑),並將其添加到 include 列表中。這等同於在客戶端命令中使用 –include 來指定模式 include from --指定一個包含 include 規則定義的文件名,伺服器從該文件中讀取 include 列表定義 模塊用戶認證參數 auth users --指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊(和系統用戶沒有任何關係)。用戶名和口令以明文方式存放在 secrets file 參數指定的文件中。預設為匿名方式 secrets file --指定一個 rsync 認證口令文件。只有在 auth users 被定義時,該文件才起作用。文件許可權必須是 600 strict modes --指定是否監測口令文件的許可權。為 true 則口令文件只能被 rsync 伺服器運行身份的用戶訪問,其他任何用戶不可以訪問該文件。預設為true 模塊訪問控制參數 hosts allow --用一個主機列表指定哪些主機客戶允許連接該模塊。不匹配主機列表的主機將被拒絕。預設值為 * hosts deny --用一個主機列表指定哪些主機客戶不允許連接該模塊 模塊日誌參數 transfer logging --使 rsync 伺服器將傳輸操作記錄到傳輸日誌文件。預設值為false log format --指定傳輸日誌文件的欄位。預設為:”%o %h [%a] %m (%u) %f %l” 設置了”log file”參數時,在日誌每行的開始會添加”%t [%p]“; 可以使用的日誌格式定義符如下所示: %o --操作類型:”send” 或 “recv” %h --遠程主機名 %a --遠程IP地址 %m --模塊名 %u --證的用戶名(匿名時是 null) %f --文件名 %l --文件長度字元數 %p --該次 rsync 會話的 PID %P --模塊路徑 %t --當前時間 %b --實際傳輸的位元組數 %c --當發送文件時,記錄該文件的校驗碼 3、服務端配置 # vim /etc/rsyncd.conf --為 rsyncd 服務編輯配置文件,預設沒有,需自己編輯 uid = root --rsync運行許可權為root gid = root --rsync運行許可權為root use chroot = no --是否讓進程離開工作目錄 max connections = 5 --最大併發連接數,0為不限制 timeout = 600 --超時時間 pid file = /var/run/rsyncd.pid --指定rsync的pid存放路徑 lockfile = /var/run/rsyncd.lock --指定rsync的鎖文件存放路徑 log file = /var/log/rsyncd.log --指定rsync的日誌存放路徑 [web1] --模塊名稱 path = /data/test/src --該模塊存放文件的基礎路徑 ignore errors = yes --忽略一些無關的I/O錯誤 read only = no --客戶端可以上傳 write only = no --客戶端可以下載 hosts allow = 192.168.22.12 --允許連接的客戶端主機ip hosts deny = * --黑名單,*表示任何主機 list = yes auth users = web --認證此模塊的用戶名 secrets file = /etc/web.passwd --指定存放“用戶名:密碼”格式的文件 # mkdir /data/test/src --創建基礎目錄 # mkdir /data/test/src/george --再創建一個目錄 # touch /data/test/src/{1,2,3} # echo "web:123" > /etc/web.passwd --創建密碼文件 # chmod 600 /etc/web.passwd # service xinetd restart   四、測試 1、客戶端 環境:192.168.22.12 # yum -y install rsync # mkdir /data/test 2、小試參數 # rsync -avzP [email protected]::web1 /data/test/ --輸入密碼 123;將伺服器 web1 模塊里的文件同步至 /data/test,參數說明: -a --參數,相當於-rlptgoD, -r --是遞歸 -l --是鏈接文件,意思是拷貝鏈接文件 -i --列出 rsync 伺服器中的文件 -p --表示保持文件原有許可權 -t --保持文件原有時間 -g --保持文件原有用戶組 -o --保持文件原有屬主 -D --相當於塊設備文件 -z --傳輸時壓縮 -P --傳輸進度 -v --傳輸時的進度等信息,和-P有點關係 # rsync -avzP --delete [email protected]::web1 /data/test/ --讓客戶端與伺服器保持完全一致, --delete # rsync -avzP --delete /data/test/ [email protected]::web1 --上傳客戶端文件至服務端 # rsync -avzP --delete /data/test/ [email protected]::web1/george --上傳客戶端文件至服務端的 george 目錄 # rsync -ir --password-file=/tmp/rsync.password [email protected]::web1 --遞歸列出服務端 web1 模塊的文件 # rsync -avzP --exclude="*3*" --password-file=/tmp/rsync.password [email protected]::web1 /data/test/ --同步除了路徑以及文件名中包含 “3” *的所有文件 3、通過密碼文件同步 # echo "123"> /tmp/rsync.password # chmod 600 /tmp/rsync.password # rsync -avzP --delete --password-file=/tmp/rsync.password [email protected]::web1 /data/test/ --調用密碼文件 4、客戶端自動同步 # crontab -e 10 0 * * * rsync -avzP --delete --password-file=/tmp/rsync.password [email protected]::web1 /data/test/ # crontab -l   五、數據實時同步 環境:Rsync + Inotify-tools 1、inotify-tools 是為linux下 inotify文件監控工具提供的一套c的開發介面庫函數,同時還提供了一系列的命令行工具,這些工具可以用來監控文件系統的事件 inotify-tools是用c編寫的,除了要求內核支持 inotify 外,不依賴於其他 inotify-tools提供兩種工具:一是inotifywait,它是用來監控文件或目錄的變化,二是inotifywatch,它是用來統計文件系統訪問的次數 2、安裝inotify-tools 下載地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz # yum install –y gcc --安裝依賴 # mkdir /usr/local/inotify # tar -xf inotify-tools-3.14.tar.gz # cd inotify-tools-3.14 # ./configure --prefix=/usr/local/inotify/ # make && make install 3、設置環境變數 # vim /root/.bash_profile export PATH=/usr/local/inotify/bin/:$PATH # source /root/.bash_profile # echo '/usr/local/inotify/lib' >> /etc/ld.so.conf --載入庫文件 # ldconfig # ln -s /usr/local/inotify/include /usr/include/inotify 4、常用參數 -m --始終保持監聽狀態,預設觸發事件即退出 -r --遞歸查詢目錄 -q --列印出監控事件 -e --定義監控的事件,可用參數: access --訪問文件 modify --修改文件 attrib --屬性變更 open --打開文件 delete --刪除文件 create --新建文件 move --文件移動 --fromfile --從文件讀取需要監視的文件或者排除的文件,一個文件一行,排除的文件以@開頭 --timefmt --時間格式 --format --輸出格式 --exclude --正則匹配需要排除的文件,大小寫敏感 --excludei --正則匹配需要排除的文件,忽略大小寫 %y%m%d %H%M --年月日時鐘 %T%w%f%e --時間路徑文件名狀態 5、測試一 檢測源目錄中是否有如下動作:modify,create,move,delete,attrib;一旦發生則發佈至目標機器;方式為 ssh src: 192.168.22.11(Rsync + Inotify-tools) dest: 192.168.22.12 兩台機器需要做好 ssh 免密登錄 # mdkir /data/test/dest/ --dest機器 # mdkir /data/test/src/ --src機器 # rsync -av --delete /data/test/src/ 192.168.22.12:/data/test/dest --測試下命令 # vim /data/test/test.sh #!/bin/bash /usr/local/inotify/bin/inotifywait -mrq -e modify,create,move,delete,attrib /data/test/src | while read events do rsync -a --delete /data/test/src/ 192.168.22.12:/data/test/dest echo "`date +'%F %T'` 出現事件:$events" >> /tmp/rsync.log 2>&1 done # chmod 755 /data/test/test.sh # /data/test/test.sh & # echo '/data/test/test.sh &' >> /etc/rc.local --設置開機自啟 *******我們可以在目標機上也寫一個這樣的腳本: rsync -a --delete /data/test/dest/ 192.168.22.11:/data/test/src ;這樣可以實現雙向同步
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 直接上語句 查所有資料庫占用空間大小 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB') as data_size, concat(truncate(sum(index_length)/1024/1024... ...
  • 查詢速度慢的原因 1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程式設計的缺陷) 2、I/O 吞吐量小,形成了瓶頸效應。 3、沒有創建計算列導致查詢不優化。 4、記憶體不足 5、網路速度慢 6、查詢出的數據量過大(可採用多次查詢,其他的方法降低數據量) 7、鎖或者死鎖(這是查詢慢最常見的問題 ...
  • 13.2 TFT LCD顯示實例 13.2.1 程式設計 本實例的目的是從串口輸出一個菜單,從中選擇各種方法進行測試,比如畫線、 畫圓、顯示單色、使用調色板等。 13.2.2代碼詳解 本實例源碼在/work/hardware/lcd目錄下,與LCD相關的代碼有3個文件:lcddrv.c、 frame ...
  • 瞭解LCD顯示器的介面及時序; 掌握S3C2410/S3C2440 LCD控制器的使用方法; 瞭解幀緩衝區的概念,掌握如何設置幀緩衝區來顯示圖像; ...
  • 瞭解S3C2410/S3C2440和觸摸屏的結構; 瞭解電阻觸摸屏的工作原理和等效電路圖; 瞭解S3C2410/S3C2440觸摸屏控制器的多種工作模式; 掌握S3C2410/S3C2440 ADC和觸摸屏的編程方法; ...
  • 一直以為自己linux還說的過去,事實上已經跟不上日新月異的應用需要了。 現成文檔都沒法看,錯太多。然而畢竟是多年積累,整理一個準確的文檔還是能做到的。 本機ip設置: # static interfaceauto eth0iface eth0 inet staticaddress 192.168. ...
  • 本來是計劃對postfix做一個全系列的安裝文檔的,不過在查某個知識點的時候,偶然找到一個已經寫好的postfix全系列文章,在全部看完之後驚為天人,我認為:總體上會比我要寫的要好,所以我準備借用一下拿來主義的案例,直接總結一個鏈接的目錄連接給大家參考。 我之前幾篇寫好的已經構建了一個基本的郵件系統 ...
  • 一、lvs介紹 LVS的英文全名為“Linux Virtual Server”,即Linux虛擬伺服器,是一個虛擬的四層交換器集群系統,根據目標地址和目標埠實現用戶請求轉發,本身不產生流量,只做用戶請求轉發,目前是負載均衡性能最好的集群系統。 二、lvs集群的類型: lvs nat:修改請求報文的 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...