【驚雷】Linux下Rsync的文件同步的配置過程

来源:http://www.cnblogs.com/helonlihsmcn/archive/2017/12/06/7993346.html
-Advertisement-
Play Games

Rsync的文件同步實現 一、rsync 簡介 Rsync(remote synchronize)是一個遠程數據同步工具,簡要的概括就是主機於主機之間的文件目錄數據的一個同步。 它的特性如下: 可以鏡像保存整個目錄樹和文件系統。 可以很容易做到保持原來文件的許可權、時間、軟硬鏈接等等。 無須特殊許可權即 ...


Rsync的文件同步實現

一、rsync 簡介

    Rsync(remote synchronize)是一個遠程數據同步工具,簡要的概括就是主機於主機之間的文件目錄數據的一個同步。

   它的特性如下:    可以鏡像保存整個目錄樹和文件系統。     可以很容易做到保持原來文件的許可權、時間、軟硬鏈接等等。     無須特殊許可權即可安裝。     快速:第一次同步時 rsync 會複製全部內容,但在下一次只傳輸修改過的文件。rsync 在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。     安全:可以使用scp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。    支持匿名傳輸,以方便進行網站鏡象    度娘上面的解析。(我懶得看,可謂見其文,不如悟其理。看著我操作一遍立刻明白!)

  總的來說是一個容錯、可靠、高效的文件同步工具 。 

 

二、環境需求(虛擬機上面搭建的環境)

系統:ceotos 6.5  內核:2.6.32-431.el6.x86_64

主機A:192.168.0.244/24        

主機B:192.168.0.144/24

rsync-3.1.2.tar.gz

三、搭建rsync

rsync在主機A上面配置:

註意:rsync最重要的2個文件    1、rsyncd.conf    配置文件

2、rsyncd.password  用戶密碼文件   

其他的rsyncd.motd  這些是次要的,這隻是一個顯示頁面信息,類似於訪問一個伺服器的時候提示的一些廣告似的信息。

本次操作中我在主機A的etc目錄下麵直接創建了上面三個文件。

-rw-r--r-- 1 root root 443 Aug 16 10:49 /etc/rsyncd.conf
-rw-r--r-- 1 root root 252 Aug 16 10:44 /etc/rsyncd.motd
-rw-r--r-- 1 root root  18 Aug 16 10:44 /etc/rsyncd.password

rsync.passwd:

nowview:nowcaster

rsync.motd:(打廣告了)

*****************************************
*                                       *
*                Rsync                  *
*                                       *
*                                       *
*****************************************

rsyncd.conf:這裡我只是主要測試這個文件同步的功能,你們需要其他更多的功能的話,可以自行添加相關參數模塊即可,可以參考:

http://www.cnblogs.com/mchina/p/2829944.html

#This is rsync conf######
uid = nowview  #需要添加的,以及下麵的模塊裡面的目錄backup的屬性需要改為nowview用戶的
gid = nowview  #關於這個uid跟gid沒有處理好,後面在同步備份文件的時候後報錯,文件許可權不夠。用root最保守,不過安全性。。這個需要自己認真調配置參數
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log #可以設置顯示格式log format = %t %a %m %f %b
motd file = /etc/rsyncd.motd  #第一個打廣告信息 - -
[backup]   #同步的模塊的名稱
path = /home/backup  #模塊下麵的同步具體路徑
ignore errors
read only = false
list = false
hosts allow = *
hosts deny = 0.0.0.0/32
auth users = nowview    #用戶名
secrets file = /etc/rsyncd.password
exclude =  www/ GR068/  #這是除了home目錄的下www  跟GR068目錄
comment = loading.....  #第二個打廣告信息,下麵測試的時候可以看到 - -

找一下rsync的主程式,一般安裝在了  /usr/local/bin/rsync   

cp -a   /usr/local/bin/rsync   /usr/bin/rsync    放到bin下麵

下麵使用daemon啟動rsync

/usr/bin/rsync --daemon --config=/etc/rsyncd.conf 

ps看一下進程,rsync的預設埠是873   

[root@主機A-144 home]# ps -ef |grep rsync
root       5835      1  0 10:51 ?        00:00:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
root       5864   1323  0 11:08 pts/1    00:00:00 grep --color rsync
[root@主機A-144 home]# netstat -lantup |grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      5835/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      5835/rsync          

繼續。。。

想開機啟動的話,把

/usr/bin/rsync --daemon --config=/etc/rsyncd.conf   添加到/etc/rc.d/rc.local 下麵即可
註意:1、這個rsyncd.passwd 文件 的所屬組是root 如果你的當前用戶比如是rsync那就是改成rsync即可
chown rsync.rsync /etc/rsyncd.password  
2、rsyncd.passwd  的許可權改為600  否則密碼無法訪問
[root@主機A-144 ~]# chmod 600 /etc/rsyncd.password 
[root@主機A-144 ~]# ll -d /etc/rsyncd.password
-rw------- 1 root root 18 Aug 16 10:44 /etc/rsyncd.password
[root@主機A-144 ~]# 

在主機A添加nowview用戶

useradd nowview

以上在主機A配置全部完畢!

四、測試

下麵在主機B上面進行測試。

曾經在測試的時候出現過形形色色的問題(粗心--),我把這些問題歸納在一起。

註意:1、為了方便測試,我就把主機A和主機B的防火牆直接關閉掉,如果你對這方面有要求的話,就直接把873這個埠從兩邊打通即可。

2、主機B不用再做任何的配置和操作,只要保持連通性即可。除非你想免去密碼訪問,每次都輸入密碼使你心煩,那就在etc下麵跟主機A一樣創建一個密碼文檔,註意了。這個密碼文檔只需要填寫密碼即可。這個密碼文檔一樣是600許可權!

下麵做簡單的訪問

[root@主機B-244 ~]# rsync -avzp  [email protected]::
*****************************************
*                                       *
*                Rsync                  *
*                                       *
*                                       *
*****************************************

下麵測試,免除密碼訪問

rsync -avzp  --delete  [email protected]::backup  /backup244/ --password-file=/etc/rsyncd.password 

在主機B的根目錄下麵已經創建了backup244的備份目錄了,現在把主機共用A模塊(即/home/backup目錄下的文檔,全部備份過來backup244目錄,免除密碼訪問,以及有刪改的對應主機A的刪改)

效果如下

主機A上面的20個文件

[root@主機A-144 backup]# pwd
/home/backup
[root@主機A-144 backup]# for a in `seq 20`;do touch $a.txt;done    #創建20個文件   
[root@主機A-144 backup]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 16 14:33 10.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 11.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 12.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 13.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 14.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 15.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 16.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 17.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 18.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 19.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 1.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 20.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 2.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 3.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 4.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 5.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 6.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 7.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 8.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 9.txt

主機B的效果如下

[root@主機B-244 /]# rsync -avzp  --delete  [email protected]::backup  /backup244/ --password-file=/etc/rsyncd.password 
*****************************************
*                                       *
*                Rsync                  *
*                                       *
*                                       *
*****************************************

receiving incremental file list
deleting 7897798798798789797/
deleting GGGGGGGGG
deleting 4564656566
./
1.txt
10.txt
11.txt
12.txt
13.txt
14.txt
15.txt
16.txt
17.txt
18.txt
19.txt
2.txt
20.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt

sent 410 bytes  received 988 bytes  2796.00 bytes/sec
total size is 0  speedup is 0.00
[root@主機B-244 /]# ls /backup244/
10.txt  12.txt  14.txt  16.txt  18.txt  1.txt   2.txt  4.txt  6.txt  8.txt
11.txt  13.txt  15.txt  17.txt  19.txt  20.txt  3.txt  5.txt  7.txt  9.txt

可以看到,全部文件備份過來了。

(-azvp參數是什麼意思,參考上面的文檔,有詳細解析)

下麵從主機B推數據推到伺服器上面去(上面的是從主機A拉數據過來主機B)

主機A的/home/backup 目錄為空目錄

[root@主機A-144 backup]# ll
total 0
[root@主機A-144 backup]# pwd
/home/backup

主機B下麵有一個文件和一個目錄

[root@主機B-244 backYYY]# ll
總用量 8
-rw-r--r--. 1 root root 1857 7月  21 13:55 OO.txx
drwxr-xr-x  2 root root 4096 7月  21 14:04 Work
[root@主機B-244 backYYY]# du -sh Work/
116K    Work/
[root@主機B-244 backYYY]# pwd
/home/backYYY

下麵開始推:

[root@主機B-244 backYYY]# rsync -avzq /home/backYYY/  [email protected]::backup  --password-file=/etc/rsyncd.password 
[root@主機B-244 backYYY]# 

可以看到主機A上面的/home/backup目錄下的情況變化

[root@主機A-144 backup]# pwd
/home/backup
[root@主機A-144 backup]# ll
total 8
-rw-r--r-- 1 root root 1857 Jul 21 13:55 OO.txx
drwxr-xr-x 2 root root 4096 Jul 21 14:04 Work
[root@主機A-144 backup]# du -sh Work/
116K    Work/
[root@主機A-144 backup]# 

基本上rsync的推拉數據同步測試完畢。

#################################################################

五、總結

報錯主要常見種類與解決:

1、rsync: chgrp "/Work/.yum.conf.VOzf5y" (in backup) failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

這是在客戶端(主機B)備份的時候會出現,文件許可權的問題。

解決:把uid 跟gid的改成root 這是最快解決的途徑,要不就是調一下配置文件參數,讀寫那裡。

2、@ERROR: auth failed on module rsync
rsync error: error starting client-server protocol 

這種情況其實不僅僅是密碼錯誤會報錯,好多情況下它都會報。

解決:檢查下麵幾點:(1)檢查配置文件的參數secrets file 名稱有沒有打錯,密碼文件路徑有沒有錯,密碼格式主配置的是:用戶名:密碼  的格式,客戶端的只有一個密碼沒有用戶名。

(2)檢查伺服器有沒有配置auth users = 用戶  ,沒配置用戶的配置上,共用模塊backup的路徑目錄/home/backup  這個backup的許可權屬性是不是對應auth users的用戶的。

(3)、認真全面檢查一遍配置文件,看到報錯client-server protocol 這個的,一般牽涉的很多問題都有可能

3、password file must not be other-accessible 
continuing without password file 

解決:密碼文檔的許可權改為600   有許可權屬性的最好改為改用戶 auth users = 用戶

4、No route to host 

主機間埠不通啊

解決:要不把iptables關閉,要不兩邊打通873埠

5、@ERROR: invalid gid nobody
rsync error: error starting client-server protocol 

配置文件報錯gid nobody

解決:這個gid nobody在配置文件裡面不能這麼寫,改成所屬用戶或者直接改root吧

總結:一般搞清楚配置文件裡面部署的許可權,所屬組的許可權問題。基本上好少報錯了,基本上都是許可權在報錯。其他報錯就是粗心大意導致的了。

 

【上述有錯誤的地方,希望各位給予指出,感謝】

後續。。。

隨著勞動力的快速發展,每次的手工同步真的挺麻煩,如果主機間能夠自動的實時的同步那該多高效!

下麵的這的歀配搭正好完美解決上面所說的問題,歡迎繼續關註本博客,下期博文為你呈現rsync+inotify的實時同步的實現。

(首次發表博文,還望各位大能不吝賜教,萬分感謝)


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

-Advertisement-
Play Games
更多相關文章
  • 整合SSH時,遇到了org.springframework.beans.factory.BeanCreationException錯誤 ...
  • 返回總目錄 本小節目錄 Pull Up Field(欄位上移) Pull Up Method(函數上移) Pull Up Constructor Body(構造函數本體上移) 1Pull Up Field(欄位上移) 概要 兩個子類擁有相同的欄位。將該欄位移至基類。 動機 如果各個子類是分別開發的, ...
  • Nginx在WebApi集群,除了OAUTH身份驗證外,針對移動端的手機、平板電腦等,還經常使用Token令牌驗證,通過伺服器授權發出有效期的Token,客戶端通過此Token在當前有效期內,進行訪問獲取信息數據。Token驗證在很多方面都廣泛應用,舉一個實際應用場景:A客戶想通過接收郵件或者簡訊網... ...
  • 1.名詞解釋 (1)協變:父類的對象用子類代替 (2)抗變:子類的對象用父類代替 如方法的參數是協變的,而返回值是抗變的。 2.泛型介面的協變與抗變 (1)協變:IDemo<out T> 》IDemo<out ParentT> 泛型類型T只能作為IDemo中方法或屬性的返回值 (2)抗變:IDemo ...
  • 本節將分析 代碼。 源代碼參考.NET Core 2.0.0 "WebHostBuilder" "WebHost" "Kestrel" 問題概要 1. Hosting中有哪2個ServiceProvider,各自如何創建,以及有哪些ServiceCollection。 1. 什麼時候執行Startu ...
  • ...
  • 前段時間在玩dos命令行的時候,用copy con創建了txt文件後想對其進行編輯,然後我又不想用記事本,所以去網上找命令行中對文本文件進行編輯的命令(純屬想裝B),結果看到了edit命令。 一敲,就出現瞭如下所示問題 告訴我edit不是內部或外部命令,也不是可運行的程式。然後我就懵了,度娘騙我? ...
  • 1.從官網下載source insight4.0版本(不用下載,在後面已經把所有需要的文件都準備好了); 2.安裝source insightt4.0; 3.使用下載好的sourceinsight4.exe替換安裝在program file(x86)目錄下的sourceinsight4.exe; 4 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...