Rsync服務

来源:http://www.cnblogs.com/bananaaa/archive/2017/11/17/7850292.html
-Advertisement-
Play Games

第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 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 記憶體對齊問題之大小端對齊問題 郝東東寫 所謂的大小端問題,也就是位元組序。處理器(CPU)對記憶體數據操作有兩種模式:讀和寫。這樣,處理器在讀寫一個多位元組記憶體的時候,高位元組是在記憶體的高地址還是低地址就是一個問題,不同的大小端模式可能有不同的結果。 當處理器讀寫指令針對數據不一致的時候就涉及到大小端問題, ...
  • 第1章 NFS介紹 1.1 NFS的概念 NFS是Network File System的縮寫,即網路文件系統,它的主要功能是通過網路(一般是區域網)讓不同的主機系統之間可以共用文件或目錄。NFS客戶端(一般為應用伺服器如web)可以通過mount掛載的方式將NFS伺服器端共用的數據目錄掛載到NFS ...
  • 一、 定義: 1. Apache Apache HTTP伺服器是一個模塊化的伺服器,可以運行在幾乎所有廣泛使用的電腦平臺上。其屬於應用伺服器。Apache支持支持模塊多,性能穩定,Apache本身是靜態解析,適合靜態HTML、圖片等,但可以通過擴展腳本、模塊等支持動態頁面等。 (Apche可以支持 ...
  • 俗話說,沒圖說個JB。好我馬上上圖 提醒:我在這裡只是提供一個思路過程,希望可以幫到你,同時我也做一個記錄,有任何問題歡迎 0、0、:1870194664 威信 :gklbb520 註意:在安裝之前必須要root,小米手機root可能要先解BL鎖 環境:linux deploy 、busybox p ...
  • ch /etc/ chmod 644 passwd group shadow chmod 400 gshadow cd ssh chmod 600 moduli ssh_host_dsa_key ssh_host_key ssh_host_rsa_key chmod 644 ssh_config s ...
  • 說明:系統版本為 Linux version 3.10.0-327.el7.x86_64 step1. 查看現有磁碟信息,可以看出根分區有45G step2. 查看新增加的磁碟信息 step3. 根據以上信息,對新增加的磁碟進行分區 step4. 創建物理捲 step5. 查看物理捲信息 step6 ...
  • PXE概述: PXE(Pre-bootExecution Environment),預啟動執行環境 通過網路介面啟動電腦 支持工作站通過網路從遠端伺服器下載映像,並由此支持通過網路啟動操作系統,在啟動過程中,終端要求伺服器分配IP地址,再用TFTP協議下載一個啟動軟體包到本機記憶體中執行,由這個啟動 ...
  • 查看當前系統資源限制 ulimit -a 設置用戶的最大進程數(重啟後失效) ulimit -u 1024 設置用戶可以打開的最大文件句柄數(重啟後失效) ulimit -n 65530 說明:現在阿裡雲的伺服器一般都會幫你設置好了,還有,上面的方法只是快速修改,不能永久生效,如果想永久生效,就得修 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...