1. 程式人生 > >rsync遠程同步備份

rsync遠程同步備份

img src 遠程服務 實時同步 conf all 服務器 null rcp


作者Georgekai

歸檔:學習筆記

2018/1/22


本章正題:rsync遠程同步備份

1.5.1 什麽是rsync

開源的、快速的、多功能的、可實現全量及增量備份的本地或遠程數據同步備份方案

rsync官網:http://rsync.samba.org/documentation.html

1. 什麽是全量、什麽是增量?

全量備份:本地所有數據都進行傳輸復制,不管對端服務器是否有相同的數據,如果有進行覆蓋

增量備份:只備份同步變化的的數據,對端服務器已存在的數據不進行傳輸復制

1.5.2 rsync軟件命令特點

1. rsync == scp scp是全量復制、rsync是增量復制),利用的是ssh協議

參數:

-r #遞歸

-p #保證文件權限不變

-a #包括多個參數

scp遠程傳輸文件:scp -rp /oldboy_dir/oldboy_file1 172.16.1.31:/tmp

scp遠程傳輸目錄:scp -rp /oldboy_dir/ 172.16.1.31:/tmp

rsync遠程傳輸文件:rsync -rp /oldboy_dir/oldboy_file1 172.16.1.31:/tmp

rsync遠程傳輸目錄:rsync -rp /oldboy_dir 172.16.1.31:/tmp

PS: 1.如果傳輸目錄時,目錄後面“/”,表示將目錄下面的數據內容傳輸過去

2.如果傳輸目錄時,目錄後面

沒有“/”,表示將目錄本身及目錄下面的數據內容進行傳輸過去

2. rsync == cp

cp本地傳輸文件或目錄:cp -a /oldboy_dir/oldboy_file1 /tmp

rysnc本地傳輸文件或目錄:rsync -a /oldboy_dir/oldboy_file1 /tmp

3. rsync == rm

創建空目錄:mkdir /null

rsync清空目錄:rysnc --delete -r /null/ 172.16.1.31:/oldboy_dir/

4. rsync == ls

查看遠程端的數據:rsync 172.16.1.31:/tmp/

1.5.3 rsync實現增量同步原理說明

1. rysnc通過

quick check算法實現增量傳輸數據。

2. 同步方式: 1CentOS 5中,把所有文件對比一遍,然後把差異數據進行同步

2CentOS 6中,一邊對比差異,一邊把差異的數據進行同步(效率快)

技術分享圖片

3. 查看rsync版本

rsync --version

1.5.4 rsync軟件的特點

1. 支持拷貝普通文件與特殊文件(如鏈接文件,設備)

2. 可以有排除指定文件或目錄同步的功能,相當於tar的排除

3. 可以做到保持原文件或目錄的權限時間,或軟硬連接的屬性不變

4. 可以實現增量同步,指同步發生變化的數據,所以傳輸速率很高

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

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

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

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

# 添加文件到已經打包的文件

tar -rf all.tar *.gif

PS:這條命令是將所有.gif的文件增加到all.tar的包裏面去。-r是表示增加文件的意思。

5. 可以使用rcprshssh等方式來配置行進隧道加密傳輸文件(rsync本身不會對數據加密)

6. 可以支持socket(守護進程的方式)傳輸文件和數據(服務端和客戶端)

7. 支持匿名或認證的進程模式傳輸,可是實現安全地進行數據備份及鏡像


1.5.6 rsync的企業工作場景說明

1. 利用定時任務實現數據備份(crond+rsync

2. 利用實時同步方式實現數據備份(inotifysersync+rsync

1.5.7 rsync的工作方式

1.本地數據備份方式,類似上面的cp命令


2.遠程備份shell方式,類似上面的scp命令

語法結構:

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

實現遠程備份方式,類似scp命令
Pull(拉):
rsync ---數據備份命令
[OPTION...] ---指定備份數據命令參數
[USER@]HOST: ---定義以什麽身份從相應主機上,拉取數據信息
(如果沒有[USER@],表示以當前用戶身份登錄到遠程主機,拉取數 據)
SRC... ---將要從遠端服務拉取的數據信息(文件或目錄)
[DEST] ---將拉取過來的數據,保存到本地路徑信息

Push(推):
rsync ---數據備份命令
[OPTION...] ---指定備份數據命令參數
SRC... ---將本地服務上數據信息(文件或目錄),推送到遠端
[USER@]HOST: ---定義以什麽身份向相應主機上,推送數據信息
(如果沒有[USER@],表示以當前用戶身份登錄到遠程主機,推送數 據)
DEST ---將本地數據推送到遠程服務器的路徑信息

示例:

pull(拉):rsync -rp [email protected]:/etc/hosts /tmp/

oldboy用戶身份將31主機的hosts文件拉取到本地的/tmp/目錄下

註:如果前面不寫用戶名表示以當前用戶身份拉取數據

push(推):rsync -rp /etc/hosts [email protected]:/tmp/

oldboy用戶身份將本地hosts文件推送到41服務器的/tmp目錄下


註:下圖解釋推和拉的概念

技術分享圖片


3. rsync守護進程方式,進行數據備份同步:(重點

語法結構:

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
實現守護進程方式,進行數據備份同步:
Pull:
rsync ---數據備份命令
[OPTION...] ---指定備份數據命令參數
[USER@]HOST:: ---指定認證用戶身份信息,從相應主機,拉取數據信息
SRC... ---指定一個模塊信息
[DEST] ---將拉取過來的數據,保存到本地路徑信息

Push:
rsync ---數據備份命令
[OPTION...] ---指定備份數據命令參數
SRC... ---將本地服務器上數據信息(文件或目錄),推送到遠端
[USER@]HOST:: ---指定認證用戶身份信息,將本地主機數據,推送到遠端
DEST ---指定一個模塊信息

1.5.8 rsync守護進程模式部署步驟:

1. 服務端部署:

1)檢查軟件是否存在

rpm -qa|grep rsync (如果不存在,yum install rsync -y安裝一下即可)

2)編寫rsync軟件的配置文件(編輯後面的步驟可以根據配置文件操作)

vim /etc/rsyncd.conf(默認是沒有這個配置文件)

全局配置:

#註釋信息:誰寫的,時間,幹什麽用的

uid = rsync #遠端的用戶使用rsync訪問共享目錄

gid = rsync #遠端的用戶組使用rsync這個組訪問共享目錄

use chroot = no #是否將用戶鎖定在當前目錄

max connections = 200 #用戶最大連接數

timeout = 300 #等待超時時間定義

pid file = /var/run/rsyncd.pid #存放進程對應的pid號(進程號)

註:殺死進程的三種方式:1. kill pid號(會提示信息)

如:kill `cat /var/run/rsyncd.pid` (殺死rsync進程號)

2. killall 進程名(會提示信息)

3. pkill 進程名,類似的都會一起殺掉(不會提示信息)

lock file = /var/run/rsyncd.lock #進程的鎖文件(超過max connections就鎖了,其他用戶不能進了)

log file = /var/log/rsyncd.log #日誌文件,存放出錯信息等

局部配置:

[backup] #模塊(類似於變量,調用裏面的信息)

comment = “bakcup dir by oldboy” #說明信息

path = /backup #(模塊對應的位置)

ignore errors #忽略錯誤程序

read only = false #bakcup目錄是否為只讀權限

list = false #是否可以列表*(顯示出所有模塊)

hosts allow = 172.16.1.0/24 #白名單

hosts deny = 0.0.0.0/32 #黑名單

auth users = rsync_bakcup,george #認證用戶,不需要創建這個用戶(通過這個用戶拉或推數據)

secrets file = /etc/rsync.password #認證用戶的密鑰文件(將認證用戶的密碼存放進去)

3)創建rsync備份目錄的管理用戶

useradd -s /sbin/nologin -M rsync

4)創建認證用戶密鑰文件

echo "rsync_bakcup:pwd@123" /etc/rsync.password

chmod 600 /etc/rsyncd.password #更改權限600

5)創建備份目錄

mkdir /backup

chown rsync.rsync /bakcup #讓遠程用戶rsync可以訪問

6)啟動rsync 守護進程服務

rsync --daemon

註:rsync默認端口號:TCP 873

2. 客戶端部署:

1)進行測試傳輸備份數據:

NFS推送數據到rsyncrsync -avz /etc/hosts [email protected]::backup

rsync守護進程模式數據傳輸原理:

如果把模塊對應目錄的屬主改成root,是沒有權限訪問rsync服務器的(rsync服務器只認被認證的用戶)

技術分享圖片






微信公眾號:linux運維菜鳥之旅


rsync遠程同步備份