Rsync服務


第1章 Rsync開篇介紹

1.1 rsync的定義

Rsync是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。Rsync軟件適用於unix/linux/windows等多種操作系統平台

①  全量備份:第一次傳輸數據過程中使用全量備份,將全部數據進行傳輸覆蓋

②  增量備份:在第一次傳輸完畢后再進行傳輸使用增量備份,只傳輸差異部分數據

1.2 rsync的簡介

Rsync英文全稱為Remote synchronization, Rsync具有可使本地和遠程兩台主機之間的數據快速復制同步鏡像、遠程備份的功能,在本地主機的不同分區或目錄之間全量及增量的復制數據。另外,利用Rsync還可以實現刪除文件和目錄的功能。

  Centos5,Rsync2.x對比方法,把所有的文件對比一遍,然后在進行同步。

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

#查看當前虛擬機系統中rsync版本信息

1 [root@backup ~]# rsync --version
2 
3 rsync  version 3.0.6  protocol version 30
4 
5 Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
6 
7 Web site: http://rsync.samba.org/

#查看客戶端man rsync

#查看服務端配置man rsyncd.conf

1.3 實現增量復制的原理

 

1.連接兩台服務器,確認兩台服務器之間可以正常進行數據傳遞

2.利用算法檢測目標主機與當前主機數據信息是否一致

3.確認無誤將增量變化的數據進行傳遞(默認情況)

 

在同步備份數據時,默認Rsync通過其獨特的“quick check”算法,僅同步大小或者最后修改時間發生變化的文件或目錄,當然也可以根據權限,屬主等屬性的變化同步,但需要指定相應的參數,甚至可以實現只同步一個文件里有變化的內容部分。

1.4 rsync的實現方法介紹

具有使本地和遠程兩台主機之間的數據快速復制同步鏡像,遠程備份功能,可以在本地主機的不同分區或目錄之間全量及增量的復制數據。

類似的命令(1v4):scp cp ls rm [與scp cp命令不同的是rsync實現增量復制或同步]

1.5 rsync特性總結說明

1.5.1 支持拷貝普通文件與特殊文件如鏈接文件,設備等

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

 1 tar zcvf backup_1.tar.gz /opt/data -exclude=oldboy 

說明:在打包/opt/data時就排除了oldboy命名的目錄和文件

1.5.3 可以做到保持原文件或目錄的權限、時間(訪問/修改/創建)、軟硬鏈接、屬主、組等所有屬性均不改變-p

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

# 將備份/home目錄自2008-01-29以來修改過的文件

 1 tar-N 2008-01-29 -zcvf /backups/inc-backup_$(date +%F).tar.gz /home 

# 將備份/home目錄昨天以來修改過的文件

 1 tar-N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F ).tar.gz /home 

# 添加文件到已經打包的文件(對壓縮文件不起作用)

 1 tar -rf all.tar *.gif 

說明:這條命令是將所有.gif的文件增加到打包的all.tar里面去。-r表示增加文件

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

1.5.6 可以通過socket(進程方式)傳輸文件和數據(服務端和客戶端)[重點掌握****]

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

1.6 rsync軟件的優缺點

rsync優點:

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

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

rsync缺點:

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

2.同步10G這樣的大文件有時也會出問題,未完整同步前是隱藏文件,可以通過快傳--partial等參數實現

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

 

第2章 Rsync企業工作場景說明

2.1 利用定時任務cron+rsync方式實現數據同步

同步網站內部技術人員數據信息,定時同步配置文件rc.local

說明:定時任務最小周期為1分鍾

2.2 利用實時任務cron+rsync方式實現數據同步(解決服務器單點故障)

同步網站外部訪問用戶數據信息,實時同步方式sersync+rsync;inotify+rsync;lrsyncd+rsync

2.3 *生產場景集群架構服務器備份方案項目(上機)

借助crond+rsync把客戶服務器數據同步到備份服務器

全網服務器數據備份解決方案提出及負責實施200x.03-200x.09

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

2、通過本地打包備份,然后Rsync結合inotifg應用把全網數據統一備份到一個固定存儲服務器,然后在存儲服務器上通過腳本檢查並報警管理員備份結果

3、定期將IDC機房的數據備份放入公司內部服務器,防止機房地震及火災問題導致數據丟失

 

第3章 Rsync工作方式介紹

3.1 本地主機間同步方式

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

3.1.1 實例

 1 [root@backup ~]# rsync /etc/hosts /opt/ 

3.2 通過ssh遠程隧道方式

Access via remote shell:

拉Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

推Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

3.2.1 語法說明

1) Rsync為同步的命令

2) [OPTION...]為同步時的參數選項

3) [USER@]HOST...為Rsyng同步的遠程的連接用戶和主機地址;

[USER@]表示數據傳輸到遠程服務器上時傳輸數據的用戶的身份信息;

HOST表示遠程主機信息(IP地址信息 主機名稱信息)

4) SRC為源,即待拷的分區、文件或目錄等,和HOST之間用一個冒號連接

[遠程服務器的數據資源(拉);本地服務器的數據資源(推)]

5) [DEST]即目的分區(目的地)、文件或目錄等

[表示本地目錄或文件信息(拉);遠程目錄或文件信息(推)]

  拉取(get),表示從遠端主機把數據同步到執行命令的本地主機相應目錄;

  推送(put),表示從本地主機執行命令把本地的數據同步到遠端主機指定目錄下。

3.2.2 實例

1.文件

1 #拉[Pull]
2 [root@backup ~]# rsync -rp root@172.16.1.31:/opt/hosts /etc/
3 
4 #推[Push]
5 [root@backup ~]# rsync -rp /etc/hosts root@172.16.1.31:/opt  #這里默認當前用戶就是root,可以省略,即rsync -rp /etc/hosts 172.16.1.31:/opt

2.目錄

1 #推
2 [root@backup ~]# rsync -rp /etc/sysconfig root@172.16.1.31:/opt/  #表示把目錄本身及子文件推送過去
3 
4 [root@backup ~]# rsync -rp /etc/sysconfig/ root@172.16.1.31:/opt/  #表示只把目錄下面的內容推送過去(目錄本身不存在)

3.2.3 rsync參數匯總說明

參數

參數說明

-v

詳細模式輸出,傳輸時的數據等信息

-z

傳輸時以壓縮的形式以提高傳輸效率

--compress-level-NUM可按級別進行壓縮,局域網可不用壓縮

-a

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

-r

對子目錄以遞歸模式處理,及目錄下的所有目錄都同樣傳輸

-t

保持文件時間信息

-o

保持文件屬主信息

-p

保持文件權限

-g

保持文件屬組信息

-l

保留軟鏈接

-D

保持設備文件信息

-P

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

-e

使用的信道協議,指定替代rsh的shell程序(隧道模式下使用)

-e實現指定ssh加密隧道傳輸

[root@nfs01 ~]# rsync -avz -e "ssh -p 22" /etc/hosts 172.16.1.31:/backup

--exclude=PATTERN

指定排除不需要傳輸的文件模式,相當於tar

--exclude-from=file

文件名所在的目錄文件,即可以實現排除多個文件,相當於tar

--bwlimit=RATE

限制I/O帶寬,限速

案例如下

--delete

刪除那些DST中SRC沒有的文件,從而使目標目錄SRC和源目錄數據DST一致,即無差異同步數據

***保持同步目錄及文件屬性:

-avzP 相當於-vzrtopgDIP

3.2.3.1  案例:某DBA做數據同步,帶寬占滿導致用戶無法訪問網站

問題:沒有進行限速設定

 1 rsync -avz dbfile 10.0.0.41:/backup 

解決方法:

 1 rsync -avz --bwlimit=100 dbfile 172.16.1.41:/backup 

3.3 ***rsync daemon守護進程方式(需要有服務端和客戶端)

1.規划

backup服務器作為rsync服務端

以rsync客戶端服務器作為參照服務器,將數據推到rsync服務端

2.部署環境

主機名

網卡eth0

eth1

用途

backup

10.0.0.41

172.16.1.41

rsync服務端

nfs01

10.0.0.31

172.16.1.31

rsync客戶端

3.3.1 服務端配置-rsync(將服務端配置到backup服務器上)

3.3.1.1  01-查看rsync軟件是否存在

 1 rpm -qa rsync 

3.3.1.2  02-安裝rsync軟件

 1 yum install rsync -y 

3.3.1.3  03-編輯rsync軟件配置文件--配置文件參考資料man rsyncd.conf

(編寫好配置文件以便進行后面的步驟)

 1 vim /etc/rsyncd.conf
 2 
 3 #配置文件描述信息
 4 #creat by Liu at 2017-10-02
 5 ##rsyncd.conf start##
 6 #配置文件全局配置(全局變量)
 7 uid = rsync                 #指定rsync服務運行時,向磁盤進行讀取和寫入的操作者
 8 gid = rsync
 9 use chroot = no              #安全相關參數
10 max connections = 200        #在同一時間,服務器連接rsync時最大的連接數
11 timeout = 300               #超時時間定義(s),備份完數據后進行超時自動切斷連接
12 pid file = /var/run/rsyncd.pid   #存放進程對應id號的PID文件
13 (01.停止進程更方便;02.判斷服務是否運行)
14 lock file = /var/run/rsync.lock  #進程的鎖文件(當兩或多個文件同時傳輸到一個目的地時,給其中一個文件加鎖表示等待該文件處理完畢后再處理另一個文件)
15 log file = /var/log/resyncd.log  #程序運行的日志文件,包括出錯信息等
16 ignore errors               #忽略錯誤程序,繼續處理其他文件
17 read only = false            #是否只讀,這里設置false表示擁有讀寫權限進行傳輸
18 list = false                 #是否可以列表
19 hosts allow = 172.16.1.0/24   #准許訪問rsync服務器的客戶范圍(白名單)
20 #hosts deny = 0.0.0.0/32      #禁止訪問rsync服務器的客戶范圍(黑名單)
21 auth users = rsync_backup    #不存在的用戶,只用於開門認證
22 secrets file = /etc/rsync.password       #對不存在的用戶進行連接認證時的密鑰文件
23 
24 #配置文件模塊配置(局部變量【需要遵循全局變量】)
25 [backup]                #[模塊名稱]以下為局部變量,添加多模塊信息無需重啟,即時生效
26 path = /backup           #模塊數據對應的統一備份位置(路徑)
27 comment = "backup dir by oldboy"     #注釋,備注信息
28 ##rsyncd.conf end##

3.3.1.4  04-創建rsync軟件備份目錄的管理用戶

 1 useradd -s /sbin/nologin -M rsync 2 3 id rsync 

3.3.1.5  05-創建rsync配置信息中的安全認證文件並修改權限(secrets file密鑰)

 1 echo "rsync_backup:oldboy123" >/etc/rsync.password 2 3 chmod 600 /etc/rsync.password 

賦予密碼文件權限,只有rsync用戶可以讀寫明文密碼

3.3.1.6  06-創建rsync配置信息中的備份目錄並進行授權

 1 mkdir -p /backup 2 3 chown -R rsync.rsync /backup 

3.3.1.7  07-啟動rsync軟件程序進程以獲得socket信息(以守護進程的方式)

1 rsync --daemon
2 
3 ps -ef |grep rsync
4 
5 #加入開機自啟動
6 
7 echo "/usr/bin/rsync --daemon" >>/etc/rc.local

至此,服務端配置操作完成

3.3.2 客戶端配置-其他服務器為客戶端

3.3.2.1  01-查看rsync軟件是否存在

 1 rpm -qa rsync 

3.3.2.2  02-安裝rsync軟件

 1 yum install rsync -y 

3.3.2.3  03-創建rsync配置信息中的安全認證文件

 1 echo "oldboy123" >/etc/rsync.password 2 3 chmod 600 /etc/rsync.password  

至此,客戶端配置操作完成

3.3.2.4  04-測試rsync軟件在客戶端

Access via rsync daemon:

Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

 

實例:交互方式傳輸數據信息

1 [root@nfs01 ~]# rsync -avz /etc rsync_backup@172.16.1.41::backup  #推(本地用戶認證+定義好的模塊)
2 
3 Password:輸入認證用戶的密碼oldboy123
4 
5 [root@nfs01 ~]# rsync -avz rsync_backup@172.16.1.41::backup/oldboy /tmp  #拉(服務端用戶認證)
6 
7 Password:輸入rsync_backup的密碼

擴展:實現免交互方式rsync傳輸數據信息(守護進程)

 1 #這里要保證backup目錄下不存在etc 2 3 [root@backup backup]# rsync -avz /etc rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 

3.4 rsync知識點補充

3.4.1 配置文件內容總結

模塊之上內容為全局變量信息,針對所有模塊成效

模塊之下內容為局部變量信息,只針對指定模塊生效

說明:無論是全局變量還是局部變量發生變化,都建議重啟rsync服務使配置生效

3.4.2 刪除rsync軟件程序進程

殺手三人組

①    kill進程pid號

說明:需要知道進程號信息,並且在殺死進程后有提示說明

②    killall 進程名

說明:殺死進程后有提示說明

1 [root@backup ~]# killall rsync
2 
3 [root@backup ~]# killall rsync
4 
5 rsync: no process killed

③    pkill 進程號[模糊殺手,用時需小心]

說明:殺死進程后沒有提示信息

pkill殺手的特性注釋(以例子說明):

當用pkill殺進程sh腳本時,遠程服務就會斷開。原因是當pkill殺死sh的同時會連同其他含有sh信息的進程一同殺死,這里就是殺死了sshd導致遠程斷開。

附:rsync重啟方式介紹

 1 [root@backup ~]# ps -ef |grep rsync
 2 
 3 root       3436      1  0 11:46 ?       00:00:00 rsync --daemon
 4 root       3710   1752  0 15:02 pts/1    00:00:00 grep --color=auto rsync
 5 
 6 [root@backup ~]# cat /var/run/rsyncd.pid  #查看PID文件
 7 
 8 3436
 9 
10 [root@backup ~]# kill `cat /var/run/rsyncd.pid`
11 
12 [root@backup ~]# kill `cat /var/run/rsyncd.pid`  #依舊要多殺幾次
13 
14 [root@backup ~]# ps -ef |grep rsync
15 
16 root       3710   1752  0 15:02 pts/1    00:00:00 grep --color=auto rsync
17 
18 [root@backup ~]# rsync --daemon  #實現重啟

3.4.3 設置rsync軟件開機自啟動

法一:配置/etc/rc.local文件

法二:配置/etc/init.d/目錄

創建腳本信息(if case)→設置腳本文件權限→編輯啟動文件參數→加入啟動服務列表

方法三:利用xinetd服務啟動rsync(確定rsync關閉狀態)->有一定影響,盡量不使用

3.4.4 rsync --daemon啟動擴展參數

--daemon     #<==表示以守護進程方式啟動rsync服務

--address     #<==綁定指定IP地址提供服務

--config=FILE #<==更改配置文件路徑,而不是默認的/etc/rsyncd.conf

--port=PORT  #<==更改其他端口提供服務,而不是缺省的873端口

3.4.5 定義變量信息實現免秘鑰交互

 1 [root@nfs01 ~]# export RSYNC_PASSWORD=oldboy123 2 3 [root@nfs01 ~]# rsync -avz /etc/services rsync_backup@172.16.1.41::backup 

 

此筆記是本人學習摘記整理而成,此為初稿(尚有諸多不完善之處),原創作品允許轉載,轉載時請務必以超鏈接形式標明文章原始出處,作者信息和本聲明,否則將追究法律責任。http://www.cnblogs.com/bananaaa/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM