免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4732 | 回复: 3
打印 上一主题 下一主题

介绍一个实用的备份小工具rdiff-backup [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-26 16:01 |只看该作者 |倒序浏览
作者:FunBSD
最后更新:2005年7月26日   

目录:
说明
安装
命令
运行环境
生成密钥
备份内容
备份脚本
定时运行

#####################################
# 说明:
#####################################

rdiff-backup是一个基于librsync的同步增量备份工具
网址:http://www.nongnu.org/rdiff-backup/

#####################################
# 安装:
#####################################

预安装:
OpenSSH、Python2.2+

安装librsync:
  1. tar zxvf librsync-0.9.7.tar.gz
  2. cd librsync-0.9.7
  3. ./configure
  4. make all check
  5. make install
  6. ldconfig
复制代码


安装rdiff-backup:
  1. tar zxvf rdiff-backup-0.13.6.tar.gz
  2. cd rdiff-backup-0.13.6
  3. python setup.py --librsync-dir=/usr/local install
复制代码


注:
rdiff-backup在cygwin上新建备份有错误,但可以通过远程进行备份和恢复

#####################################
# 命令:
#####################################

测试:
  1. rdiff-backup --test-server server::/ignored
复制代码


备份:
  1. rdiff-backup /source-dir /dest-dir
  2. rdiff-backup /source-dir user@server::/dest-dir
  3. rdiff-backup -v5 --print-statistics userX@serverN::/source-dir userY@hostM::/dest-dir
复制代码


恢复:
  1. rdiff-backup -r now user@server::/remote-dir/file /local-dir/file
  2. rdiff-backup -r 10D user@server::/remote-dir/file /local-dir/file
复制代码


清理:
  1. rdiff-backup --remove-older-than 2W  user@server::/remote-dir
  2. rdiff-backup --remove-older-than 20B user@server::/remote-dir
复制代码


查看:
  1. rdiff-backup -l backup-dir/file
  2. rdiff-backup --list-at-time 5D backup-dir/subdir
  3. rdiff-backup --list-changed-since 5D backup-dir/subdir
  4. rdiff-backup --calculate-average backup-dir/rdiff-backup-data/session_statistics*
复制代码


#####################################
# 运行环境:
#####################################

# 逻辑结构:
管理服务器(相当于master):admin
备份服务器(相当于media ):backupA、backupB、backupC、......
应用服务器(相当于client):server1、server2、server3、......

# 物理结构:
三种角色的服务器可以任意组合或分离
只要带宽满足备份需求,在物理位置上没有任何限制
管理服务器能够同时连接备份服务器和应用服务器即可
备份服务器和应用服务器之间不需要连接,管理服务器会在两者之间建立安全通道
备份数据流向:应用服务器---(管理服务器)--->;备份服务器
   
#####################################
# 生成密钥:
#####################################

#在管理服务器上生成密钥,并把公钥复制到备份服务器和应用服务器上

  1. ssh-keygen -b 1024 -t rsa

  2. ssh serverA "mkdir .ssh; chmod 0700 .ssh"
  3. scp ~/.ssh/id_rsa.pub serverA:.ssh/authorized_keys
  4. ......
  5. ssh server1 "mkdir .ssh; chmod 0700 .ssh"
  6. scp ~/.ssh/id_rsa.pub server1:.ssh/authorized_keys
  7. ......
复制代码


#####################################
# 备份内容:
#####################################

  1. #应用服务器  源目录  备份服务器  目的目录  备份保留时间
  2. server1      /dir1   backupA     /dir1     15D
  3. server1      /dir2   backupB     /dir2     2W
  4. server2      /dir3   backupC     /dir2     3M
  5. server3      /dir3   backupC     /dir3     2005-05-01
复制代码

......

#注:
如果目录带空格,则每个空格都要使用转义字符"\"

#时间格式:
  1. s -->; seconds
  2. m -->; minutes
  3. h -->; hours
  4. D -->; days
  5. W -->; weeks
  6. M -->; months
  7. Y -->; years
  8. B -->; newest increment
  9. YYYY-MM-DD
复制代码


#####################################
# 备份脚本:
#####################################

  1. #!/bin/sh
  2. #set -x

  3. PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

  4. DATE=`date +%F-%R`

  5. BACKUP_FILE=`dirname $0`/backup.txt
  6. BACKUP_LOG=`dirname $0`/backup.log

  7. BACKUP_MAIL=backup@domain.com
  8. ADMIN_MAIL=admin@domain.com

  9. usage()
  10. {
  11.   echo "USAGE: $0 -b(backup)|-r(remove)"
  12. }

  13. if [ ! -f $BACKUP_FILE ]
  14. then
  15.   echo "$BACKUP_FILE not found."
  16.   exit 1
  17. fi

  18. if [ $# -ne 1 ]
  19. then
  20.   usage
  21.   exit 1
  22. fi

  23. case $1 in
  24. -b)echo "=============Backup at $DATE============="
  25.    sed '/#/d;/^[[:blank:]]*$/d' $BACKUP_FILE | sort -u | while read APPLI_SERVER APPLI_DIR BACKUP_SERVER BACKUP_DIR TIMER
  26.    do
  27.      SAVED_IFS="$IFS";IFS=
  28.      eval ssh -f $BACKUP_SERVER \'mkdir -p \"$BACKUP_DIR\"\'
  29.      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
  30.      IFS="$SAVED_IFS"
  31.    done
  32. ;;
  33. -c)echo "=============Clean at $DATE============="
  34.    sed '/#/d;/^[[:blank:]]*$/d' $BACKUP_FILE | sort -u | while read APPLI_SERVER APPLI_DIR BACKUP_SERVER BACKUP_DIR TIMER
  35.    do
  36.      SAVED_IFS="$IFS";IFS=
  37.      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
  38.      IFS="$SAVED_IFS"
  39.    done
  40. ;;
  41. *)usage
  42.   exit 1
  43. ;;
  44. esac
复制代码

#####################################
# 定时运行:
#####################################

#在管理服务器上定时进行备份和清理

  1. 0 2 * * * cd /home/backup/;./backup.sh -b 2>;>;backup.log && ./backup.sh -c 2>;>; backup.log
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-07-26 16:36 |只看该作者

介绍一个实用的备份小工具rdiff-backup

这个看来是基于Ssh & SCP上的,不错,研究一下

论坛徽章:
0
3 [报告]
发表于 2005-07-26 17:33 |只看该作者

介绍一个实用的备份小工具rdiff-backup

好东西,有时间试一下

论坛徽章:
0
4 [报告]
发表于 2005-07-26 19:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP