linux多伺服器之間的目錄檔案同步

2021-08-31 16:11:20 字數 4237 閱讀 2542

在開始正式學習rsync之前,我們先來回答這個問題:rsync是什麼。

rsync(remote synchronize)是liunx/unix下的乙個遠端資料同步工具。它可通過lan/wan快速同步多台主機間的檔案和目錄,並適當利用rsync演算法(差分編碼)以減少資料的傳輸。

rsync演算法並不是每一次都整份傳輸,而是只傳輸兩個檔案的不同部分,因此其傳輸速度相當快。

除此之外,rsync可拷貝、顯示目錄屬性,以及拷貝檔案,並可選擇性的壓縮以及遞迴拷貝。

1、客戶端構造filelist,filelist包含了需要與伺服器同步的所有檔案資訊對name->id(id用來唯一表示檔案例如md5)。

2、客戶端將filelist傳送到伺服器。

3、伺服器上rsync處理客戶端發過來的filelist,構建新的newfilelist。其中根據md5值比較,刪除伺服器上已經存在的檔案資訊對,只保留伺服器上不存在或變化的檔案。

4、客戶端得到伺服器傳送過來的newfilelist,然後把newfilelist中的檔案重新傳輸到伺服器。

rsync有以下幾個優點:

1)可以映象儲存整個目錄樹和檔案系統。

2)可以很容易做到保持原來檔案的許可權、時間、軟硬連線等。

3)無需特殊許可權即可安裝。

4)擁有優化的流程和比較高的檔案傳輸效率。

5)可以使用shell(rsh、ssh)方式來傳輸檔案。

6)支援匿名執行。

7)與scp相比,rsync傳輸速度絕對遠遠超過scp的傳輸速度。

我們在區域網中經常用rsync和scp傳輸大量mysql資料庫檔案,發現rsync傳輸檔案速度至少要比scp快20倍以上。

所以如果需要在liunx/unix伺服器之間互傳海量資料時,建議選擇rsync進行傳輸。

rsync有兩種常用的認證方式,一種是rsync-daemon方式,另外一種是ssh方式。在平時使用過程,我們使用最多的是rsync-daemon方式。

注意:在使用rsync時,伺服器和客戶端都必須安裝rsync程式。

web1:10.80.11.243

web2:10.80.11.244

code:10.80.11.245

更新code伺服器的**後,自動同步到web1和web2,刪除code伺服器檔案,web1和web2也刪除

伺服器端的安裝(n臺web都這樣配置)

1、首先要求linux核心在2.6以上,才支援inotify

[root@web1 html]# uname -a

linux web1 2.6.18-194.el5 #1 smp fri apr 2 14:58:35 edt 2010 i686 i686 i386 gnu/linux

2、檢查是否安裝rsync軟體

[root@web1 html]# rpm -qa |grep rsync

rsync-2.6.8-3.1

如果沒有的話,通過yum –y install rsync安裝

3、新建rsync配置檔案,該軟體安裝預設沒有配置檔案

#vim /etc/rsyncd.conf

motd file = /etc/rsyncd.motd

uid=root

gid=root

max connections=36000

use chroot=no

log file=/var/log/rsyncd.log

log format =  %t %a %m %f %b

pid file=/var/run/rsyncd.pid

lock file=/var/run/rsyncd.lock

timeout = 300

[tongbu]

path=/var/www/html

list=yes

comment = this is comment

ignore errors = yes

read only = no

hosts allow = 10.80.11.245

hosts deny = *

auth users backup

secrets file = /etc/rsyncd.secrets

注:tongbu為發布模組,相當於路徑的別名

hosts allow是只允許連線的ip

secrets file = /etc/rsyncd.secrets

這是密碼檔案,同步的使用者為backup,下面建立同步使用者

#useradd backup

#passwd backup

#vim /etc/rsyncd.secrets

backup:123456

格式為使用者名稱:密碼

#chmod 600 /etc/rsyncd.secrets

設定只有root使用者才能檢視這個檔案

4、啟動服務

/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
其他的web伺服器配置和上面是一樣的。如果需要開機啟動,加入到/etc/rc.local

發布端的配置

1、發布端主要利用開源軟體sersync,

#cd /usr/local/

#wget 

#tar –zxvf sersync2.5rc1_32bit_binary.tar.gz

#cd gnu-linux-x86

2、修改配置檔案

#vim confxml.xml

<?xml version="1.0" encoding="iso-8859-1"?>

/var/www/html為發布伺服器的原始碼發布目錄

主要修改紅色標記部分,密碼檔案為/etc/rsync.pas

#vim /etc/rsync.pas

123456#

解釋:123456代表的是rsync server端的密碼,並且要以"#"做結尾。如果有多個密碼,增加多行就行。

#chmod 600 /etc/rsync.pas

3、啟動服務

#./sersync2 -d –r
這種方式常駐程序,如果需要開機啟動,加入到/etc/rc.local

這樣只要修改發布伺服器/var/www/html的檔案,web伺服器就會自動同步。

全域性引數

uid = root//執行rsync守護程序的使用者

gid = root//執行rsync守護程序的組

use chroot = no //不使用chroot

max connections = 4 // 最大連線數為4

strict modes =yes//是否檢查口令檔案的許可權

port = 873//預設埠873

模組引數

[backup] //這裡是認證的模組名,在client端需要指定

path = /home/backup///需要做映象的目錄,不可缺少!

comment = this is a test //這個模組的注釋資訊

ignore errors//可以忽略一些無關的io錯誤

read only = yes// 唯讀

list = no //不允許列檔案

auth users = hening //認證的使用者名稱,如果沒有這行則表明是匿名,此使用者與系統無關

secrets file = /etc/rsync.pas //密碼和使用者名稱對比表,密碼檔案自己生成

hosts allow = 192.168.1.1, 10.10.10 .10//允許主機

hosts deny = 0.0.0 .0/0 //禁止主機

#transfer logging = yes

注釋:下面這些綠色檔案是安裝完rsync服務後自動生成的檔案

pid file = /var/run/rsyncd.pid//pid檔案的存放位置

lock file = /var/run/rsync.lock //鎖檔案的存放位置

log file = /var/log/rsyncd.log//日誌記錄檔案的存放位置

Linux下利用rsync實現多伺服器檔案同步

windows做為檔案伺服器,使用rsync的windows服務版本,然後配置好就可以了。需要的朋友可以參考下。目標 多伺服器檔案同步 環境 2臺centos5.6 web端 192.168.20.20 backup端 192.168.20.21 需要備份目錄為 192.168.20.20 usr ...

Linux下利用rsync實現多伺服器檔案同步

linux下利用rsync實現多伺服器檔案同步 第一部分 簡單的資料備份 第一步 伺服器端的配置 rpm qa grep rsync cd usr local src wget tar zxvf rsync 3.0.6pre1.tar.gz cd rsync 3.0.6pre1 configure ...

linux伺服器之間的資料拷貝

方法一 scp secure copy 安全拷貝 1 scp定義 scp可以實現伺服器與伺服器之間的資料拷貝。from server1 to server2 2 基本語法 scp r dir name root xx001 newdir newname 命令 遞迴 要拷貝的檔案路徑 名稱 目的使用者...