Linux rsync配置用於伺服器之間傳輸大量的資料

haoge0205發表於2018-06-11

Linux的rsync 配置,用於伺服器之間遠端傳大量的資料

【教程主題】:rsync

【課程錄製】: 創E

【主要內容】

【1】 rsync介紹

Rsync(Remote Synchronize) 是一個遠端資料同步工具,可透過LAN/WAN快速同步多臺主機,Rsync使用所為的“Rsync演演算法”來使本地主機和遠端主機之間達到同步,這個演演算法並不是每次都整份傳送,它只傳送兩臺計算機之間所備份的資料不同的部分,因此速度相當快。

Rsync的優點如下:

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

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

3、無須特使許可權即可安裝。

4、擁有最佳化的流程,檔案傳輸效率高。

5、可以使用RshSSH等方式來傳輸檔案,當然也可以直接透過Socket連線。

6、支援匿名傳輸。

         另外,與SCP相比,傳輸速度不是一個層次級的。我們在區域網時經常用RsyncSCP傳輸大量Mysql資料,發現Rsync至少比Scp20倍以上,所以大家如果需要在Linux/Unix伺服器之間互傳海量資料,Rsync是非常好的選擇。

 

【2】 rsync服務端方式

首先檢查rsync是否安裝:

rpm –q rsync

rsync-2.6.8-3.1

說明rsync已安裝,如果提示出現 package rsync is not installed  則說明這個軟體報沒有安裝大家可以使用yum進行安裝

另外,關閉防火牆和SElinux,因為是內網中傳輸,所以這些沒必要

service iptables stop && chkconfig iptables off 

setenforce 0

 

 

配置檔案/etc/rsyncd.conf。這個檔案是自己定義的,並不是系統建立的,當然你也可以叫不同的名字,後面再寫上詳細註釋。

uid = nobody

gid = nobody

user chroot = no

max connections = 200

timeout = 600

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsyncd.lock

log file = /var/log/rsyncd.log

[backup]

path=/backup/

ignore errors

read only = no

list = no

hosts allow = 192.168.0.0/255.255.255.0

auth users = test

secrets file = /etc/rsyncd.password

註釋:

uid = nobody

進行備份的使用者,nobody 為任何使用者

gid = nobody 

進行備份的組,nobody為任意組

use chroot = no

如果"use chroot"指定為true,那麼rsync在傳輸檔案以前首先chroot到path引數所指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要以root許可權,並且不能備份指向外部的符號連線所指向的目錄檔案。預設情況下chroot值為true.但是這個一般不需要,我選擇no或false

list = no

不允許列清單

max connections = 200 

最大連線數

timeout = 600 

覆蓋客戶指定的IP超時時間,也就是說rsync伺服器不會永遠等待一個崩潰的客戶端。

pidfile = /var/run/rsyncd.pid  

pid檔案的存放位置

lock file = /var/run/rsync.lock  

鎖檔案的存放位置

log file = /var/log/rsyncd.log   

日誌檔案的存放位置

[backup]  

這裡是認證模組名,即跟samba語法一樣,是對外公佈的名字

path = /backup/

這裡是參與同步的目錄

ignore errors  

可以忽略一些無關的IO錯誤

read only = no

允許可讀可寫

list = no

不允許列清單

hosts allow = 192.168.1.0/255.255.255.0

這裡跟samba的語法是一樣的,只允許192.168.21.0/24的網段進行同步,拒絕其它一切

auth users = test 

認證的使用者名稱

secrets file = /etc/rsyncd.password  

密碼檔案存放地址

注意: 

1、[backup]  認證模組名和 path = /backup/ 參與同步的目錄

這裡的path 大家要記好了,這裡不要隨便的一設定就直接完事,要知道這裡是認證模組的,以後從客戶機備份的資料會儲存在這裡。

2、auth users = redhat 認證的使用者名稱 

這個名字是伺服器端實實在在存在使用者,大家不要直接跟步驟走卻忽略了這點。如果伺服器端少了這個的話我估計你的資料同步就實現不了,大家要謹記。

3、path = /backup/ 參與同步的目錄

這個需要稍後自己要在根目錄下自己建

cd /

mkdir backup

chmod –R 777 /backup

echo “test:test” > /etc/rsync.password

(這裡我設定的是使用者名稱和密碼一致)

為了安全起見,我設定他的許可權為600

chmod 600 /etc/rsync.password

 

啟動配置

 

[root@test rsync-3.0.4]# vim /etc/xinetd.d/rsync 

配置rsync servervi /etc/xinetd.d/rsync
disable=yes改為no

service rsync
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

 


[root@test home]# /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]

如果xinetd沒有的話,需要安裝一下
[root@test home]# yum -y install xinetd


  RSYNC服務端啟動的兩種方法:
啟動rsync服務端(獨立啟動)
[root@test home]# /usr/bin/rsync --daemon    on

 

 


啟動rsync服務端 (有xinetd超級程式啟動)
[root@test home]# /etc/init.d/xinetd reload

配置rsync自動啟動
[root@test etc]# chkconfig rsync on
[root@test etc]# chkconfig rsync --list
rsync 


加入rc.local
在各種作業系統中,rc檔案存放位置不盡相同,可以修改使系統啟動時把rsync --daemon載入進去。
[root@test home]# vi /etc/rc.local
/usr/local/rsync –daemon           #加入一行

 

客戶端配置:

echo “test” > /etc/rsyncd.password

這裡僅僅只需要密碼,不需要使用者了,免得要同步時還要手動互動

chmod 600 /etc/rsync.password

測試:下面delete表示刪除目標存在而源目錄不存在的檔案的命令

rsync -vzrtop --delete /home/ce test@192.168.0.206::backup --password-file=/etc/rsyncd.password

從伺服器上下載檔案a:打包,v:詳細資訊,z壓縮

rsync -avz --password-file=/etc/rsyncd.password test@192.168.0.206::backup /home/

從本地上傳到伺服器上去

rsync -avz --password-file=/etc/rsyncd.password /home test@192.168.0.206::backup

 

 

 

 

【3】rsync客戶端方式

常用:rsync -av

下載:rsync [引數]  遠端檔案(遠端路徑)  本地目錄  

上傳:rsync [引數]  本地檔案              遠端目錄

rsync常用引數

如果不需要互動式的操作,rsync平時也可以像scp那樣工作,下列為常用rsync引數。

例子: rsync -av test@192.168.1.122:/home/test/3.txt .

表示將服務192.168.1.122/home/test/3.txt檔案複製到本客戶度的當前目錄其中“.”表示當前目錄


-a, --archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD 

-v --verbose:詳細模式輸出
-r --recursive:對子目錄以返回模式處理。
-p --perms:保持檔案許可權
-o --owner:保持檔案屬主資訊
-g --group:保持檔案組資訊
-t --times:保持檔案時間資訊
--delete:刪除哪些DST中存在而SRC中不存在的檔案或目錄
--delete-excluded:同樣刪除接收端哪些該選項制定排出的檔案
-z --compress:對備份的檔案在傳輸時進行壓縮處理
--exclude=PATTERN:制定排除不需要傳輸的檔案
--include=PATTERN:制定不排除需要傳輸的檔案
--exclude-from=FILE:排除FILE中制定模式的檔案
--include-from=FILE:不排除FILE中制定模式匹配的檔案

 

----------------------------------------------------------------------

說明:從理論上將這個是行的通的,因為任何伺服器都可以遠端連線的,那麼只要知道了ip,使用者名稱,密碼,就可以進入到伺服器,就可以檢視伺服器中的檔案

這個當然就可以複製下來,然後另一臺伺服器又能登入,所以最原始的就可以將源伺服器的檔案複製到本地,然後上傳到另一臺伺服器,rsync,相當於省掉中間一步

就是直接將源伺服器的檔案傳到另一臺伺服器,當然需要配置下,有兩種方式

第一種:伺服器方式,需要配置一臺伺服器作為伺服器(假裝看做伺服器,其實兩個都是伺服器),然後配置一個bakup檔案,配置一個使用者名稱和密碼,專門用來被遠端連線

如果說的專業點,backup就是所謂的認證模組,使用者名稱和密碼檔案就是所謂的認證檔案,然後客戶端,也需要配置一個金鑰就是源伺服器對應的使用者的密碼,然後在傳輸的過程

中就設定下使用者,ip引數,就相當於源伺服器的使用者名稱,密碼,ip都有了,所以就可以傳輸了


轉自:https://www.cnblogs.com/sengling/p/5281481.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2155942/,如需轉載,請註明出處,否則將追究法律責任。

相關文章