查看“双机备份”的源代码
←
双机备份
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
==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== 双机定时备份资料整理 运行ntsysv,确保crond服务和[[rsync]]服务都自动运行 chkconfig --list检查服务列表,rsync服务基于xinetd服务,首先保证xinetd已启动 service crond start service rsync start 用ssh的公私钥的方法将两台机器用不输入密码的方法就可以访问,在主服务器终端: cd /root mkdir .ssh ssh-keygen -t dsa 提示输入密码时不输入密码 将生成的 id_dsa.pub文件拷贝到备份服务器上,文件在你登陆用户目录的.ssh下 在备份服务器上将id_dsa.pub文件放到本机帐号的.ssh下,改名为authorized_keys chmod 700 .ssh chmod 600 .ssh/authorized_keys 在主服务器上编辑备份脚本 cd /usr/sbin/ vi backup.sh #!/bin/sh # 将所有错误信息重定向到文件/tmp/error.txt中 exec 2>/tmp/error.txt #停止mysql&PHP /sbin/service httpd stop /sbin/service mysql stop #双机备份:用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 #再次启动mysql&PHP /sbin/service mysql start /sbin/service httpd start 完成后,chmod +x backup.sh,将权限改为可执行 然后crontab -e编辑定时触发事件,每天凌晨3点执行backup.sh 01 3 * * * /usr/sbin/backup.sh ===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
返回至“
双机备份
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
社群首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息