1. 程式人生 > >rsync存儲服務器-全網備份

rsync存儲服務器-全網備份

rsync daemon

一、rsync功能介紹: 復制 (同步)的工具


全量及增量

本地和遠程

Rsync英文全稱為Remotesynchronization

本地復制cp(全量備份),rsunc也有此功能(增量)

遠程復制scp(全量備份),rsync也有此功能(增量)

刪除工具rm,rsync也有此功能


二、 Rsync的特性


支持拷貝特殊文件如鏈接文件,設備等

可以有排除指定文件或目錄同步的功能,相當於打包命令tar的排除功能

可以做到保持原文件或目錄的權限、時間、軟硬鏈接、屬主、組等所有屬性均不改變 - p

可以實現增量同步,即只同步發生變化的數據,因此數據傳輸效率很高(tar-N)

可以使用rcp,rsh,ssh等方式來配合傳輸文件(rsync本身不對數據加密)

可以通過socket(進程方式)傳輸文件和數據(服務端和客戶端)*****

支持匿名的或認證(無需系統用戶)的進程模式傳輸,可實現方便安全的進行數據備份及鏡像

註:cp scp rm僅僅是命令

rsync除了作為命令使用,還可以服務使用(持續運行一個進程)

client/server;客戶端/服務器

brower/server:瀏覽器/服務器


三、 rsync 的三種工作模式:


1、用參數選項說明:


-v,--verhose 詳細模式輸出,傳輸時的進度等信息

-z,--compress 傳輸時進行壓縮以提高傳輸效率,--compress-level=NUM可按級別壓縮

-a,--archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於–rtopgD1

===========================================================================

-r,--recursive對子目錄以遞歸模式,即目錄下的所有目錄都同樣傳輸,註意是小寫r

-t,--time 保持文件時間信息

-o,-owner 保持文件屬主信息

-p,--perms 保持文件權限

-g,--group 保持文件屬組信息

-p,--progress 顯示同步的過程及傳輸時的進度等信息

-D,--devices 保持設備文件信息

-i,-links 保留軟連接

-e,--rsh=COMMAND 使用的信道協議,指定替代rsh的shell。例如:ssh

--exclude=PATTERN 指定排除不需要傳輸的文件模式(和tar參數一樣)

--exclude-from=file(文件名所在的目錄文件)(和tar參數一樣)

--bwlimit-RATE limit socket I/O bandwidth (限速功能)


2、本地復制/刪除:


本地復制:用法類似cp 拷貝文件或目錄(copy) -i操作前確認,-p保持屬性,-r目錄。-a(dpr)

[[email protected] opt]# rpm -qa rsync

rsync-3.0.6-12.el6.x86_64

[[email protected] opt]# rsync -v /etc/hosts /opt/d

hosts

sent 227 bytes received 31 bytes 516.00 bytes/sec

total size is 158 speedup is 0.61

[[email protected] opt]# cat d

127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4

::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6

本地刪除:讓null目錄的內容和/tmp目錄一樣(刪除原理)

rsync -avz --delete /null/ /tmp/

rsync -avz --delete /null/ /


3、 通過通道(ssh,rsh)拷貝(異機)


push:推動

rsync –avz /opt [email protected]:/tmp/

pull:從服務器拽

rsync –avz [email protected]:/tmp//tmp/

借助SSH通道(加密傳輸):

push:推動

rsync –avz –e ‘ssh –p 22’ /opt [email protected]:/tmp/

pull:從服務器拽

rsync –avz –e ‘ssh –p [email protected]:/tmp//tmp/

註:將來可以做密匙認證,傳輸時候可以不用密碼了


4、服務模式(daemon)*****


client /server

客戶端 /服務器

定角色:

client:nfs01,m01 server:backup


1)服務端操作:


[[email protected] ~]# cat /etc/rsyncd.conf

#rsync_config_________________________start

#created by oldboy 15:01 2016-06-04

#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/rsync.lock #==>鎖文件(保證數據的安全)

log file = /var/log/rsyncd.log #==>rsync的日誌文件

[backup] #==>模塊名稱

path = /backup #==>服務器端提供訪問的目錄

ignore errors #==>忽略錯誤信息

read only = false #==>客戶端是否可上傳

list = false #==>不能列表(不能ls)

hosts allow =172.16.1.0/24 #==>允許那些服務器連接

(這倆host二者留其一就可以;不然外網IP也能推送數據過來)

hosts deny =0.0.0.0/32 #==>拒絕那些機器連接

auth users = rsync_backup #==>虛擬用戶

secrets file = /etc/rsync.password #==>存放虛擬賬號的用戶和密碼

#rsync_config_______________end

===================================================================

===================================================================

[[email protected] ~]# mkdir /backup –p

==================================================
[[email protected] ~]# id rsync
id: rsync:無此用戶
[[email protected] ~]# useradd -s /sbin/nologin rsync -M
[[email protected] ~]# id rsync
uid=501(rsync) gid=501(rsync) 組=501(rsync)

========================================================

[[email protected] ~]# ll -ld /backup
drwxr-xr-x 2 root root 4096 9月 23 18:52 /backup
[[email protected] ~]# chown -R rsync.rsync /backup/
[[email protected] ~]# ll -ld /backup
drwxr-xr-x 2 rsync rsync 4096 9月 23 18:52 /backup

================================================================
[[email protected] ~]# ll /etc/rsync.password
ls: 無法訪問/etc/rsync.password: 沒有那個文件或目錄
[[email protected] ~]# echo "rsync_backup:oldboy" >/etc/rsync.password
[[email protected] ~]# ll /etc/rsync.password
-rw-r--r-- 1 root root 20 9月 23 18:58 /etc/rsync.password
[[email protected] ~]# chmod 600 /etc/rsync.password
[[email protected] ~]# ll /etc/rsync.password
-rw------- 1 root root 20 9月 23 18:58 /etc/rsync.password

===================================================================

[[email protected] ~]# rsync --daemon
[[email protected] ~]# netstat -lntup|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3649/rsync
tcp 0 0 :::873 :::* LISTEN 3649/rsync


2)客戶端操作:


[[email protected] ~]# echo "oldboy" >/etc/rsync.password

[[email protected] ~]# ll /etc/rsync.password

-rw-r--r-- 1 root root 7 9月 23 19:04 /etc/rsync.password

[[email protected] ~]# chmod 600 /etc/rsync.password

[[email protected] ~]# ll /etc/rsync.password

-rw------- 1 root root 7 9月 23 19:04 /etc/rsync.password

推送命令:
[[email protected] ~]# rsync -avz /tmp/ [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list

sent 920 bytes received 13 bytes 88.86 bytes/sec
total size is 698 speedup is 0.75
[[email protected] ~]# touch /tmp/oldboy.txt
[[email protected] ~]# rsync -avz /tmp/ [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
./
oldboy.txt

sent 979 bytes received 35 bytes 96.57 bytes/sec
total size is 698 speedup is 0.69


四、#####總結:”rsync服務端與客戶端配置步驟


***====Rsync服務端:


1、查看rsync安裝包

rpm -qa rsync

2、添加rsync服務的用戶,管理本地目錄的

useradd -s /sbin/nologin -M rsync

id rsync

3、生成rsyncd.conf配置文件

vi /etc/rsyncd.conf放入事先準備的配置。man rsyncd.conf去查(http://www.samba.org/ftp/rsync/rsyncd.conf.html)。

4、根據rsyncd.conf的auth users配置賬戶,遠程連接的。

並根據secrets file參數生成密碼文件

echo "rsync_backup:oldboy">/etc/rsync.password

cat /etc/rsync.password

5、為密碼文件配置權限

chmod 600 /etc/rsync.password

ls -l /etc/rsync.password

6、創建共享的目錄並授權rsync服務管理

mkdir /backup -p

chown -R rsync.rsync /backup

如果沒有/backup目錄,就會chdirfailed。

7、啟動rsync服務並檢查

rsync --daemon

ps -ef|grep rsync|grep -v grep

lsof -i :873

8、加入開機自啟動

echo "/usr/bin/rsync --daemon">>/etc/rc.local

tail -1 /etc/rc.local

(over)


***===rsync客戶端


1、生成連接服務器需要的密碼文件

echo "oldboy" >/etc/rsync.password

cat /etc/rsync.password

2、為密碼文件配置權限

chmod 600 /etc/rsync.password

ls -l /etc/rsync.password

3、同步文件

推送:

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

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

拉取:

rsync -avz [email protected]::oldboy /tmp/--password-file=/etc/rsync.password

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

提示:上述的backup為模塊名,不是路徑。


五、 Rsync排錯思路


1、 Rsync守護進程服務傳輸數據排錯思路:

※rsync服務器拍錯思路:

1)查看rsync服務配置文件路徑是否正確,正確的默認路徑為:/etc/rsyncd.conf

2)查看配置文件裏host allow,host deny,允許的ip網段是否是允許客戶端訪問的ip網段

3)查看配置文件中path參數裏的路徑是否存在,權限是否正確(正常應為配置文件中的UID參數對應的屬主和組)

4)查看rsync服務是否啟動。查看命令為:ps –ef|grep rsync。端口是否在netstat –lnt|grep 873

5)查看iptables防火墻和selinux是否開啟允許rsync服務通過,也可以考慮關閉

6)查看服務器rsync配置的密碼文件是否為600的權限,密碼文件格式是否正確,正確格式為用戶名:密碼,文件路徑和配置文件裏的secrectfiles參數對應

7)如果是推送數據,要查看下,配置rsyncd.conf文件中用戶是否對模塊下目錄有可讀寫的權限

2、 ※Rsync客戶端排錯思路

1)查看客戶端rsync配置的密碼文件是否為600的權限,密碼文件格式是否正確,註意:僅需要有密碼,並且和服務端的密碼一致

2、用telnet連接rsync服務器ip地址873端口,查看服務是否啟動(可測試服務端防火前是否阻擋)telnet 10.0.0.141 873

3)客戶端執行命令時rsync –avzP [email protected]::oldboy/test/test/ --password-file=/etc/rsync.password

註:此命令細節牢記,尤其10.0.0.41::oldboy/test/處的雙冒號及隨其後的oldboy為模塊名稱

3、自我模擬排錯實踐

不正規操作,自己排查熟悉操作流程


六、Rsync優缺點


rsync優點:

1、 增量備份,支持socket(daemon),集中備份(支持推拉,都是以客戶端為參照物)

2、 遠程Shell通道模式還可以加密(SSH)傳輸,socket(daemon)需要加密傳輸,可以利用vpn服務或ipsec服務

rsync缺點:

1、 大量小文件實時同步的時候,比對時間較長,有的時候,同步過程中,rsync進程可能會停止,僵死

2、 同步大文件,10G這樣的大文件有時也會出問題,中斷。未完整同步前,是隱藏文件,可以通過續傳(--partial)等參數實現傳輸

3、 一次性遠程拷貝可以用scp,大量小文件要達成一個包再拷貝


本文出自 “Linuxgao” 博客,請務必保留此出處http://linuxgao.blog.51cto.com/11934904/1930466

rsync存儲服務器-全網備份