通過rsync遠端增量備份 差異備份

2021-07-04 18:06:28 字數 4758 閱讀 2900

備份是寫**的人必不可少的一項工作,傳統的備份,一般就是copy所有資料到乙個地方,然後貼上標籤,表示是什麼時候備份的,這種備份被稱之為「整體備份」。

如果經常進行整體備份,對磁碟的空間占用需求就很大,尤其當你備份大容量的資料的時候,有時候,比如乙個星期,只對其中一小部分的內容進行了修改,但是還是需要全部重新備份一次,很顯然,太浪費磁碟空間了;此時增量備份就派上用場了,增量備份,又叫做差異備份,意如其名,只備份修改過的部分。

好了,廢話說完了,來看看如何實際操作,我們用到的軟體是大名鼎鼎的 rsync,很多**的映象就是用它來完成的。

******************************====

環境介紹:

******************************====

備份伺服器: 192.168.10.3

需要備份的目錄:/var/www

備份時驗證使用者名稱和密碼: backup/secret

備份客戶機(備份資料存放地):192.168.10.4

客戶機和伺服器均需安裝 rsync 軟體包

***********************************

伺服器端配置:

***********************************

1、安裝

使用系統自帶的rsync工具,插入系統啟動光碟,通過rpm安裝rsync工具。

若採用採用原始碼包安裝,就是經典的編譯三步曲 

2、建立主配置檔案

# vi /etc/rsyncd.conf 

## file of /etc/rsyncd.conf

motd file=/var/rsync/welcome.msg

pid file = /var/rsync/rsyncd.pid

lock file = /var/rsync/rsync.lock

log file = /var/rsync/rsyncd.log

### 需要備份的模組

[www]

# 模組名後面會用到

comment = bbs

path = /var/www/

use chroot = no

max connections = 4

read only = yes

list = false

uid = nobody

gid = nobody

secrets file = /etc/rsyncd.secrets

hosts allow = 192.168.10.4

hosts deny = 0.0.0.0/0

ignore errors = yes

transfer logging = yes

log format = "%a %f %l"

auth users = backup

上面定義了1個備份點,只允許 192.168.10.4 連線,需要驗證的使用者名為 backup

然後建立密碼檔案,每一行格式為: 使用者名稱:密碼,都是明文的

# vi /etc/rsyncd.secrets

backup:123456

# chmod 600 /etc/rsyncd.secrets 

建立日誌或執行目錄 

# mkdir /var/rsync

3、啟動服務

# rsync --daemon

rsync服務的監聽由xinet來統一分配

service rsync

重啟xinetd以啟動rsync服務

# service xinetd restart

5、檢查rsync時候啟動

# ps -ef | grep rsync

6、停止服務

# kill `cat /var/rsync/rsyncd.pid`

********************

客戶端的配置

********************

(1)主伺服器向備份伺服器備份

# rsync -vzrtopg --delete --progress [email protected]::www /back

(2)備份伺服器的恢復(主伺服器read only = no)

# rsync -vzrtopg --delete --progress /back [email protected]::www 

(3)增量備份(主要用這個)

備份要求: 所有的資料統一放到乙個根目錄下,主備份用每個備份點名字命名,增量備份目錄為 increment,每個備份點的增量備份資料,全部放到這個目錄下面,目錄為當前日期,格式為 2007-08-11_11-22

檔案目錄樹如下:

/var/backup/ 備份根目錄

|---www/ 備份點1的主目錄,這個目錄裡面的資料是備份完成後最新的

|---increment/ 增量備份根目錄

|--- www/ 備份點1的差異/修改備份資料

|--- 2009-12-04_10-22 從最開始備份到08月11日10點22分,所修改的資料

|--- 2009-12-05_11-22 從10點22分到11點22分,所修改過的資料

準備工作:

建立備份根目錄: mkdir /var/backup,其他的目錄備份時會自動被建立

使用系統自帶的rsync工具,插入系統啟動光碟,通過rpm安裝rsync工具

# echo "secret" > /etc/rsyncd.conf

注意,這裡不同於server端,這裡只寫密碼即可

# chmod 600 /etc/rsyncd.conf

客戶端基本不用配置什麼檔案。乙個指令碼就ok了。

# vi /etc/rc.d/init.d/rsync.sh

#!/bin/bash

unset verb progress

for i in $*; do

[ "$i" = "verb" ] && verb=v

[ "$i" = "progress" ] && progress="--progress"

done

rsync_server=192.168.10.3  #rsync server ip

auth_user=backup

bakroot=/var/backup/

inc_dir=increment

now=`date +%y-%m-%d_%h:%m`

[ ! -e $bakroot ] && mkdir -p $bakroot

passwd_file=/etc/rsyncd.conf

passwd_perm=`ls -l $passwd_file|awk ''`

if [ "$passwd_perm" != "-rw-------" ]; then

echo -e "\nwarning: permission of passwd file changed to 0600 \n";

chmod 0600 $passwd_file

filogfile=/var/log/rsync/rsyncbak.log

excludes=/var/log/rsync/exclude_file

[ ! -e $excludes ] && touch $excludes

backup_modules="www" #如需備份多個目錄,在「」內新增server端的模組名,用空格隔開

options="--force --ignore-errors --delete --delete-excluded \

--exclude-from=$excludes $progress \

--password-file=$passwd_file --backup"

rm -f /var/log/rsync/log.*

log_id=0

for bakdir in $backup_modules; do

log_id=`expr $log_id + 1`

subopts="--backup-dir=$bakroot/$inc_dir/$backup_modules/$now -az$"

rsync $options $subopts $auth_user@$rsync_server::$bakdir \

$bakroot/$bakdir | tee /var/log/rsync/log.$log_id

done

### 合併臨時日誌到備份日誌中

cat /var/log/rsync/log.* >> $logfile

rm -f /var/log/rsync/log.*

##### end of rsync.sh

# chmod a+x /etc/rc.d/init.d/rsync.sh

開始備份

# /etc/rc.d/init.d/rsync.sh verb progress

備份時,會自動從密碼檔案讀取密碼進行驗證,備份的詳細資訊及進度會在當前終端輸出,同時也記錄到 backup.log 檔案中。

兩次備份後,如果資料在這段時間內有改動,會產生差異備份資料,用當前時間命名,便於以後查詢

如果有些資料你不想備份,可以加入到 exclude_file 檔案中,每條記錄佔一行,支援萬用字元,比如

/tmp         ## 排除名為 tmp 的根目錄   

.[a-z]*     ## 不備份以點開頭的隱藏檔案

(4)任務計畫

# crontab -e

0 2 * * *    /etc/rc.d/init.d/rsync.sh

每天早上2點備份

rsync增量備份

增量備份 原始檔同步到備份目錄 同時備份更改的檔案且記錄下同步輸出檔案日誌 bin bash riqi date y m d h m srcdatapath newdata destdatapath newdata backup backupdir newdata backup chfileback...

增量備份 差異備份 增量備份的區別?

特點 占用空間大,備份速度慢,但恢復時一次恢復到位,恢復速度快。相當於機械人把地板打掃乾淨了,你踩過,就會有腳印 增加標記 下次機械人就把腳 印記錄下來,並且把腳印打掃乾淨 清除標記 始終保持地板乾淨。機械人每次記錄並打 掃的腳印就相當於每次增量備份的內容 以備份體積小,備份速度快,但是恢復的時候,...

差異備份與增量備份

差異備份的定義 備份自上一次完全備份之後有變化的資料。增量備份的定義 備份自上一次備份 包含完全備份 差異備份 增量備份 之後有變化的資料。增量備份和差異備份的區別 完全備份 備份全部選中的資料夾,並不依賴檔案的存檔屬性來確定備份那些檔案。在備份過程中,任何現有的標記都被清除,每個檔案都被標記為已備...