rsync遠程同步備份
作者: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協議
參數:
-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通過
2. 同步方式: 1)CentOS 5中,把所有文件對比一遍,然後把差異數據進行同步
2)CentOS 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. 可以使用rcp、rsh、ssh等方式來配置行進隧道加密傳輸文件(rsync本身不會對數據加密)
6. 可以支持socket(守護進程的方式)傳輸文件和數據(服務端和客戶端)
7. 支持匿名或認證的進程模式傳輸,可是實現安全地進行數據備份及鏡像
1.5.6 rsync的企業工作場景說明
1. 利用定時任務實現數據備份(crond+rsync)
2. 利用實時同步方式實現數據備份(inotify或sersync+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推送數據到rsync: rsync -avz /etc/hosts [email protected]::backup
rsync守護進程模式數據傳輸原理:
如果把模塊對應目錄的屬主改成root,是沒有權限訪問rsync服務器的(rsync服務器只認被認證的用戶)
微信公眾號:linux運維菜鳥之旅
rsync遠程同步備份