“双机备份”的版本间差异
跳到导航
跳到搜索
(以“双机定时备份资料整理 运行ntsysv,确保crond服务和rsync服务都自动运行 chkconfig --list检查服务列表,rsync服务基于xinetd服务,...”为内容创建页面) |
|||
(未显示同一用户的4个中间版本) | |||
第1行: | 第1行: | ||
==pdumpfs== |
|||
双机定时备份资料整理 |
|||
*linux最好用的备份软件,结合crontab实现每日定时增量备份 |
|||
运行ntsysv,确保crond服务和rsync服务都自动运行 |
|||
==rdiff-backup== |
|||
chkconfig --list检查服务列表,rsync服务基于xinetd服务,首先保证xinetd已启动 |
|||
rdiff-backup使用简介 |
|||
service crond start |
|||
service rsync start |
|||
#备份到远程主机 |
|||
用ssh的公私钥的方法将两台机器用不输入密码的方法就可以访问,在主服务器终端: |
|||
#:rdiff-backup /some/local-dir hostname.net::/whatever/remote-dir |
|||
cd /root |
|||
#恢复数据到最新 |
|||
mkdir .ssh |
|||
#:rdiff-backup -r now host.net::/remote-dir/file local-dir/file |
|||
ssh-keygen -t dsa |
|||
#恢复到数据到10天以前 |
|||
提示输入密码时不输入密码 |
|||
#:rdiff-backup -r 10D host.net::/remote-dir/file /tmp/file |
|||
将生成的 id_dsa.pub文件拷贝到备份服务器上,文件在你登陆用户目录的.ssh下 |
|||
#查看5天以前的目录树 |
|||
在备份服务器上将id_dsa.pub文件放到本机帐号的.ssh下,改名为authorized_keys |
|||
#:rdiff-backup --list-at-time 5D out-dir/subdir |
|||
chmod 700 .ssh |
|||
#查看目录和文件的修改记录 |
|||
chmod 600 .ssh/authorized_keys |
|||
#:rdiff-backup --list-increments out-dir/file,显示文件的修改记录 |
|||
在主服务器上编辑备份脚本 |
|||
#:rdiff-backup --list-changed-since 5D out-dir/subdir,显示5天以来目录的修改记录 |
|||
cd /usr/sbin/ |
|||
#清除 20 次备份会话之前的备份[3] |
|||
vi backup.sh |
|||
#:rdiff-backup --remove-older-than 20B bak/ |
|||
#删除两周备份: |
|||
#:rdiff-backup --remove-older-than 2W --force /media/backup/home_backup/ |
|||
==[[rsync]]== |
|||
#!/bin/sh |
|||
# 将所有错误信息重定向到文件/tmp/error.txt中 |
|||
exec 2>/tmp/error.txt |
|||
*双机备份:用rsync备份数据库nbw1和论坛数据库vbb_db到备份服务器目标目录,生成以当前备份日期和时间命名的目录 |
|||
#停止mysql&PHP |
|||
/sbin/service httpd stop |
|||
/sbin/service mysql stop |
|||
#双机备份:用rsync备份数据库nbw1和论坛数据库vbb_db到备份服务器目标目录,生成以当前备份日期和时间命名的目录 |
|||
date='date +%F-%H-%M' |
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/nbw1 root@backserverIP:/DESTdir/$date |
||
rsync -za -e ssh --delete --progress /usr/local/mysql/data/vbb_db root@backserverIP:/DESTdir/$date |
rsync -za -e ssh --delete --progress /usr/local/mysql/data/vbb_db root@backserverIP:/DESTdir/$date |
||
*双机备份:用rsync异地同步备份htdocs目录,这样只拷贝不一样的内容并删除目标目录冗余内容 |
|||
#双机备份:用rsync异地同步备份htdocs目录,这样只拷贝不一样的内容并删除目标目录冗余内容 |
|||
rsync -za -e ssh --delete --progress /usr/local/apache/htdocs root@DESTserverIP:/DESTdir |
rsync -za -e ssh --delete --progress /usr/local/apache/htdocs root@DESTserverIP:/DESTdir |
||
*本地备份:用rsync备份数据库nbw1和论坛数据库vbb_db到本机备份目录,生成以当前备份日期和时间命名的目录 |
|||
#本地备份:用rsync备份数据库nbw1和论坛数据库vbb_db到本机备份目录,生成以当前备份日期和时间命名的目录 |
|||
rsync -ruv --delete --progress /usr/local/mysql/data/nbw1 /DESTdir/$date |
rsync -ruv --delete --progress /usr/local/mysql/data/nbw1 /DESTdir/$date |
||
rsync -ruv --delete --progress /usr/local/mysql/data/vbb_db /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 -ruv --delete --progress /usr/local/apache/htdocs /localbackdir |
||
#再次启动mysql&PHP |
|||
/sbin/service mysql start |
|||
/sbin/service httpd start |
|||
===rsync 实现增量备份=== |
|||
完成后,chmod +x backup.sh,将权限改为可执行 |
|||
*备份要求: 所有的数据统一放到一个根目录下,主备份用每个备份点名字命名,增量备份目录为 increment,每个备份点的增量备份数据,全部放到这个目录下面,目录为当前日期,格式为 2007-08-11_11-22 |
|||
然后crontab -e编辑定时触发事件,每天凌晨3点执行backup.sh |
|||
:文件目录树如下: |
|||
01 3 * * * /usr/sbin/backup.sh |
|||
/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 |
2017年2月10日 (五) 02:53的最新版本
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天以来目录的修改记录
- 清除 20 次备份会话之前的备份[3]
- rdiff-backup --remove-older-than 20B bak/
- 删除两周备份:
- rdiff-backup --remove-older-than 2W --force /media/backup/home_backup/
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