码迷,mamicode.com
首页 > 其他好文 > 详细

50台集群架構配置介紹-2(備份服務器Rsync)

时间:2017-10-20 02:07:00      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:50台集群架構配置介紹-2(備份服務器rsync)

在企業裡面首先會先需要備份服務器,來備份數據,以防丟失。
在此,我們在這裡介紹Rsync服務器(實現本地拷貝以及遠程拷貝) 

介紹:
  • Rsync 開源、快速、可實現全量(全部備份)及增量(差異式備份)的本地或遠程的數據同步。

  • 適用於Unix,Linux,Windows上。

  • 具有本地和遠程兩台主機之間的數據快速複製同步鏡像、遠程備份的功能,這個功能類似ssh帶的scp命令,但又優於scp命令的功能,scp每次都是全量備份,但rsync可以增量拷貝(差異式備份)。

  • 具有本地主機的不同分區或目錄之間全量及增量的複製數據,這功能類似cp命令,但cp不能實現增量拷貝。

  • 具有實現刪除文件和目錄的功能。->又相當於rm命令

  • 備份數據時,透過獨特的"quick check"算法,僅同步大小或者最後修改時間發生變化的文件或目錄,當然也可以根據權限,屬主等屬性的變化同步,但需要指定相應的參數,甚至可以實現只同步一個文件裡有變化的內容部分,所以可以實現快速的同步備份數據。

  • Centos5 跟rsync2.x 比對方法:把所有文件比對一遍後,在進行同步。

  • Centos6 跟rsync3.x 比對方法:一邊比對差異,一邊對差異的部分進行同步。

  • 總結:一個rsync相當於scp,cp,rm,且優於他們每一個命令!

特性:
  • 支持拷貝特殊文件如 鏈結文件、設備等。

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

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

  • 可實現增量同步,既只同步發生變化的數據,因此數據傳輸效率很高,tar -N。

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

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

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

  • 全網服務器數據備份解決方案提出及負責實施

    • 注意下方的例子,以後簡歷上面可以寫!!

  1. 針對公司重要數據備份混亂狀況和領導提出備份全網數據的解決方案。

  2. 透過本地打包備份,然後rsync結合inotify應用把全網數據統一備份到一個固定的存儲服務器,然後存儲服務器上透過腳本檢查並報警管理員備份結果。

  3. 定期將IDC機房的數據備份到公司的內部服務器,防止機房地震或火災等問題導致數據丟失。


Rsync的工作方式:

主要有三種傳輸方式
rsync端口(873)

Local:  rsync [OPTION...] SRC... [DEST]

Access via remote shell:
  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

Access via rsync daemon:
  Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
        rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
        rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
        
By: https://www.samba.org/ftp/rsync/rsync.html

Rsync本地模式實踐:
[root@backup ~]# cp -a /etc/hosts /tmp/   (-a 保持屬性)
[root@backup ~]# rsync -vzrtopg /etc/hosts /mnt/   (-v輸出 可以看到過程, )
sending incremental file list
hosts

sent 185 bytes  received 31 bytes  432.00 bytes/sec
total size is 295  speedup is 1.37

如果我們要刪除:
[root@backup ~]# rsync -avz --delete /etc/hosts /mnt/ 
sending incremental file list

sent 30 bytes  received 12 bytes  84.00 bytes/sec
total size is 295  speedup is 7.02
但..你會發現 /mnt/下文件還是存在!!!為什麼? 
[root@backup ~]# ls -l /mnt/
total 4
-rw-r--r--. 1 root root 295 Oct  8 16:57 hosts

因為在這邊的刪除是屬於同步的,原資料如果沒有,我就刪除,例子:
[root@backup ~]# mkdir /tmp1
[root@backup ~]# rsync -avz --delete /tmp1/ /mnt/                  
sending incremental file list
./
deleting hosts

sent 29 bytes  received 15 bytes  88.00 bytes/sec
total size is 0  speedup is 0.00
[root@backup ~]# ll /mnt/
total 0
----->因為我們新增一個空資料夾,所以利用上面這個命令時,便會同步到/mnt/下,
使他也為空資料夾(刪除),這樣會很容易導致數據丟失所以盡量不要使用--delete,
除非兩個服務器是屬於完全一樣的狀態,同步(源和目標保持一樣同步的狀態)。
Rsync命令同步參數:
  • -v --verbose 詳細模式輸出,傳輸時的進度等信息。

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

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

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

  • -t --times 保持文件時間信息

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

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

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

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

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

  • -l --links 保留軟鏈接

  • --delete 讓目標目錄RSC和源目標數據DST一致

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

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

  • --bwlimit=RATE limit socket I/O bandwidth
    案例: 某DBA做數據同步,導致用戶無法訪問網站:
    白天做數據備份,把整個帶寬佔滿,資源耗盡。

-a 幾乎等於-r,-t,-o,-p,-g,-P,-D,-l
常用的組合:

  • vzrtopg

  • avz

特別注意
1) rsync -azv /opt/ /tmp/
2) rsync -azv /opt /tmp/
第一行指令意思是僅把/opt/目錄裡面的內容同步過來,opt目錄本身並沒有同步!!
第二行指令意思則是把opt本身及其內部內容全部同步到/tmp/下
只有一個/ 斜線 ,意思不同!!!!

使用遠端SSH通道實踐:

借助ssh通道在不同主機之間傳輸數據

[root@backup ~]# rsync -avz /etc/hosts -e ‘ssh -p 22‘ root@10.0.0.31:/mnt/
root@10.0.0.31‘s password: 
sending incremental file list
hosts

sent 185 bytes  received 31 bytes  61.71 bytes/sec
total size is 295  speedup is 1.37

我們切到10.0.0.31(nfs01虛擬機)裡面看:
[root@nfs01 mnt]# ls 
hosts

在上面傳輸時,一開始會有點慢,這問題我們必須在對方(要同步過去的主機)上進行調整:

[root@nfs01 mnt]# vim /etc/ssh/sshd_config 
裡面
 80 #GSSAPIAuthentication no   ----> # 去掉
 81 GSSAPIAuthentication yes   ----> 加上#
122 #UseDNS yes                ---->去掉#, yes改成no 

改完後一定要重啟服務:
/etc/init.d/sshd restart

Rsync daemon 服務模式實踐

以守護進程(socket)(吃運行的程序,sshd也算守護進程)的方式傳輸數據
監聽的端口是873端口。
注意!!無論是實現推數據或拉數據的命令時,都是在客戶端上運行。在服務器上運行是沒用! 

部署前的準備工作:
  • 兩台機器的環境(因為是clone的,都一樣)
    第一台:10.0.0.41 (backup) 第二台:10.0.0.31 (nfs01)
    我們搭備份服務器是要搭在backup上面,因為是要接受其他台電腦傳輸資料過去(在其他電腦是透過命令去推送資料)

[root@nfs01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@nfs01 ~]# uname -m
x86_64
[root@nfs01 ~]# uname -r
2.6.32-696.el6.x86_64
[root@nfs01 ~]# 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.
[root@nfs01 ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
  • 服務器端配置:(在10.0.0.41 backup)

默認的配置文件是/etc/rsyncd.conf (默認不存在,要自己新增!!!)
裡面新增配置文件的內容:

#rsync_config_____________start
#created by oldboy 2017-10-09
##rsyncd.conf start ##
uid = rsync     (虛擬)用戶id  遠端的命令使用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      日誌文件
[backup]        模塊名稱
path = /backup      服務器端提供訪問的目錄
ignore errors           忽略錯誤
read only = false   可寫
list = false            不能列表
hosts allow = 172.16.1.0/24     允許哪些機器過來連
hosts deny = 0.0.0.0/32             拒絕哪些用戶,不能連線(現在的狀態是都可以連線)(跟上面的hosts allow 會重疊,所以)
auth users = rsync_backup           虛擬用戶
secrets file = /etc/rsync.password      虛擬帳號對應的用戶和密碼
#rsync_config_________end

操作:

[root@backup ~]# useradd rsync -s /sbin/nologin  -M   (-s /sbin/nologin不需要登錄  -M 不需要建家目錄)
[root@backup ~]# tail -l /etc/passwd
rsync:x:501:501::/home/rsync:/sbin/nologin
[root@backup ~]# rsync --daemon    (啟動服務)
[root@backup ~]# ps -ef | grep rsync | grep -v grep   (查看服務有沒有啟動,grep -v grep 排除自己的grep )  
root       1434      1  0 09:03 ?        00:00:00 rsync --daemon    (對應的用戶還是root )
[root@backup ~]# mkdir /backup    (創建/backup目錄)
[root@backup ~]# chown rsync.rsync /backup/    (更改讀寫權限 屬組是rsync!!)
[root@backup ~]# ls -ld /backup/
drwxr-xr-x. 2 rsync rsync 4096 Oct  9 09:06 /backup/

[root@backup ~]# vim /etc/rsync.password   (新增帳號密碼文件)
[root@backup ~]# cat /etc/rsync.password 
rsync_backup:oldboy    (格式是-->用戶:密碼)
[root@backup ~]# ll /etc/rsync.password -l
-rw-r--r--. 1 root root 20 Oct  9 09:13 /etc/rsync.password    (這樣其他用戶可以讀,不夠安全!!)
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ll /etc/rsync.password -l    
-rw-------. 1 root root 20 Oct  9 09:13 /etc/rsync.password

這樣,服務器端基本設置大致上完成了。

查看運行端口狀態:
[root@backup ~]# lsof -i :873 
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   1434 root    4u  IPv4  14349      0t0  TCP *:rsync (LISTEN)
rsync   1434 root    5u  IPv6  14350      0t0  TCP *:rsync (LISTEN)
[root@backup ~]# netstat -tunlp | grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1434/rsync          
tcp        0
  • 小結:

    • 一步一步完成服務器基本操作:

  1. 查看rsync安裝包
    rpm -qa rsync

  2. 添加rsync服務的用戶,管理本地目錄的 useradd -s /sbin/nologin -M rsync

  3. 生成rsyncd.conf 配置文件 vi /etc/rsyncd.conf

  4. 根據rsyncd.conf的auth users 配置帳戶,遠程連接的,並根據secrets file參數生成密碼文件
    echo "rsync_backup:oldboy" >/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目錄,就會chdir failed

  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

  9. 排錯: 1)輸出
    2)日誌 tail /var/log/rsync.log

  • 客戶端配置:(在10.0.0.31 nfs01)

[root@nfs01 ~]# vim /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password 
oldboy     ---->(注意到了嗎?這邊只有密碼!!!!)
[root@nfs01 ~]# chmod 600 /etc/rsync.password    (因為是密碼文件,所以要改權限,較安全)
[root@nfs01 ~]# ls -l /etc/rsync.password 
-rw-------. 1 root root 7 Oct  9 09:46 /etc/rsync.password
[root@nfs01 ~]# mkdir -p /backup   (打包、推送、刪除,如果我們要推送打包時,我們可以先打包到這個目錄下,之後統一用rsync推送信息)

我們接下來來嘗試看看備份推送資訊
[root@nfs01 ~]# cd /backup
[root@nfs01 backup]# touch stu{01..100}
[root@nfs01 backup]# ls 
stu001  stu011  stu021  stu031  stu041  stu051  stu061  stu071  stu081  stu091
stu002  stu012  stu022  stu032  stu042  stu052  stu062  stu072  stu082  stu092
stu003  stu013  stu023  stu033  stu043  stu053  stu063  stu073  stu083  stu093
stu004  stu014  stu024  stu034  stu044  stu054  stu064  stu074  stu084  stu094
stu005  stu015  stu025  stu035  stu045  stu055  stu065  stu075  stu085  stu095
stu006  stu016  stu026  stu036  stu046  stu056  stu066  stu076  stu086  stu096
stu007  stu017  stu027  stu037  stu047  stu057  stu067  stu077  stu087  stu097
stu008  stu018  stu028  stu038  stu048  stu058  stu068  stu078  stu088  stu098
stu009  stu019  stu029  stu039  stu049  stu059  stu069  stu079  stu089  stu099
stu010  stu020  stu030  stu040  stu050  stu060  stu070  stu080  stu090  stu100

PUSH 方法1: rsync [OPTION...] SRC... [USER@]HOST::DEST

後半段--password-file=  可以在使用命令時,不提示輸入密碼,但必須要在之前先將/etc/rsync.password建立好!     
[root@nfs01 backup]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password
sending incremental file list
./
stu001
stu002
stu003
stu004
stu005
stu006
stu007
stu008
stu009
....不全部列出
stu099
stu100

sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00     ----> (不能有error 這樣就是成功了!!)

PUSH 方法2:rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

[root@nfs01 backup]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/etc/rsync.password
sending incremental file list
./
stu001
stu002
...不全部列出
stu100

sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00
  • 小結:

    • 一步一步完成客戶端基本操作:

  1. 生成連接服務器需要的密碼文件
    echo "oldboy" >/etc/rsync.password
    cat /etc/rsync.password

  2. 為密碼文件配置權限
    chmod 600 /etc/rsync.password
    ls -l /etc/rsync.password

  3. 同步文件:(文件路徑跟ip 請依照當時狀況配置)
    推送:
    (1) rsync -avz /tmp/ rsync backup@10.0.0.8::oldboy --password-file=/etc/rsync.password
    (2) rsync -avz /tmp/ rsync://rsync backup@10.0.0.8/backup/ --password-file=/etc/rsync.password
    拉取:
    (1) rsync -avz rsync backup@10.0.0.8::oldboy /tmp/ --password-file=/etc/rsync.password
    (2) rsync -avz rsync://rsync backup@10.0.0.8/backup/ /tmp/ --password-file=/etc/rsync.password
    上述的backup是模塊名,不是路徑!!!

Rsync 服務故障模擬:
  • 例1:(服務端問題)

[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/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資料夾 

            解決:在服務器端新增/backup資料夾

  • 例2:(服務端問題)

客戶端push資料時,出現這樣的問題:
rsync: mkstemp ".stu001.kksG0b" (in backup) failed: Permission denied (13)
rsync: mkstemp ".stu002.jiYwe9" (in backup) failed: Permission denied (13)
rsync: mkstemp ".stu003.Gynos6" (in backup) failed: Permission denied (13)
rsync: mkstemp ".stu004.nkVhG3" (in backup) failed: Permission denied (13)
rsync: mkstemp ".stu005.c63bU0" (in backup) failed: Permission denied (13)
rsync: mkstemp ".stu006.bbM67X" (in backup) failed: Permission denied (13)

sent 4426 bytes  received 1911 bytes  12674.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]

         問題:權限不夠

[root@backup ~]# ls -l /backup/ -d
drwxr-xr-x. 2 root root 4096 Oct  9 14:05 /backup/

        解決:

在服務器端下:
[root@backup ~]# chown -R rsync.rsync /backup/

  • 例3:(服務端問題)

[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/etc/rsync.password
@ERROR: invalid uid rsync
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

        問題:服務器端不可用的uid 

        解決:新增rsync用戶,不添加家目錄

[root@backup ~]# useradd rsync -s /sbin/nologin -M
Creating mailbox file: File exists
  • 例4:(客戶端問題)

[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/etc/rsync.password
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

        問題:vim /etc/rsync.password 路徑、密碼 有可能是客戶端或是服務端
        我們可以去看看日誌排錯

2017/10/09 14:16:09 [2073] connect from nfs01 (172.16.1.31)
2017/10/09 14:16:09 [2073] auth failed on module backup from nfs01 (172.16.1.31): password mismatch

---->密碼問題。
解決: 去客戶端查看/etc/rsync.password 檢查內容。

Rsync服務模式增加多模塊實戰
  • 1 用不同的模塊傳輸

首先,將原配置文件備份(好習慣)
[root@backup ~]# cp /etc/rsync.password{,.bak}     ---->這樣會維持源文件,並另外新增備份文件
[root@backup ~]# cp /etc/rsyncd.conf{,.bak}
[root@backup ~]# ls -l /etc/ | grep rsyncd
-rw-r--r--.  1 root root    464 Oct  9 08:48 rsyncd.conf
-rw-r--r--.  1 root root    464 Oct 10 10:00 rsyncd.conf.bak
[root@backup ~]# mkdir /oldboy
[root@backup ~]# chown -R rsync.rsync /oldboy/
[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/oldboy/ --password-file=/etc/rsync.password
sending incremental file list
./
stu001
stu002
stu003
stu004
....不全部列出
stu099
stu100

sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00
  • 2 用不同的密碼、模塊傳輸

[root@backup oldboy]# cp /etc/rsync.password{,.oldboy}
[root@backup oldboy]# vim /etc/rsync.password.oldboy
[root@backup oldboy]# cat /etc/rsync.password.oldboy 
test:oldboy
[root@backup oldboy]# vim /etc/rsyncd.conf 
[root@backup ~]# cat /etc/rsyncd.conf
#rsync_config_____________start
#created by oldboy 2017-10-09
##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/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /backup
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
[oldboy]
path = /oldboy
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
#rsync_config_________end 

切換到10.0.0.31(nfs)
[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/oldboy/ --password-file=/etc/rsync.password
sending incremental file list
./
stu001
stu002
...不全部列出
stu099
stu100

sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00


如果要用不同密碼:
[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_test@172.16.1.41/oldboy/ --password-file=/etc/rsync.password  
sending incremental file list
./
stu001
stu002
....
stu099
stu100

sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00
服務模式排除及無差異同步實踐
  • 我們在服務器端清空/backup/裡面的資料夾,並新增一些資料,我們要在客戶端拉取服務器端的資料。

[root@backup backup]# rm -f *
[root@backup backup]# touch {a..g}
[root@backup backup]# ls
a  b  c  d  e  f  g

客戶端:
[root@nfs01 backup]# rsync -avz rsync_backup@172.16.1.41::backup/ /backup/ --password-file=/etc/rsync.password
receiving incremental file list
./
a
b
c
d
e
f
g

sent 200 bytes  received 412 bytes  1224.00 bytes/sec
total size is 0  speedup is 0.00
  • 排除推送:在上例的基礎下,我們把服務器端的/backup/裡面的資料清空,從客戶端將剛剛同步過去的資料同步過去(排除某個資料,不進行同步)

[root@backup backup]# rm -f *

切換到10.0.0.31(nfs)推送資料,並排除某一個檔案
[root@nfs01 backup]# rsync -avz --exclude=a /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 
sending incremental file list
./
b
c
d
e
f
g

sent 285 bytes  received 125 bytes  820.00 bytes/sec
total size is 0  speedup is 0.00

回到服務器端:
[root@backup backup]# ls
b  c  d  e  f  g    ---->裡面沒有a,因為被排除同步了。

**若要排除多個同步有幾種方式:
[root@nfs01 backup]# rsync -avz --exclude={a,b} /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password                      
sending incremental file list
./
c
d
e
f
g

sent 243 bytes  received 106 bytes  698.00 bytes/sec
total size is 0  speedup is 0.00

如果是連續的:
rsync -avz --exclude={a..g} /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 

文件排除:
rsync -avz --exclude-from=paichu.log /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

拉取和推送都可以, 也可以在服務端排除,配置文件裡面的參數。 exclude=a c b d 

  • 無差異同步 --delete 視頻網站,視頻推到服務器上線發布,本地/backup只有當天發布的內容,服務器上確有以前的所有文件,就執行下面的命令,導致服務器端刪除以前所有,只剩下當天的了。 相當於rm - rf /backup

rsync -avz --delete /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

所以要謹慎使用--delete 

  • 限速傳遞

[root@nfs01 backup]# rsync -avz --bwlimit=10 /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password  
sending incremental file list
./
a
b
c
d
e
f
g
test1

sent 130907 bytes  received 163 bytes  9039.31 bytes/sec
total size is 134217728  speedup is 1024.02
Rsync三種工作模式
  • 1.本地模式 local:rsync (cp,rm)

  • 2.通道模式 rsync -avz -e ‘ssh -p 22‘ /etc root@10.0.0.142:/tmp
    一般配合ssh key 免密鑰傳輸,結合定時任務

  • 3.daemon模式
    內網不需要,加密性能有損失
    rsync + vpn(pptp,openvpn,ipsec)

Rsync優缺點
  • 比較

    • 優點

    • 缺點

  1. 大量小文件時候同步時,比對時間比較長,有的時候,rsync進程可能會停止。

  2. 同步大文件,10G這樣的大文件有時也會問題,中斷。未完整同步前,是隱藏文件,可透過續傳等參數實現傳輸 一次性遠程拷貝可以用scp

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

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


本文出自 “我的Linux之夢” 博客,请务必保留此出处http://12098022.blog.51cto.com/12088022/1974415

50台集群架構配置介紹-2(備份服務器Rsync)

标签:50台集群架構配置介紹-2(備份服務器rsync)

原文地址:http://12098022.blog.51cto.com/12088022/1974415

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!