Chinaunix
标题:
介绍一个实用的备份小工具rdiff-backup
[打印本页]
作者:
FunBSD
时间:
2005-07-26 16:01
标题:
介绍一个实用的备份小工具rdiff-backup
作者:FunBSD
最后更新:2005年7月26日
目录:
说明
安装
命令
运行环境
生成密钥
备份内容
备份脚本
定时运行
#####################################
# 说明:
#####################################
rdiff-backup是一个基于librsync的同步增量备份工具
网址:http://www.nongnu.org/rdiff-backup/
#####################################
# 安装:
#####################################
预安装:
OpenSSH、Python2.2+
安装librsync:
tar zxvf librsync-0.9.7.tar.gz
cd librsync-0.9.7
./configure
make all check
make install
ldconfig
复制代码
安装rdiff-backup:
tar zxvf rdiff-backup-0.13.6.tar.gz
cd rdiff-backup-0.13.6
python setup.py --librsync-dir=/usr/local install
复制代码
注:
rdiff-backup在cygwin上新建备份有错误,但可以通过远程进行备份和恢复
#####################################
# 命令:
#####################################
测试:
rdiff-backup --test-server server::/ignored
复制代码
备份:
rdiff-backup /source-dir /dest-dir
rdiff-backup /source-dir user@server::/dest-dir
rdiff-backup -v5 --print-statistics userX@serverN::/source-dir userY@hostM::/dest-dir
复制代码
恢复:
rdiff-backup -r now user@server::/remote-dir/file /local-dir/file
rdiff-backup -r 10D user@server::/remote-dir/file /local-dir/file
复制代码
清理:
rdiff-backup --remove-older-than 2W user@server::/remote-dir
rdiff-backup --remove-older-than 20B user@server::/remote-dir
复制代码
查看:
rdiff-backup -l backup-dir/file
rdiff-backup --list-at-time 5D backup-dir/subdir
rdiff-backup --list-changed-since 5D backup-dir/subdir
rdiff-backup --calculate-average backup-dir/rdiff-backup-data/session_statistics*
复制代码
#####################################
# 运行环境:
#####################################
# 逻辑结构:
管理服务器(相当于master):admin
备份服务器(相当于media ):backupA、backupB、backupC、......
应用服务器(相当于client):server1、server2、server3、......
# 物理结构:
三种角色的服务器可以任意组合或分离
只要带宽满足备份需求,在物理位置上没有任何限制
管理服务器能够同时连接备份服务器和应用服务器即可
备份服务器和应用服务器之间不需要连接,管理服务器会在两者之间建立安全通道
备份数据流向:应用服务器---(管理服务器)--->;备份服务器
#####################################
# 生成密钥:
#####################################
#在管理服务器上生成密钥,并把公钥复制到备份服务器和应用服务器上
ssh-keygen -b 1024 -t rsa
ssh serverA "mkdir .ssh; chmod 0700 .ssh"
scp ~/.ssh/id_rsa.pub serverA:.ssh/authorized_keys
......
ssh server1 "mkdir .ssh; chmod 0700 .ssh"
scp ~/.ssh/id_rsa.pub server1:.ssh/authorized_keys
......
复制代码
#####################################
# 备份内容:
#####################################
#应用服务器 源目录 备份服务器 目的目录 备份保留时间
server1 /dir1 backupA /dir1 15D
server1 /dir2 backupB /dir2 2W
server2 /dir3 backupC /dir2 3M
server3 /dir3 backupC /dir3 2005-05-01
复制代码
......
#注:
如果目录带空格,则每个空格都要使用转义字符"\"
#时间格式:
s -->; seconds
m -->; minutes
h -->; hours
D -->; days
W -->; weeks
M -->; months
Y -->; years
B -->; newest increment
YYYY-MM-DD
复制代码
#####################################
# 备份脚本:
#####################################
#!/bin/sh
#set -x
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
DATE=`date +%F-%R`
BACKUP_FILE=`dirname $0`/backup.txt
BACKUP_LOG=`dirname $0`/backup.log
BACKUP_MAIL=backup@domain.com
ADMIN_MAIL=admin@domain.com
usage()
{
echo "USAGE: $0 -b(backup)|-r(remove)"
}
if [ ! -f $BACKUP_FILE ]
then
echo "$BACKUP_FILE not found."
exit 1
fi
if [ $# -ne 1 ]
then
usage
exit 1
fi
case $1 in
-b)echo "=============Backup at $DATE============="
sed '/#/d;/^[[:blank:]]*$/d' $BACKUP_FILE | sort -u | while read APPLI_SERVER APPLI_DIR BACKUP_SERVER BACKUP_DIR TIMER
do
SAVED_IFS="$IFS";IFS=
eval ssh -f $BACKUP_SERVER \'mkdir -p \"$BACKUP_DIR\"\'
eval rdiff-backup $APPLI_SERVER::\"$APPLI_DIR\" $BACKUP_SERVER::\"$BACKUP_DIR\" || echo "Backup $APPLI_SERVER::$APPLI_DIR Failed." | tee -a $BACKUP_LOG | sendmail -f $BACKUP_MAIL $ADMIN_MAIL
IFS="$SAVED_IFS"
done
;;
-c)echo "=============Clean at $DATE============="
sed '/#/d;/^[[:blank:]]*$/d' $BACKUP_FILE | sort -u | while read APPLI_SERVER APPLI_DIR BACKUP_SERVER BACKUP_DIR TIMER
do
SAVED_IFS="$IFS";IFS=
eval rdiff-backup --remove-older-than $TIMER $BACKUP_SERVER::\"$BACKUP_DIR\" || echo "Clean $BACKUP_SERVER::$BACKUP_DIR Failed." | tee -a $BACKUP_LOG | sendmail -f $BACKUP_MAIL $ADMIN_MAIL
IFS="$SAVED_IFS"
done
;;
*)usage
exit 1
;;
esac
复制代码
#####################################
# 定时运行:
#####################################
#在管理服务器上定时进行备份和清理
0 2 * * * cd /home/backup/;./backup.sh -b 2>;>;backup.log && ./backup.sh -c 2>;>; backup.log
复制代码
作者:
wind521
时间:
2005-07-26 16:36
标题:
介绍一个实用的备份小工具rdiff-backup
这个看来是基于Ssh & SCP上的,不错,研究一下
作者:
wolfg
时间:
2005-07-26 17:33
标题:
介绍一个实用的备份小工具rdiff-backup
好东西,有时间试一下
作者:
soway
时间:
2005-07-26 19:30
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2