溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何配置RSync文件備份同步Linux服務(wù)器

發(fā)布時(shí)間:2021-09-26 16:06:31 來(lái)源:億速云 閱讀:128 作者:iii 欄目:系統(tǒng)運(yùn)維

這篇文章主要介紹“如何配置RSync文件備份同步Linux服務(wù)器”,在日常操作中,相信很多人在如何配置RSync文件備份同步Linux服務(wù)器問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何配置RSync文件備份同步Linux服務(wù)器”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

Rsync(remote synchronize)是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具,可通過(guò)LAN/WAN快速同步多臺(tái)主機(jī)間的文件,也可以使用 Rsync 同步本地硬盤(pán)中的不同目錄。Rsync 是用于取代rcp的一個(gè)工具,Rsync使用所謂的 “Rsync 算法” 來(lái)使本地和遠(yuǎn)程兩個(gè)主機(jī)之間的文件達(dá)到同步,這個(gè)算法只傳送兩個(gè)文件的不同部分,而不是每次都整份傳送,因此速度相當(dāng)快。您可以參考 How Rsync Works A Practical Overview 進(jìn)一步了解 rsync 的運(yùn)作機(jī)制。

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

如何配置RSync文件備份同步Linux服務(wù)器

需要注意的是必須在服務(wù)器A和B上都安裝rsync,其中A服務(wù)器上是以服務(wù)器模式運(yùn)行rsync,而B(niǎo)上則以客戶端方式運(yùn)行rsync。這樣在web服務(wù)器A上運(yùn)行rsync守護(hù)進(jìn)程,在B上定時(shí)運(yùn)行客戶程序來(lái)備份web服務(wù)器A上需要備份的內(nèi)容。

一、什么是rsync

rsync,remote synchronize顧名思意就知道它是一款實(shí)現(xiàn)遠(yuǎn)程同步功能的軟件,它在同步文件的同時(shí),可以保持原來(lái)文件的權(quán)限、時(shí)間、軟硬鏈接等附加信息。 rsync是用 “rsync 算法”提供了一個(gè)客戶機(jī)和遠(yuǎn)程文件服務(wù)器的文件同步的快速方法,而且可以通過(guò)ssh方式來(lái)傳輸文件,這樣其保密性也非常好,另外它還是免費(fèi)的軟件。

rsync 包括如下的一些特性:

能更新整個(gè)目錄和樹(shù)和文件系統(tǒng);
有選擇性的保持符號(hào)鏈鏈、硬鏈接、文件屬于、權(quán)限、設(shè)備以及時(shí)間等;
對(duì)于安裝來(lái)說(shuō),無(wú)任何特殊權(quán)限要求;
對(duì)于多個(gè)文件來(lái)說(shuō),內(nèi)部流水線減少文件等待的延時(shí);
能用rsh、ssh 或直接端口做為傳輸入端口;
支持匿名rsync 同步文件,是理想的鏡像工具;

二、架設(shè)rsync服務(wù)器

架設(shè)rsync 服務(wù)器比較簡(jiǎn)單,寫(xiě)一個(gè)配置文件rsyncd.conf 。文件的書(shū)寫(xiě)也是有規(guī)則的,我們可以參照rsync.samba.org 上的文檔來(lái)做。當(dāng)然我們首先要安裝好rsync這個(gè)軟件才行;

A、rsync的安裝;

獲取rsync

rysnc的官方網(wǎng)站:http://rsync.samba.org/可以從上面得到最新的版本。目前最新版是3.05。當(dāng)然,因?yàn)閞sync是一款如此有用的軟件,所以很多Linux的發(fā)行版本都將它收錄在內(nèi)了。

軟件包安裝

# sudo apt-get  install  rsync  注:在debian、ubuntu 等在線安裝方法;
# yum install rsync    注:Fedora、Redhat 等在線安裝方法;
# rpm -ivh rsync       注:Fedora、Redhat 等rpm包安裝方法;

其它Linux發(fā)行版,請(qǐng)用相應(yīng)的軟件包管理方法來(lái)安裝。

源碼包安裝

tar xvf  rsync-xxx.tar.gz
cd rsync-xxx
./configure --prefix=/usr  ;make ;make install   注:在用源碼包編譯安裝之前,您得安裝gcc等編譯開(kāi)具才行;

B、配置文件

rsync的主要有以下三個(gè)配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密碼文件)、rsyncd.motd(rysnc服務(wù)器信息)

服務(wù)器配置文件(/etc/rsyncd.conf),該文件默認(rèn)不存在,請(qǐng)創(chuàng)建它。

具體步驟如下:

#touch /etc/rsyncd.conf  #創(chuàng)建rsyncd.conf,這是rsync服務(wù)器的配置文件。
#touch /etc/rsyncd.secrets  #創(chuàng)建rsyncd.secrets ,這是用戶密碼文件。
#chmod 600 /etc/rsyncd/rsyncd.secrets  #將rsyncd.secrets這個(gè)密碼文件的文件屬性設(shè)為root擁有, 且權(quán)限要設(shè)為600, 否則無(wú)法備份成功!
#touch /etc/rsyncd.motd

下一就是我們修改rsyncd.conf和rsyncd.secrets和rsyncd.motd文件的時(shí)候了。

設(shè)定/etc/rsyncd.conf

rsyncd.conf是rsync服務(wù)器主要配置文件。我們先來(lái)個(gè)簡(jiǎn)單的示例,后面在詳細(xì)說(shuō)明各項(xiàng)作用。

比如我們要備份服務(wù)器上的/home和/opt,在/home中我想把easylife和samba目錄排除在外;

# Distributed under the terms of the GNU General Public License v2
# 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
pid file = /var/run/rsyncd.pid   
port = 873
address = 192.168.1.171  
#uid = nobody 
#gid = nobody    
uid = root   
gid = root  

use chroot = yes  
read only = yes 

#limit access to private LANs
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0  
hosts deny=*

max connections = 5 
motd file = /etc/rsyncd.motd

#This will give you a separate log file
#log file = /var/log/rsync.log

#This will log every file transferred - up to 85,000+ per user, per sync
#transfer logging = yes

log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

[rhel4home]   
path = /home    
list=yes 
ignore errors 
auth users = root
secrets file = /etc/rsyncd.secrets  
comment = This is RHEL 4 data  
exclude = easylife/  samba/     

[rhel4opt]
path = /opt 
list=no
ignore errors
comment = This is RHEL 4 opt 
auth users = easylife
secrets file = /etc/rsyncd/rsyncd.secrets

注:關(guān)于auth users是必須在服務(wù)器上存在的真實(shí)的系統(tǒng)用戶,如果你想用多個(gè)用戶以,號(hào)隔開(kāi),比如auth users = easylife,root

設(shè)定密碼文件

密碼文件格式很簡(jiǎn)單,rsyncd.secrets的內(nèi)容格式為:

用戶名:密碼

我們?cè)诶又衦syncd.secrets的內(nèi)容如下類似的;在文檔中說(shuō),有些系統(tǒng)不支持長(zhǎng)密碼,自己嘗試著設(shè)置一下吧。

easylife:keer
root:mike

chown root.root rsyncd.secrets  #修改屬主
chmod 600 rsyncd.secrets     #修改權(quán)限

注:1、將rsyncd.secrets這個(gè)密碼文件的文件屬性設(shè)為root擁有, 且權(quán)限要設(shè)為600, 否則無(wú)法備份成功!            出于安全目的,文件的屬性必需是只有屬主可讀。
2、這里的密碼值得注意,為了安全你不能把系統(tǒng)用戶的密碼寫(xiě)在這里。比如你的系統(tǒng)用戶easylife密碼是000000,為了安全你可以讓rsync中的easylife為keer。這和samba的用戶認(rèn)證的密碼原理是差不多的。

設(shè)定rsyncd.motd 文件;

它是定義rysnc服務(wù)器信息的,也就是用戶登錄信息。比如讓用戶知道這個(gè)服務(wù)器是誰(shuí)提供的等;類似ftp服務(wù)器登錄時(shí),我們所看到的 linuxsir.org ftp ……。 當(dāng)然這在全局定義變量時(shí),并不是必須的,你可以用#號(hào)注掉,或刪除;我在這里寫(xiě)了一個(gè) rsyncd.motd的內(nèi)容為:

++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use the mike.org.cn rsync services!
           2002------2009
++++++++++++++++++++++++++++++++++++++++++++++

三、rsyncd.conf服務(wù)器的配置詳解

A、全局定義

在rsync 服務(wù)器中,全局定義有幾個(gè)比較關(guān)健的,根據(jù)我們前面所給的配置文件 rsyncd.conf 文件;

pid file = /var/run/rsyncd.pid   注:告訴進(jìn)程寫(xiě)到 /var/run/rsyncd.pid 文件中;
port = 873  注:指定運(yùn)行端口,默認(rèn)是873,您可以自己指定;
address = 192.168.1.171  注:指定服務(wù)器IP地址
uid = nobody   
gid = nobdoy  

注:服務(wù)器端傳輸文件時(shí),要發(fā)哪個(gè)用戶和用戶組來(lái)執(zhí)行,默認(rèn)是nobody。 如果用nobody 用戶和用戶組,可能遇到權(quán)限問(wèn)題,有些文件從服務(wù)器上拉不下來(lái)。所以我就偷懶,為了方便,用了root 。不過(guò)您可以在定義要同步的目錄時(shí)定義的模塊中指定用戶來(lái)解決權(quán)限的問(wèn)題。

use chroot = yes 

注:用chroot,在傳輸文件之前,服務(wù)器守護(hù)程序在將chroot 到文件系統(tǒng)中的目錄中,這樣做的好處是可能保護(hù)系統(tǒng)被安裝漏洞侵襲的可能。缺點(diǎn)是需要超級(jí)用戶權(quán)限。另外對(duì)符號(hào)鏈接文件,將會(huì)排除在外。也就是說(shuō),你在 rsync服務(wù)器上,如果有符號(hào)鏈接,你在備份服務(wù)器上運(yùn)行客戶端的同步數(shù)據(jù)時(shí),只會(huì)把符號(hào)鏈接名同步下來(lái),并不會(huì)同步符號(hào)鏈接的內(nèi)容;這個(gè)需要自己來(lái)嘗 試

read only = yes 

注:read only 是只讀選擇,也就是說(shuō),不讓客戶端上傳文件到服務(wù)器上。還有一個(gè) write only選項(xiàng),自己嘗試是做什么用的吧;

#limit access to private LANs
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 

注:在您可以指定單個(gè)IP,也可以指定整個(gè)網(wǎng)段,能提高安全性。格式是ip 與ip 之間、ip和網(wǎng)段之間、網(wǎng)段和網(wǎng)段之間要用空格隔開(kāi);

max connections = 5   

注:客戶端最多連接數(shù)

motd file = /etc/rsyncd/rsyncd.motd

注:motd file 是定義服務(wù)器信息的,要自己寫(xiě) rsyncd.motd 文件內(nèi)容。當(dāng)用戶登錄時(shí)會(huì)看到這個(gè)信息。比如我寫(xiě)的是:

++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use the mike.org.cn rsync services!
           2002------2009
++++++++++++++++++++++++++++++++++++++++++++++

log file = /var/log/rsync.log

注:rsync 服務(wù)器的日志;

transfer logging = yes

注:這是傳輸文件的日志

log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

B、模塊定義

模塊定義什么呢?主要是定義服務(wù)器哪個(gè)目錄要被同步。每個(gè)模塊都要以[name]形式。這個(gè)名字就是在rsync 客戶端看到的名字,其實(shí)有點(diǎn)象Samba服務(wù)器提供的共享名。而服務(wù)器真正同步的數(shù)據(jù)是通過(guò)path 指定的。我們可以根據(jù)自己的需要,來(lái)指定多個(gè)模塊。每個(gè)模塊要指定認(rèn)證用戶,密碼文件、但排除并不是必須的

下面是前面配置文件模塊的例子:

[rhel4home]  #模塊它為我們提供了一個(gè)鏈接的名字,在本模塊中鏈接到了/home目錄;要用[name] 形式

path = /home    #指定文件目錄所在位置,這是必須指定的 
auth users = root   #認(rèn)證用戶是root  ,是必須在服務(wù)器上存在的用戶
list=yes   #list 意思是把rsync 服務(wù)器上提供同步數(shù)據(jù)的目錄在服務(wù)器上模塊是否顯示列出來(lái)。默認(rèn)是yes 。如果你不想列出來(lái),就no ;如果是no是比較安全的,至少別人不知道你的服務(wù)器上提供了哪些目錄。你自己知道就行了;
ignore errors  #忽略IO錯(cuò)誤
secrets file = /etc/rsyncd.secrets   #密碼存在哪個(gè)文件
comment = linuxsir home  data  #注釋可以自己定義
exclude = beinan/ samba/     

注:exclude是排除的意思,也就是說(shuō),要把/home目錄下的easylife和samba排除在外; easylife/和samba/目錄之間有空格分開(kāi)

[rhel4opt]  
path = /opt 
list=no
comment = optdir   
auth users = beinan  
secrets file = /etc/rsyncd/rsyncd.secrets
ignore errors

四、啟動(dòng)rsync服務(wù)器及防火墻的設(shè)置

啟動(dòng)rsync服務(wù)器相當(dāng)簡(jiǎn)單,有以下幾種方法

A、--daemon參數(shù)方式,是讓rsync以服務(wù)器模式運(yùn)行

#/usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf  #--config用于指定rsyncd.conf的位置,如果在/etc下可以不寫(xiě)

B、xinetd方式

修改services加入如下內(nèi)容
# nano -w /etc/services

rsync  873/tcp  # rsync 
rsync  873/udp  # rsync

這一步一般可以不做,通常都有這兩行(我的RHEL4和GENTOO默認(rèn)都有)。修改的目的是讓系統(tǒng)知道873端口對(duì)應(yīng)的服務(wù)名為rsync。如沒(méi)有的話就自行加入。

設(shè)定 /etc/xinetd.d/rsync, 簡(jiǎn)單例子如下:

# default: off
# description: The rsync server is a good addition to am ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

上述, 主要是要打開(kāi)rsync這個(gè)daemon, 一旦有rsync client要連接時(shí), xinetd會(huì)把它轉(zhuǎn)介給 rsyncd(port 873)。然后service xinetd restart, 使上述設(shè)定生效.

rsync服務(wù)器和防火墻

Linux 防火墻是用iptables,所以我們至少在服務(wù)器端要讓你所定義的rsync 服務(wù)器端口通過(guò),客戶端上也應(yīng)該讓通過(guò)。

#iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
#iptables -L  查看一下防火墻是不是打開(kāi)了 873端口

如果你不太懂防火墻的配置,可以先service iptables stop 將防火墻關(guān)掉。當(dāng)然在生產(chǎn)環(huán)境這是很危險(xiǎn)的,做實(shí)驗(yàn)才可以這么做喲!

五、通過(guò)rsync客戶端來(lái)同步數(shù)據(jù)

A、語(yǔ)法詳解

在配置完rsync服務(wù)器后,就可以從客戶端發(fā)出rsync命令來(lái)實(shí)現(xiàn)各種同步的操作。rsync有很多功能選項(xiàng),下面就對(duì)介紹一下常用的選項(xiàng):

rsync的命令格式可以為:

1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST 
2. rsync [OPTION]... [USER@]HOST:SRC DEST 
3. rsync [OPTION]... SRC [SRC]... DEST 
4. rsync [OPTION]... [USER@]HOST::SRC [DEST] 
5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST 
6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

rsync有六種不同的工作模式:

1. 拷貝本地文件;當(dāng)SRC和DES路徑信息都不包含有單個(gè)冒號(hào)":"分隔符時(shí)就啟動(dòng)這種工作模式。
2.使用一個(gè)遠(yuǎn)程shell程序(如rsh、ssh)來(lái)實(shí)現(xiàn)將本地機(jī)器的內(nèi)容拷貝到遠(yuǎn)程機(jī)器。當(dāng)DST路徑地址包含單個(gè)冒號(hào)":"分隔符時(shí)啟動(dòng)該模式。
3.使用一個(gè)遠(yuǎn)程shell程序(如rsh、ssh)來(lái)實(shí)現(xiàn)將遠(yuǎn)程機(jī)器的內(nèi)容拷貝到本地機(jī)器。當(dāng)SRC地址路徑包含單個(gè)冒號(hào)":"分隔符時(shí)啟動(dòng)該模式。
4. 從遠(yuǎn)程rsync服務(wù)器中拷貝文件到本地機(jī)。當(dāng)SRC路徑信息包含"::"分隔符時(shí)啟動(dòng)該模式。
5. 從本地機(jī)器拷貝文件到遠(yuǎn)程rsync服務(wù)器中。當(dāng)DST路徑信息包含"::"分隔符時(shí)啟動(dòng)該模式。
6. 列遠(yuǎn)程機(jī)的文件列表。這類似于rsync傳輸,不過(guò)只要在命令中省略掉本地機(jī)信息即可。
-a 以archive模式操作、復(fù)制目錄、符號(hào)連接 相當(dāng)于-rlptgoD

rsync中的參數(shù)

-r 是遞歸 
-l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有權(quán)限;-t 保持文件原有時(shí)間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當(dāng)于塊設(shè)備文件;
-z 傳輸時(shí)壓縮;
-P 傳輸進(jìn)度;
-v 傳輸時(shí)的進(jìn)度等信息,和-P有點(diǎn)關(guān)系,自己試試??梢钥次臋n;
-e ssh的參數(shù)建立起加密的連接。
-u只進(jìn)行更新,防止本地新文件被重寫(xiě),注意兩者機(jī)器的時(shí)鐘的同時(shí)
--progress是指顯示出詳細(xì)的進(jìn)度情況
--delete是指如果服務(wù)器端刪除了這一文件,那么客戶端也相應(yīng)把文件刪除,保持真正的一致
--password-file=/password/path/file來(lái)指定密碼文件,這樣就可以在腳本中使用而無(wú)需交互式地輸入驗(yàn)證密碼了,這里需要注意的是這份密碼文件權(quán)限屬性要設(shè)得只有屬主可讀。

B、一些實(shí)例

B1、列出rsync 服務(wù)器上的所提供的同步內(nèi)容;

首先:我們看看rsync服務(wù)器上提供了哪些可用的數(shù)據(jù)源

# rsync  --list-only  root@192.168.145.5::
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use the mike.org.cn rsync services!
             2002------2009
++++++++++++++++++++++++++++++++++++++++++++++

rhel4home       This is RHEL 4 data

注:前面是rsync所提供的數(shù)據(jù)源,也就是我們?cè)趓syncd.conf中所寫(xiě)的[rhel4home]模塊。而“This is RHEL 4 data”是由[rhel4home]模塊中的 comment = This is RHEL 4 data 提供的;為什么沒(méi)有把rhel4opt數(shù)據(jù)源列出來(lái)呢?因?yàn)槲覀冊(cè)赱rhel4opt]中已經(jīng)把list=no了。

$ rsync  --list-only  root@192.168.145.5::::rhel4home 

++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use the mike.org.cn rsync services!
             2002------2009
++++++++++++++++++++++++++++++++++++++++++++++

Password: 
drwxr-xr-x        4096 2009/03/15 21:33:13 .
-rw-r--r--        1018 2009/03/02 02:33:41 ks.cfg
-rwxr-xr-x       21288 2009/03/15 21:33:13 wgetpaste
drwxrwxr-x        4096 2008/10/28 21:04:05 cvsroot
drwx------        4096 2008/11/30 16:30:58 easylife
drwsr-sr-x        4096 2008/09/20 22:18:05 giddir
drwx------        4096 2008/09/29 14:18:46 quser1
drwx------        4096 2008/09/27 14:38:12 quser2
drwx------        4096 2008/11/14 06:10:19 test
drwx------        4096 2008/09/22 16:50:37 vbird1
drwx------        4096 2008/09/19 15:28:45 vbird2

后面的root@ip中,root是指定密碼文件中的用戶名,之后的::rhel4home這是rhel4home模塊名

B2、rsync客戶端同步數(shù)據(jù);

#rsync -avzP root@192.168.145.5::rhel4home rhel4home
Password: 這里要輸入root的密碼,是服務(wù)器端rsyncd.secrets提供的。在前面的例子中我們用的是mike,輸入的密碼并不回顯,輸好就回車(chē)。

注: 這個(gè)命令的意思就是說(shuō),用root用戶登錄到服務(wù)器上,把rhel4home數(shù)據(jù),同步到本地當(dāng)前目錄rhel4home上。當(dāng)然本地的目錄是可以你自己 定義的。如果當(dāng)你在客戶端上當(dāng)前操作的目錄下沒(méi)有rhel4home這個(gè)目錄時(shí),系統(tǒng)會(huì)自動(dòng)為你創(chuàng)建一個(gè);當(dāng)存在rhel4home這個(gè)目錄中,你要注意 它的寫(xiě)權(quán)限。

#rsync -avzP  --delete linuxsir@linuxsir.org::rhel4home   rhel4home

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

設(shè)定 rsync client

設(shè)定密碼文件

#rsync -avzP  --delete  --password-file=rsyncd.secrets   root@192.168.145.5::rhel4home rhel4home

這次我們加了一個(gè)選項(xiàng) --password-file=rsyncd.secrets,這是當(dāng)我們以root用戶登錄rsync服務(wù)器同步數(shù)據(jù)時(shí),密碼將讀取rsyncd.secrets這個(gè)文件。這個(gè)文件內(nèi)容只是root用戶的密碼。我們要如下做;

# touch rsyncd.secrets
# chmod 600 rsyncd.secrets
# echo "mike"> rsyncd.secrets

# rsync -avzP  --delete  --password-file=rsyncd.secrets   root@192.168.145.5::rhel4home rhel4home

注:這里需要注意的是這份密碼文件權(quán)限屬性要設(shè)得只有屬主可讀。

這樣就不需要密碼了;其實(shí)這是比較重要的,因?yàn)榉?wù)器通過(guò)crond 計(jì)劃任務(wù)還是有必要的;

B3、讓rsync客戶端自動(dòng)與服務(wù)器同步數(shù)據(jù)

服務(wù)器是重量級(jí)應(yīng)用,所以數(shù)據(jù)的網(wǎng)絡(luò)備份還是極為重要的。我們可以在生產(chǎn)型服務(wù)器上配置好rsync 服務(wù)器。我們可以把一臺(tái)裝有rysnc機(jī)器當(dāng)做是備份服務(wù)器。讓這臺(tái)備份服務(wù)器,每天在早上4點(diǎn)開(kāi)始同步服務(wù)器上的數(shù)據(jù);并且每個(gè)備份都是完整備份。有時(shí) 硬盤(pán)壞掉,或者服務(wù)器數(shù)據(jù)被刪除,完整備份還是相當(dāng)重要的。這種備份相當(dāng)于每天為服務(wù)器的數(shù)據(jù)做一個(gè)鏡像,當(dāng)生產(chǎn)型服務(wù)器發(fā)生事故時(shí),我們可以輕松恢復(fù)數(shù) 據(jù),能把數(shù)據(jù)損失降到最低;是不是這么回事??

step1:創(chuàng)建同步腳本和密碼文件

#mkdir   /etc/cron.daily.rsync
#cd  /etc/cron.daily.rsync 
#touch rhel4home.sh  rhel4opt.sh 
#chmod 755 /etc/cron.daily.rsync/*.sh  
#mkdir /etc/rsyncd/
#touch /etc/rsyncd/rsyncrhel4root.secrets
#touch /etc/rsyncd/rsyncrhel4easylife.secrets
#chmod 600  /etc/rsyncd/rsync.*

注: 我們?cè)?/etc/cron.daily/中創(chuàng)建了兩個(gè)文件rhel4home.sh和rhel4opt.sh ,并且是權(quán)限是755的。創(chuàng)建了兩個(gè)密碼文件root用戶用的是rsyncrhel4root.secrets ,easylife用戶用的是 rsyncrhel4easylife.secrets,權(quán)限是600;

我們編輯rhel4home.sh,內(nèi)容是如下的:

#!/bin/sh
#backup 192.168.145.5:/home 
/usr/bin/rsync   -avzP  --password-file=/etc/rsyncd/rsyncrhel4root.password   root@192.168.145.5::rhel4home   /home/rhel4homebak/$(date +'%m-%d-%y')

我們編輯 rhel4opt.sh ,內(nèi)容是:

#!/bin/sh
#backup 192.168.145.5:/opt 
/usr/bin/rsync   -avzP  --password-file=/etc/rsyncd/rsyncrhel4easylife.secrets    easylife@192.168.145.5::rhel4opt   /home/rhel4hoptbak/$(date +'%m-%d-%y')

注:你可以把rhel4home.sh和rhel4opt.sh的內(nèi)容合并到一個(gè)文件中,比如都寫(xiě)到rhel4bak.sh中;

接著我們修改 /etc/rsyncd/rsyncrhel4root.secrets和rsyncrhel4easylife.secrets的內(nèi)容;

# echo "mike" > /etc/rsyncd/rsyncrhel4root.secrets
# echo "keer"> /etc/rsyncd/rsyncrhel4easylife.secrets

然后我們?cè)?home目錄下創(chuàng)建rhel4homebak 和rhel4optbak兩個(gè)目錄,意思是服務(wù)器端的rhel4home數(shù)據(jù)同步到備份服務(wù)器上的/home/rhel4homebak 下,rhel4opt數(shù)據(jù)同步到 /home/rhel4optbak/目錄下。并按年月日歸檔創(chuàng)建目錄;每天備份都存檔;

#mkdir /home/rhel4homebak
#mkdir /home/rhel4optbak

step2:修改crond服務(wù)器的配置文件 加入到計(jì)劃任務(wù)

#crontab  -e

加入下面的內(nèi)容:

# Run daily cron jobs at 4:10 every day  backup rhel4 data:  
10 4 * * * /usr/bin/run-parts   /etc/cron.daily.rsync   1> /dev/null

注:第一行是注釋,是說(shuō)明內(nèi)容,這樣能自己記住。
第二行表示在每天早上4點(diǎn)10分的時(shí)候,運(yùn)行 /etc/cron.daily.rsync 下的可執(zhí)行腳本任務(wù);

配置好后,要重啟crond 服務(wù)器;

# killall crond    注:殺死crond 服務(wù)器的進(jìn)程;
# ps aux |grep crond  注:查看一下是否被殺死;
# /usr/sbin/crond    注:?jiǎn)?dòng) crond 服務(wù)器;
# ps aux  |grep crond  注:查看一下是否啟動(dòng)了?
root      3815  0.0  0.0   1860   664 ?        S    14:44   0:00 /usr/sbin/crond
root      3819  0.0  0.0   2188   808 pts/1    S+   14:45   0:00 grep crond

六、FAQ

Q:如何通過(guò)ssh進(jìn)行rsync,而且無(wú)須輸入密碼?

A:可以通過(guò)以下幾個(gè)步驟

1. 通過(guò)ssh-keygen在server A上建立SSH keys,不要指定密碼,你會(huì)在~/.ssh下看到identity和identity.pub文件 
2. 在server B上的home目錄建立子目錄.ssh
3. 將A的identity.pub拷貝到server B上
4. 將identity.pub加到~[user b]/.ssh/authorized_keys
5. 于是server A上的A用戶,可通過(guò)下面命令以用戶B ssh到server B上了。e.g. ssh -l userB serverB。這樣就使server A上的用戶A就可以ssh以用戶B的身份無(wú)需密碼登陸到server B上了。

Q:如何通過(guò)在不危害安全的情況下通過(guò)防火墻使用rsync?

A:解答如下:

這通常有兩種情況,一種是服務(wù)器在防火墻內(nèi),一種是服務(wù)器在防火墻外。無(wú)論哪種情況,通常還是使用ssh,這時(shí)最好新建一個(gè)備份用戶,并且配置sshd 僅允許這個(gè)用戶通過(guò)RSA認(rèn)證方式進(jìn)入。如果服務(wù)器在防火墻內(nèi),則最好限定客戶端的IP地址,拒絕其它所有連接。如果客戶機(jī)在防火墻內(nèi),則可以簡(jiǎn)單允許防 火墻打開(kāi)TCP端口22的ssh外發(fā)連接就ok了。

Q:我能將更改過(guò)或者刪除的文件也備份上來(lái)嗎?

A:當(dāng)然可 以。你可以使用如:rsync -other -options -backupdir = ./backup-2000-2-13  ...這樣的命令來(lái)實(shí)現(xiàn)。這樣如果源文件:/path/to/some/file.c改變了,那么舊的文件就會(huì)被移到./backup- 2000-2-13/path/to/some/file.c,這里這個(gè)目錄需要自己手工建立起來(lái)

Q:我需要在防火墻上開(kāi)放哪些端口以適應(yīng)rsync?

A:視情況而定。rsync可以直接通過(guò)873端口的tcp連接傳文件,也可以通過(guò)22端口的ssh來(lái)進(jìn)行文件傳遞,但你也可以通過(guò)下列命令改變它的端口:

rsync --port 8730 otherhost::
或者
rsync -e 'ssh -p 2002' otherhost:

Q:我如何通過(guò)rsync只復(fù)制目錄結(jié)構(gòu),忽略掉文件呢?

A:rsync -av --include '*/' --exclude '*' source-dir dest-dir

Q:為什么我總會(huì)出現(xiàn)"Read-only file system"的錯(cuò)誤呢?

A:看看是否忘了設(shè)"read only = no"了

Q:為什么我會(huì)出現(xiàn)'@ERROR: invalid gid'的錯(cuò)誤呢?

A:rsync使用時(shí)默認(rèn)是用uid=nobody;gid=nobody來(lái)運(yùn)行的,如果你的系統(tǒng)不存在nobody組的話,就會(huì)出現(xiàn)這樣的錯(cuò)誤,可以試試gid = ogroup或者其它

Q:綁定端口873失敗是怎么回事?
A:如果你不是以root權(quán)限運(yùn)行這一守護(hù)進(jìn)程的話,因?yàn)?024端口以下是特權(quán)端口,會(huì)出現(xiàn)這樣的錯(cuò)誤。你可以用--port參數(shù)來(lái)改變。

Q:為什么我認(rèn)證失???
A:從你的命令行看來(lái):你用的是

> bash$ rsync -a 144.16.251.213::test test
> Password:
> @ERROR: auth failed on module test 

> I dont understand this. Can somebody explain as to how to acomplish this.
> All suggestions are welcome.

應(yīng)該是沒(méi)有以你的用戶名登陸導(dǎo)致的問(wèn)題,試試rsync -a max@144.16.251.213::test test

Q: 出現(xiàn)以下這個(gè)訊息, 是怎么一回事?
@ERROR: auth failed on module xxxxx
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)

A: 這是因?yàn)槊艽a設(shè)錯(cuò)了, 無(wú)法登入成功, 請(qǐng)?jiān)贆z查一下 rsyncd.secrets 中的密碼設(shè)定, 二端是否一致?

Q: 出現(xiàn)以下這個(gè)訊息, 是怎么一回事?

password file must not be other-accessible 
continuing without password file 
Password:

A: 這表示 rsyncd.secrets 的檔案權(quán)限屬性不對(duì), 應(yīng)設(shè)為 600。請(qǐng)下 chmod 600 rsyncd.secrets

Q: 出現(xiàn)以下這個(gè)訊息, 是怎么一回事?

@ERROR: chroot failed
rsync: connection unexpectedly closed (75 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)

A: 這通常是您的 rsyncd.conf 中的 path 路徑所設(shè)的那個(gè)目錄并不存在所致.請(qǐng)先用 mkdir開(kāi)設(shè)好備份目錄.

g. 服務(wù)器端文件詳細(xì)

如何配置RSync文件備份同步Linux服務(wù)器

5.2. 客戶端配置

a. 客戶端安裝rsync

# yum -y install rsync

b. 通過(guò)rsync客戶端來(lái)同步數(shù)據(jù)

場(chǎng)景一:

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

如何配置RSync文件備份同步Linux服務(wù)器

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

說(shuō)明:
-a 參數(shù),相當(dāng)于-rlptgoD,-r 是遞歸 -l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有權(quán)限;-t 保持文件原有時(shí)間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當(dāng)于塊設(shè)備文件;
-z 傳輸時(shí)壓縮;
-P 傳輸進(jìn)度;
-v 傳輸時(shí)的進(jìn)度等信息,和-P有點(diǎn)關(guān)系,自己試試??梢钥次臋n;

場(chǎng)景二:
# rsync -avzP  --delete david@172.16.1.135::davidhome  /tmp/david/

如何配置RSync文件備份同步Linux服務(wù)器

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

場(chǎng)景三:
# rsync -avzP  --delete  --password-file=/tmp/rsync.password  david@172.16.1.135::davidhome  /tmp/david/

如何配置RSync文件備份同步Linux服務(wù)器

這次我們加了一個(gè)選項(xiàng) –password-file=rsync.password ,這時(shí)當(dāng)我們以david用戶登錄rsync服務(wù)器同步數(shù)據(jù)時(shí),密碼將讀取 /tmp/rsync.password 這個(gè)文件。這個(gè)文件內(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/

注: 這樣就不需要密碼了;其實(shí)這是比較重要的,因?yàn)榉?wù)器通過(guò)crond 計(jì)劃任務(wù)還是有必要的;

到此,關(guān)于“如何配置RSync文件備份同步Linux服務(wù)器”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI