第1章 Rsync開篇介紹 1.1 rsync的定義 Rsync是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。Rsync軟體適用於unix/linux/windows等多種操作系統平臺 ① 全量備份:第一次傳輸數據過程中使用全量備份,將全部數據進行傳輸覆蓋 ② ...
第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