天天看點

nfs

Rsync伺服器的安裝與配置詳解                 2016-12-26 20:06:51

标簽:伺服器 主機

一、Rsync簡介

1.1什麼是Rsync

Rsync是一款快速的,開源的,多功能的,可以實作全量和增量的遠端和本地的資料同步和資料備份的工具。

全量的概念是:全部備份。

增量的概念是:差異化備份。對上一次基礎上,對更新的部分作備份。

1.1.2    Rsync簡介

   Rsync具有可以使本地和遠端的兩台主機之間的資料快速同步鏡像遠端備份的功能,這個功能類似ssh帶scp的指令,但是有優于scp的功能,scp每次都是全量拷貝,而rsync是增量拷貝。

   Rsync還可以在本地主機的不同檔案或者目錄之間全量和增量的複制,類似于cp指令,cp指令是全量拷貝,而rsync是增量拷貝。

   Rsync還可以實作删除檔案和目錄的功能,相當于rm指令

   一個rsync相當于scp,cp,rm指令,并且還憂于他們每個指令,因為rsync具有增量備份的功能。

1.1.3  rsync的特性:

  1)支援拷貝特殊檔案如連結檔案,裝置等

  2)可以有排除指定檔案或者目錄同步的功能,相當于打包指令tar的排除功能。

  3)可以做到保持原檔案或者目錄的權限,時間,軟硬連結,屬組,主等所有屬性均不改變

  4)可以實作增量備份,既隻同步發生變化的資料

  5)可以勇士rcp,rsh,ssh等方式來配合傳輸檔案

  6)可以通過socket傳輸檔案和資料

  7)支援匿名的認證模式傳輸

1.1.4  rsync三種工作方式

1)本地模式,相當于cp和rm指令

1

2

3

4

5

6

7

8

9

[root@

rsync

tmp]

# rsync /etc/passwd /tmp/    ##相當于cp的指令

[root@

rsync

tmp]

# ls

passwd

[root@

rsync

mnt]

# rsync -avz --delete passwd  /mnt/  ##--delete相當于删除的功能

[root@

rsync

mnt]

# ls

passwd

--delete的作用是删除的功能,本地有什麼,遠端就有什麼。比如本地有

passwd

的内容,不管

/mnt

目錄下面有什麼,都隻有

passwd

的内容,所有謹慎用--delete

2)通道模式,一般配合ssh key免秘鑰使用,結合定時任務

[root@

rsync

mnt]

# rsync -avz -e  'ssh -p 22' /etc/passwd [email protected]:/tmp/  

[email protected]'s password: 

sending incremental 

file

list

passwd

[root@nfs tmp]

# ls ##在遠端檢視

passwd

3)daemon模式

1.1.5 rsync的參數說明

-v :詳細輸出

-z :傳輸時進行壓縮以提高傳輸效率。

-a :歸檔模式,表示以遞歸的方式傳輸檔案,并保持檔案的屬性

--exclude :排除不需要同步傳輸的檔案或者目錄

--delete: 讓目标目錄和源目錄的資料一緻

--bwlimit: 限制帶寬,預設機關是:kb(案例:某DBA做資料同步,導緻使用者無法通路網站)

二、Rsync伺服器的安裝

2.1安裝準備

2.1.1檢視rsync的版本号

10

11

[root@

rsync

~]

# rsync --version

rsync

version 3.0.6  protocol version 30

Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.

Web site: http:

//rsync

.samba.org/

Capabilities:

64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,

socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,

append, ACLs, xattrs, iconv, symtimes

rsync

comes with ABSOLUTELY NO WARRANTY.  This is 

free

software, and you

are welcome to redistribute it under certain conditions.  See the GNU

General Public Licence 

for

details.

2.1.2 檢視伺服器的核心,版本資訊

[root@

rsync

~]

# cat /etc/redhat-release 

CentOS release 6.7 (Final)

[root@

rsync

~]

# uname -r

2.6.32-573.el6.x86_64

[root@

rsync

~]

# uname -m

x86_64

2.2主要講一下通過daemon實作資料同步案例

/etc/rsyncd.conf是rsync的預設配置檔案,該配置檔案不存在,需要編輯内容

12

13

14

15

16

17

18

19

20

21

22

[root@oldboy ~]

# cat /etc/rsyncd.conf 

#rsync_config_____________________________start

#created by oldboy 15:01 2007-6-5

##rsyncd.conf start##

uid = 

rsync

##程序對應的使用者,是虛拟使用者。遠端的指令使用rsync通路共享目錄

gid = 

rsync

##程序對應的使用者組。

use chroot = no    

##安全相關

max connections = 200      

##最大連接配接數

timeout = 300    

##逾時時間

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 = 

false

##可寫

list = 

false

##不能清單

hosts allow = 172.16.1.0

/24

##允許的ip位址

##hosts deny = 0.0.0.0/32

auth 

users

= rsync_backup     

##虛拟使用者

secrets 

file

/etc/rsync

.password    

###虛拟密碼

#rsync_config________________________end

其中rsync使用者預設是不存在的,需要建立使用者

[root@

rsync

~]

# useradd rsync -s /sbin/nologin -M

[root@

rsync

~]

# cat  /etc/passwd|grep rsync

rsync

:x:501:501::

/home/rsync

:

/sbin/nologin

[root@

rsync

~]

# id rsync

uid=501(

rsync

) gid=501(

rsync

) 組=501(

rsync

)

為什麼用虛拟使用者?

應答:檔案和程序都要滿足屬主的要求,檔案和程序的存在一定是需要使用者的,也是為了安全問題。

建立/backup目錄,并且屬主和屬組都屬于rsync

[root@

rsync

~]

# mkdir /backup/ -p

[root@

rsync

~]

# chown -R rsync.rsync /backup/

[root@

rsync

~]

# ls -ld /backup/

drwxr-xr-x 2 

rsync

rsync

4096 12月  9 2016 

/backup/

建立配置檔案/etc/rsync.password,預設不存在這個配置檔案

[root@

rsync

~]

# cat /etc/rsync.password 

rsync_backup:oldboy

[root@

rsync

~]

#chmod 600 /etc/rsync.password

[root@

rsync

~]

# ls -l /etc/rsync.password 

-rw-------. 1 root root 20 11月 29 01:14 

/etc/rsync

.password

啟動服務:

[root@

rsync

~]

# rsync --daemon 

[root@

rsync

~]

#ps -ef|grep rsync|grep -v grep ##檢視程序有沒有啟動

root       3046      1  0 15:19 ?        00:00:00

加入開機自啟動

[root@

rsync

~]

# tail -1 /etc/rc.local 

/usr/bin/rsync

--daemon

三、Rsync用戶端的安裝

編輯配置檔案/etc/rsync.passwd,該配置檔案預設不存在

vim  

/etc/rsync

.

passwd

[root@oldboy backup]

# cat /etc/rsync.password 

oldboy

chmod

600 

/etc/rsync

.

passwd

建立backup目錄

mkdir

-p 

/backup

cd

/backup

touch

stu{01,100}

用戶端推送:

方法1:

[root@oldboy backup]

# rsync -avz /backup/ [email protected]::backup/ --password-file=/etc/rsync.password 

方法2:

[root@oldboy backup]

# rsync -avz /backup/ rsync://[email protected]/backup/ --password-file=/etc/rsync.password

 從用戶端把服務端的東西拉回來的方案

服務端:

[root@oldboy backup]

# touch 1 234

[root@oldboy backup]

# ls

1  234

用戶端:

[root@oldboy ming]

# rsync -avz   [email protected]::backup/ /ming/  --password-file=/etc/rsync.password 

receiving incremental 

file

list

./

1

234

sent 105 bytes  received 204 bytes  618.00 bytes

/sec

total size is 0  speedup is 0.00

[root@oldboy ming]

# ls

1  234

四、Rsync多子產品實戰

1.1.1 多子產品實戰

執行個體1:

環境:

23

24

[root@oldboy ~]

# cat /etc/rsyncd.conf

#rsync_config_____________________________start

#created by oldboy 15:01 2007-6-5

##rsyncd.conf start##

uid = 

rsync

gid = 

rsync

use chroot = no    

max connections = 200      

timeout = 300    

pid 

file

/var/run/rsyncd

.pid     

lock 

file

/var/run/rsyncd

.lock     

log 

file

/var/log/rsyncd

.log

ignore errors

read

only = 

false

list = 

false

hosts allow = 172.16.1.0

/24

hosts deny = 0.0.0.0

/32

auth 

users

= rsync_backup

secrets 

file

/etc/rsync

.password       

[backup]     

path = 

/backup

[chen]

path = 

/chen

#rsync_config________________________end

伺服器端:

[root@oldboy ~]

# mkdir /chen

[root@oldboy ~]

# ls -ld /chen/

drwxr-xr-x 2 

rsync

rsync

4096 12月  2 18:58 

/chen/

用戶端

[root@oldboy ~]

# ls -ld /ming

drwxr-xr-x 2 root root 4096 12月  2 18:26 

/ming

[root@oldboy ~]

# rsync -avz /ming/ [email protected]::chen/ --password-file=/etc/rsync.password 

sending incremental 

file

list

./

ming1

ming10

ming2

ming3

ming4

ming5

ming6

ming7

ming8

ming9

sent 463 bytes  received 201 bytes  1328.00 bytes

/sec

total size is 0  speedup is 0.00

服務端檢視效果:

[root@oldboy chen]

# ls

ming1  ming10  ming2  ming3  ming4  ming5  ming6  ming7  ming8  ming9

執行個體2:

25

26

27

28

[root@oldboy chen]

# cat /etc/rsyncd.conf

#rsync_config_____________________________start

#created by oldboy 15:01 2007-6-5

##rsyncd.conf start##

uid = 

rsync

gid = 

rsync

use chroot = no    

max connections = 200      

timeout = 300    

pid 

file

/var/run/rsyncd

.pid     

lock 

file

/var/run/rsyncd

.lock     

log 

file

/var/log/rsyncd

.log

ignore errors

read

only = 

false

list = 

false

hosts allow = 172.16.1.0

/24

hosts deny = 0.0.0.0

/32

auth 

users

= rsync_backup

secrets 

file

/etc/rsync

.password       

[backup]     

path = 

/backup

[chen]

path = 

/chen

[luo]

path = 

/luo

ignore errors

read

only = 

false

list = 

false

hosts allow = 172.16.1.0

/24

hosts deny = 0.0.0.0

/32

auth 

users

= tang

secrets 

file

/etc/tang

#rsync_config________________________end

[root@oldboy chen]

# mkdir /luo

[root@oldboy chen]

# chown rsync.rsync /luo

[root@oldboy chen]

# ls -ld /luo/

drwxr-xr-x 2 

rsync

rsync

4096 12月  2 19:18 

/luo/

[root@oldboy chen]

# cat /etc/tang 

tang:tangguo

[root@oldboy luo]

# ls /etc/tang  -ld

-rw------- 1 root root 13 12月  2 19:34 

/etc/tang

權限一定要是600

用戶端配置:

[root@oldboy ming]

# cat /etc/tang 

tangguo

[root@oldboy ming]

# ls /etc/tang -ld

-rw------- 1 root root 8 12月  2 19:35 

/etc/tang

用戶端權限也一定要是600

[root@oldboy ming]

# rsync -avz /ming/ [email protected]::luo/  --password-file=/etc/tang 

sending incremental 

file

list

./

ming1

ming10

ming2

ming3

ming4

ming5

ming6

ming7

ming8

ming9

sent 463 bytes  received 201 bytes  1328.00 bytes

/sec

total size is 0  speedup is 0.00

五、Rsync案例排錯

5.1 案例1

[root@oldboy ming]

# rsync -avz /ming/ [email protected]::luo/  --password-file=/etc/tang 

@ERROR: auth failed on module luo

rsync

error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

[root@oldboy luo]

# tail -3 /var/log/rsyncd.log 

2016

/12/02

19:46:18 [3601] secrets 

file

must not be other-accessible (see strict modes option)

2016

/12/02

19:46:18 [3601] continuing without secrets 

file

2016

/12/02

19:46:18 [3601] auth failed on module luo from unknown (172.16.1.31): missing secret 

for

user 

"tang"

報錯的原因是伺服器端的

/etc/tang

的權限問題沒有設定為600,我們檢視一下。

[root@oldboy luo]

# ls -ld /etc/tang 

-rwxr-xr-x 1 root root 13 12月  2 19:34 

/etc/tang

權限改為600就可以了

5.2 案例2

[root@oldboy ~]

# rsync -avz /ming/ [email protected]::luo/  --password-file=/etc/tang 

@ERROR: auth failed on module luo

rsync

error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

檢視日志

[root@oldboy luo]

# tail -3 /var/log/rsyncd.log 

2016

/12/02

19:52:12 [3614] name lookup failed 

for

172.16.1.31: Name or service not known

2016

/12/02

19:52:12 [3614] connect from UNKNOWN (172.16.1.31)

2016

/12/02

19:52:12 [3614] auth failed on module luo from unknown (172.16.1.31): password mismatch

password mismatch,密碼錯誤,用戶端和伺服器端的密碼不一緻導緻的問題。

【注意】有的用戶端和伺服器端密碼看起來一樣,實際裡面有空格,也能報錯,注意一下

5.3 案例3

[root@oldboy ~]

# rsync -avz /backup/ rsync://[email protected]/backup/ --password-file=/etc/rsync.password 

@ERROR: chdir failed

rsync

error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

原因:服務端的backup目錄不存在

[root@oldboy ~]

# rsync -avz /backup/ rsync://[email protected]/backup/ --password-file=/etc/rsync.password 

sending incremental 

file

list

./

rsync

: failed to 

set

times

on 

"."

(

in

backup): Operation not permitted (1)

1

sent 4325 bytes  received 1911 bytes  12472.00 bytes

/sec

total size is 0  speedup is 0.00

rsync

error: some files

/attrs

were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

原因:服務端backup的屬組和屬主問題

繼續閱讀