双机备份
跳到导航
跳到搜索
pdumpfs
- linux最好用的备份软件,结合crontab实现每日定时增量备份
rdiff-backup
rdiff-backup使用简介
- 备份到远程主机
- rdiff-backup /some/local-dir hostname.net::/whatever/remote-dir
- 恢复数据到最新
- rdiff-backup -r now host.net::/remote-dir/file local-dir/file
- 恢复到数据到10天以前
- rdiff-backup -r 10D host.net::/remote-dir/file /tmp/file
- 查看5天以前的目录树
- rdiff-backup --list-at-time 5D out-dir/subdir
- 看目录和文件的修改记录
- rdiff-backup --list-increments out-dir/file,显示文件的修改记录
- rdiff-backup --list-changed-since 5D out-dir/subdir,显示5天以来目录的修改记录
rsync
- 双机备份:用rsync备份数据库nbw1和论坛数据库vbb_db到备份服务器目标目录,生成以当前备份日期和时间命名的目录
date='date +%F-%H-%M' rsync -za -e ssh --delete --progress /usr/local/mysql/data/nbw1 root@backserverIP:/DESTdir/$date rsync -za -e ssh --delete --progress /usr/local/mysql/data/vbb_db root@backserverIP:/DESTdir/$date
- 双机备份:用rsync异地同步备份htdocs目录,这样只拷贝不一样的内容并删除目标目录冗余内容
rsync -za -e ssh --delete --progress /usr/local/apache/htdocs root@DESTserverIP:/DESTdir
- 本地备份:用rsync备份数据库nbw1和论坛数据库vbb_db到本机备份目录,生成以当前备份日期和时间命名的目录
rsync -ruv --delete --progress /usr/local/mysql/data/nbw1 /DESTdir/$date rsync -ruv --delete --progress /usr/local/mysql/data/vbb_db /DESTdir/$date
- 本地备份:用rsync本地同步备份htdocs目录,这样只拷贝不一样的内容并删除目标目录冗余内容
rsync -ruv --delete --progress /usr/local/apache/htdocs /localbackdir
rsync 实现增量备份
- 备份要求: 所有的数据统一放到一个根目录下,主备份用每个备份点名字命名,增量备份目录为 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,其他的目录备份时会自动被创建
# echo "secret" > /etc/rsyncd.conf
- 注意,这里不同于server端,这里只写密码即可
# chmod 600 /etc/rsyncd.conf
脚本
- 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 '{print $1}'` if [ "$PASSWD_PERM" != "-rw-------" ]; then echo -e "\nWARNING: permission of passwd file changed to 0600 \n"; chmod 0600 $PASSWD_FILE fi LOGFILE=/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${verb}" 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