主頁 > 知識庫 > CentOS6中rsync服務器的安裝與配置

CentOS6中rsync服務器的安裝與配置

熱門標簽:洛陽外呼增值業(yè)務線路解決方案 昆明crm外呼系統(tǒng)價格 臨沂語音電話機器人公司 電銷機器人自動撥號信息 用什么軟件做地圖標注 長沙呼叫中心外呼系統(tǒng)穩(wěn)定嗎 騰沖銷售外呼管理系統(tǒng)服務 400電話申請安裝 北京地圖標注平臺注冊入駐

一、rsync 簡介

  Rsync(remote synchronize)是一個遠程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺主機間的文件,也可以使用 Rsync 同步本地硬盤中的不同目錄。

  Rsync 是用于取代rcp的一個工具,Rsync使用所謂的 “Rsync 算法” 來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。您可以參考 How Rsync Works A Practical Overview 進一步了解 rsync 的運作機制。

  Rsync支持大多數(shù)的類Unix系統(tǒng),無論是Linux、Solaris還是BSD上都經(jīng)過了良好的測試。此外,它在windows平臺下也有相應的版本,比較知名的有cwRsync和Sync2NAS。

  Rsync 的初始作者是 Andrew Tridgell 和 Paul Mackerras,它當前由 http://rsync.samba.org維護。

  Rsync的基本特點如下:

  1. 可以鏡像保存整個目錄樹和文件系統(tǒng);

  2. 可以很容易做到保持原來文件的權限、時間、軟硬鏈接等;

  3. 無須特殊權限即可安裝;

  4. 優(yōu)化的流程,文件傳輸效率高;

  5. 可以使用rcp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接;

  6. 支持匿名傳輸,以方便進行網(wǎng)站鏡像。

  在使用 rsync 進行遠程同步時,可以使用兩種方式:遠程 Shell 方式(建議使用 ssh,用戶驗證由 ssh 負責)和 C/S 方式(即客戶連接遠程 rsync 服務器,用戶驗證由 rsync 服務器負責)。

  無論本地同步目錄還是遠程同步數(shù)據(jù),首次運行時將會把全部文件拷貝一次,以后再運行時將只拷貝有變化的文件(對于新文件)或文件的變化部分(對于原有文件)。

  rsync 在首次復制時沒有速度優(yōu)勢,速度不如 tar,因此當數(shù)據(jù)量很大時您可以考慮先使用 tar 進行首次復制,然后再使用 rsync 進行數(shù)據(jù)同步。

二、系統(tǒng)環(huán)境

系統(tǒng)平臺:CentOS release 6.3 (Final)

rsync 版本:rsync-3.0.9-2.el6.rfx.x86_64.rpm

rsync 服務器:TS-DEV (172.16.1.135)

rsync 客戶端:TS-CLIENT (172.16.1.136)

三、服務器端安裝rsync服務

3.1. 檢查rsync 是否已經(jīng)安裝

# rpm -qa|grep rsync

若已經(jīng)安裝,則使用rpm -e 命令卸載。

3.2. 下載RPM包

# wget http://pkgs.repoforge.org/rsync/rsync-3.0.9-2.el6.rfx.x86_64.rpm

3.3. 安裝rsync

# rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm

四、配置 rsync 服務

4.1. 配置 rsync 服務器的步驟

  • 首先要選擇服務器啟動方式
  • 對于負荷較重的 rsync 服務器應該使用獨立運行方式
  • 對于負荷較輕的 rsync 服務器可以使用 xinetd 運行方式
  • 創(chuàng)建配置文件 rsyncd.conf
  • 對于非匿名訪問的 rsync 服務器還要創(chuàng)建認證口令文件
  • 4.2. 以 xinetd 運行 rsync 服務

    CentOS 默認以 xinetd 方式運行 rsync 服務。rsync 的 xinetd 配置文件
    在 /etc/xinetd.d/rsync。要配置以 xinetd 運行的 rsync 服務需要執(zhí)行如下的命令:

    # chkconfig rsync on# service xinetd restart

    管理員可以修改 /etc/xinetd.d/rsync 配置文件以適合您的需要。例如,您可以修改配置行

    server_args = --daemon

    在后面添加 rsync 的服務選項。

    4.3. 獨立運行 rsync 服務

    最簡單的獨立運行 rsync 服務的方法是執(zhí)行如下的命令:

    # /usr/bin/rsync --daemon

    您可以將上面的命令寫入 /etc/rc.local 文件以便在每次啟動服務器時運行 rsync 服務。當然,您也可以寫一個腳本在開機時自動啟動 rysnc 服務。

    4.4. 配置文件 rsyncd.conf

    兩種 rsync 服務運行方式都需要配置 rsyncd.conf,其格式類似于 samba 的主配置文件。
    配置文件 rsyncd.conf 默認在 /etc 目錄下。為了將所有與 rsync 服務相關的文件放在單獨的目錄下,可以執(zhí)行如下命令:

    # mkdir /etc/rsyncd# touch /etc/rsyncd/rsyncd.conf# ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

    配置文件 rsyncd.conf 由全局配置和若干模塊配置組成。配置文件的語法為:

  • 模塊以 [模塊名] 開始
  • 參數(shù)配置行的格式是 name = value ,其中 value 可以有兩種數(shù)據(jù)類型:
  • 字符串(可以不用引號定界字符串)
  • 布爾值(1/0 或 yes/no 或 true/false)
  • 以 # 或 ; 開始的行為注釋
  • \ 為續(xù)行符

    全局參數(shù)

    在文件中 [module] 之外的所有配置行都是全局參數(shù)。當然也可以在全局參數(shù)部分定義模塊參數(shù),這時該參數(shù)的值就是所有模塊的默認值。

  • 參數(shù) 說明 默認值
    address 在獨立運行時,用于指定的服務器運行的 IP 地址。由 xinetd 運行時將忽略此參數(shù),使用命令行上的 –address 選項替代。 本地所有IP
    port 指定 rsync 守護進程監(jiān)聽的端口號。 由 xinetd 運行時將忽略此參數(shù),使用命令行上的–port 選項替代。 873
    motd file 指定一個消息文件,當客戶連接服務器時該文件的內(nèi)容顯示給客戶。
    pid file rsync 的守護進程將其 PID 寫入指定的文件。
    log file 指定 rsync 守護進程的日志文件,而不將日志發(fā)送給 syslog。
    syslog facility 指定 rsync 發(fā)送日志消息給 syslog 時的消息級別。 daemon
    socket options 指定自定義 TCP 選項。

    模塊參數(shù)

    模塊參數(shù)主要用于定義 rsync 服務器哪個目錄要被同步。模塊聲明的格式必須為 [module] 形式,這個名字就是在 rsync 客戶端看到的名字,類似于 Samba 服務器提供的共享名。而服務器真正同步的數(shù)據(jù)是通過 path 來指定的??梢愿鶕?jù)自己的需要,來指定多個模塊,模塊中可以定義以下參數(shù):

    a. 基本模塊參數(shù)

    參數(shù) 說明 默認值
    path 指定當前模塊在 rsync 服務器上的同步路徑,該參數(shù)是必須指定的。
    comment 給模塊指定一個描述,該描述連同模塊名在客戶連接得到模塊列表時顯示給客戶。

    b. 模塊控制參數(shù)

    參數(shù) 說明 默認值
    use chroot 若為 true,則 rsync 在傳輸文件之前首先 chroot 到 path 參數(shù)所指定的目錄下。這樣做的原因是實現(xiàn)額外的安全防護,但是缺點是需要 root 權限,并且不能備份指向 path 外部的符號連接所指向的目錄文件。 true
    uid 指定該模塊以指定的 UID 傳輸文件。 nobody
    gid 指定該模塊以指定的 GID 傳輸文件。 nobody
    max connections 指定該模塊的最大并發(fā)連接數(shù)量以保護服務器,超過限制的連接請求將被告知隨后再試。 0(沒有限制)
    lock file 指定支持 max connections 參數(shù)的鎖文件。 /var/run/rsyncd.lock
    list 指定當客戶請求列出可以使用的模塊列表時,該模塊是否應該被列出。如果設置該選項為 false,可以創(chuàng)建隱藏的模塊。 true
    read only 指定是否允許客戶上傳文件。若為 true 則不允許上傳;若為 false 并且服務器目錄也具有讀寫權限則允許上傳。 true
    write only 指定是否允許客戶下載文件。若為 true 則不允許下載;若為 false 并且服務器目錄也具有讀權限則允許下載。 false
    ignore errors 指定在 rsync 服務器上運行 delete 操作時是否忽略 I/O 錯誤。一般來說 rsync 在出現(xiàn) I/O 錯誤時將將跳過 –delete 操作,以防止因為暫時的資源不足或其它 I/O 錯誤導致的嚴重問題。 true
    ignore nonreadable 指定 rysnc 服務器完全忽略那些用戶沒有訪問權限的文件。這對于在需要備份的目錄中有些不應該被備份者獲得的文件時是有意義的。 false
    timeout 該選項可以覆蓋客戶指定的 IP 超時時間。從而確保 rsync 服務器不會永遠等待一個崩潰的客戶端。對于匿名 rsync 服務器來說,理想的數(shù)字是 600(單位為秒)。 0 (未限制)
    dont compress 用來指定那些在傳輸之前不進行壓縮處理的文件。該選項可以定義一些不允許客戶對該模塊使用的命令選項列表。必須使用選項全名,而不能是簡稱。當發(fā)生拒絕某個選項的情況時,服務器將報告錯誤信息然后退出。例如,要防止使用壓縮,應該是:”dont compress = *”。 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

    c. 模塊文件篩選參數(shù)

    參數(shù) 說明 默認值
    exclude 指定多個由空格隔開的多個文件或目錄(相對路徑),并將其添加到 exclude 列表中。這等同于在客戶端命令中使用 –exclude 來指定模式。
    exclude from 指定一個包含 exclude 規(guī)則定義的文件名,服務器從該文件中讀取 exclude 列表定義。
    include 指定多個由空格隔開的多個文件或目錄(相對路徑),并將其添加到 include 列表中。這等同于在客戶端命令中使用 –include 來指定模式 。
    include from 指定一個包含 include 規(guī)則定義的文件名,服務器從該文件中讀取 include 列表定義。
    一個模塊只能指定一個exclude 參數(shù)、一個include 參數(shù)。結合 include 和 exclude 可以定義復雜的exclude/include 規(guī)則 。這幾個參數(shù)分別與相應的rsync 客戶命令選項等價,唯一不同的是它們作用在服務器端。關于如何書寫規(guī)則文件的內(nèi)容請參考http://www.howtocn.org/rsync:use_rsync。

    d. 模塊用戶認證參數(shù)

    參數(shù) 說明 默認值
    auth users 指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊。這里的用戶和系統(tǒng)用戶沒有任何關系。用戶名和口令以明文方式存放在 secrets file 參數(shù)指定的文件中。 (匿名方式)
    secrets file 指定一個 rsync 認證口令文件。只有在 auth users 被定義時,該文件才起作用。
    strict modes 指定是否監(jiān)測口令文件的權限。若為 true 則口令文件只能被 rsync 服務器運行身份的用戶訪問,其他任何用戶不可以訪問該文件。 true
    rsync 認證口令文件的權限一定是 600,否則客戶端將不能連接服務器。rsync 認證口令文件中每一行指定一個 用戶名:口令 對,格式為:

        username:passwd

    一般來說口令最好不要超過8個字符。若您只配置匿名訪問的 rsync 服務器,則無需設置上述參數(shù)。

    e. 模塊訪問控制參數(shù)

    參數(shù) 說明 默認值
    hosts allow 用一個主機列表指定哪些主機客戶允許連接該模塊。不匹配主機列表的主機將被拒絕。 *
    hosts deny 用一個主機列表指定哪些主機客戶不允許連接該模塊。

    客戶主機列表定義可以是以下形式:

    單個IP地址。例如:192.168.0.1整個網(wǎng)段。例如:192.168.0.0/24,192.168.0.0/255.255.255.0可解析的單個主機名。例如:centos,centos.bsmart.cn域內(nèi)的所有主機。例如:*.bsmart.cn“*”則表示所有。多個列表項要用空格間隔。

    f. 模塊日志參數(shù)

    參數(shù) 說明 默認值
    transfer logging 使 rsync 服務器將傳輸操作記錄到傳輸日志文件。 false
    log format 指定傳輸日志文件的字段。 ”%o %h [%a] %m (%u) %f %l”

    設置了”log file”參數(shù)時,在日志每行的開始會添加”%t [%p]“。

    可以使用的日志格式定義符如下所示:
  • %a - 遠程IP地址
  • %h - 遠程主機名
  • %l - 文件長度字符數(shù)
  • %p - 該次 rsync 會話的 PID
  • %o - 操作類型:”send” 或 “recv”
  • %f - 文件名
  • %P - 模塊路徑
  • %m - 模塊名
  • %t - 當前時間
  • %u - 認證的用戶名(匿名時是 null)
  • %b - 實際傳輸?shù)淖止?jié)數(shù)
  • %c - 當發(fā)送文件時,記錄該文件的校驗碼

    五、rsync 服務器應用案例

    5.1. 在服務器端TS-DEV上配置rsync 服務

    a. 編輯配置文件

    # vi /etc/rsyncd/rsyncd.conf

    # Minimal configuration file for rsync daemon# See rsync(1) and rsyncd.conf(5) man pages for help# This line is required by the /etc/init.d/rsyncd script
    # GLOBAL OPTIONSuid = root gid = root
    use chroot = no
    read only = yes #limit access to private LANshosts allow=172.16.0.0/255.255.0.0 192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0hosts deny=* max connections = 5

    pid file = /var/run/rsyncd.pid

    secrets file = /etc/rsyncd/rsyncd.secrets #lock file = /var/run/rsync.lock
    motd file = /etc/rsyncd/rsyncd.motd #This will give you a separate log filelog file = /var/log/rsync.log #This will log every file transferred - up to 85,000+ per user, per synctransfer logging = yes log format = %t %a %m %f %bsyslog facility = local3timeout = 300
    # MODULE OPTIONS[davidhome] path = /home/david/ list=yes ignore errors auth users = david comment = David home exclude = important/ [chinatmp]path = /tmp/china/list=noignore errorsauth users = chinacomment = tmp_china

    b. 建立/etc/rsyncd/rsyncd.secrets文件

    # vim /etc/rsyncd/rsyncd.secrets

    david:asdf #格式 用戶名:口令
    china:jk #該用戶不要求是系統(tǒng)用戶

    c. 為了密碼的安全性,我們把權限設為600

    # chown root:root /etc/rsyncd/rsyncd.secrets

    # chmod 600 /etc/rsyncd/rsyncd.secrets

    d. 建立連接到服務器的客戶端看到的歡迎信息文件/etc/rsyncd/rsyncd.motd

    # vim /etc/rsyncd/rsyncd.motd

    +++++++++++++++++++++++++++
    + David Camp +
    +++++++++++++++++++++++++++

    e. 啟動rsync

    # /etc/init.d/xinetd restart

    f. 查看873端口是否起來

    # netstat -an | grep 873

    如果rsync啟動成功的話可以看到873端口已經(jīng)在監(jiān)聽了。

    g. 服務器端文件詳細

    5.2. 客戶端配置

    a. 客戶端安裝rsync

    # yum -y install rsync

    b. 通過rsync客戶端來同步數(shù)據(jù)

    場景一:

    # rsync -avzP david@172.16.1.135::davidhome /tmp/david/

    Password: 這里要輸入david的密碼,是服務器端提供的,在前面的例子中,我們用的是 asdf,輸入的密碼并不顯示出來;輸好后就回車;
    注: 這個命令的意思就是說,用david 用戶登錄到服務器上,把davidhome數(shù)據(jù),同步到本地目錄/tmp/david/上。當然本地的目錄是可以你自己定義的,比如 dave也是可以的;當你在客戶端上,當前操作的目錄下沒有davidhome這個目錄時,系統(tǒng)會自動為你創(chuàng)建一個;當存在davidhome這個目錄中,你要注意它的寫權限。

    說明:
    -a 參數(shù),相當于-rlptgoD,-r 是遞歸 -l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有權限;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當于塊設備文件;
    -z 傳輸時壓縮;
    -P 傳輸進度;
    -v 傳輸時的進度等信息,和-P有點關系,自己試試。可以看文檔;

    場景二:
    # rsync -avzP --delete david@172.16.1.135::davidhome /tmp/david/

    這回我們引入一個 –delete 選項,表示客戶端上的數(shù)據(jù)要與服務器端完全一致,如果 /tmp/david/目錄中有服務器上不存在的文件,則刪除。最終目的是讓/tmp/david/目錄上的數(shù)據(jù)完全與服務器上保持一致;用的時候要小心點,最好不要把已經(jīng)有重要數(shù)所據(jù)的目錄,當做本地更新目錄,否則會把你的數(shù)據(jù)全部刪除;

    場景三:
    # rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/

    這次我們加了一個選項 –password-file=rsync.password ,這時當我們以david用戶登錄rsync服務器同步數(shù)據(jù)時,密碼將讀取 /tmp/rsync.password 這個文件。這個文件內(nèi)容只是david用戶的密碼。我們要如下做;

    # touch /tmp/rsync.password
    # chmod 600 /tmp/rsync.password
    # echo "asdf"> /tmp/rsync.password
    # rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/

    注: 這樣就不需要密碼了;其實這是比較重要的,因為服務器通過crond 計劃任務還是有必要的;

    5.3. rsync 客戶端自動與服務器同步數(shù)據(jù)

    編輯crontab
    # crontab -e
    加入如下代碼:

    10 0 * * * rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/

    表示每天0點10分執(zhí)行后面的命令。

    六、錯誤分析

    @ERROR: chdir failed
    rsync error: error starting client-server protocol (code 5) at main.c(1530) [receiver=3.0.6]

    rsync: opendir "." (in xxxxxxx) failed: Permission denied (13)

    解決辦法:

    1、將 selinux 對 rsync 的限制全部去掉:
    # /usr/sbin/setsebool -P rsync_disable_trans 1
    # service xinetd restart

    2、狠一點,禁止整個 selinux :
    # vim /etc/selinux/config
    將其中的 SELINUX=enforcing 修改為 SELINUX=disabled
    保存退出后,重啟機器。

    至此,rsync服務器配置完畢。

    七、參考

    關于rsync 命令的使用,請參考:http://www.howtocn.org/rsync:use_rsync

    關于rsync 服務的詳細說明,請參考:http://www.howtocn.org/rsync:use_rsync_server

  • 標簽:南充 三亞 通化 遼寧 汕頭 涼山 濰坊 昌都

    巨人網(wǎng)絡通訊聲明:本文標題《CentOS6中rsync服務器的安裝與配置》,本文關鍵詞  CentOS6,中,rsync,服務器,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《CentOS6中rsync服務器的安裝與配置》相關的同類信息!
  • 本頁收集關于CentOS6中rsync服務器的安裝與配置的相關信息資訊供網(wǎng)民參考!
  • 推薦文章