快速业务通道

Linux本地和异地自动备份方案

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-22
cat /opt/backup/backupweekly.sh #!/bin/bash
#History
#=====================================================
#When Who What
#2010/3/24 Zhaoyn Create
#
#=====================================================
# 在/etc/crontab中增加每周六执行计划,如:
# 05 2 * * 6 root /opt/backup/backupweekly.sh 2>> error.log
# 27 4 * * 6 root /opt/backup/backupdaily.sh 2>> error.log #
# 脚本功能:
# 1. 日常备份,通常是WEB,FTP,MAIL等配置文件及数据,每周备份一次,并上传最新数据到异地,本地的保留2周.异地的也保留2周,但由异地服务器来执行备份的轮回.
# 2. 数据库备份,通常是MYSQL,在backupdaily.sh脚本中执行.


#=====================================================
# 一、含说明的部分
# 下面设置变量,$timenow用于备份文件名中,以方便保留多个备份.
basedir=/opt/backup
updir=$basedir/updir
timenow=$(date %Y%m%d-%H%M)
# 设置异地的FTP用户名和密码,请替换userid和passwd
ftpuser=userid
ftppw=passwd
# 删除15天之前的备份,备份保留2周,考虑到备份时间和时间误差的问题,把以前的14天改成了15天.
rm -f `find $basedir -name "*.tgz" -mtime 15`
# 下面就开始备份了,tar的参数p,是保留权限等属性,在备份时tar会自动删掉备份路径的"/",这样在恢复时就默认恢复到当前目录.
tar -czpf $basedir/script.$timenow.tgz $basedir/*.sh /root/script
tar -czpf $basedir/etc.$timenow.tgz /etc
tar -czpf $basedir/mail.$timenow.tgz /var/spool/postfix
# 避免磁盘I/O读写出错,喘口气
sleep 5s ;sync;sync
tar -czpf $basedir/www.$timenow.tgz /var/www/html
sleep 5s ;sync;sync
# 如果updir不存在,则创建它
test -e $basedir/updir || mkdir $basedir/updir
# 移动最近1天内的备份到updir,准备上传.
mv `find $basedir -name "*.tgz" -mtime -1` $updir
# 通过FTP,采用bin方式上传,异地数据保留两周,异地数据重命名和自动删除的工作由异地服务器完成,因此FTP可只给予写权限,无读和删除权限,增加安全性.
ftp -v -n -i xxx.xxx.xxx.xxx <<END
user $ftpuser $ftppw
lcd $updir
bin
mput *.tgz
bye
END
mv $updir/* $basedir
#=====================================================
cat /opt/backup/backupdaily.sh #!/bin/bash
#History
#=====================================================
#When Who What
#2010/3/24 Zhaoyn Create
#
#=====================================================

basedir=/opt/backup
updir=$basedir/updir
timenow=$(date %Y%m%d-%H%M)
# 删除mysql十四天前的数据,注意,这里仅删除了mysql的tgz文件.
rm -f `find $basedir -name "mysql*.tgz" -mtime 14`
# 数据库在有连接的情况下,直接对数据文件打包是可能出问题的,这里我们在打包前要停用数据库,这样直接对数据文件打包,恢复时只需解压数据文件到新环境相应的目录即可,默认是/var/lib/mysql # 如果白天也要进行数据库备份,请使用mysqldump命令,进行在线备份.恢复也挺方便的.
/etc/rc.d/init.d/mysqld stop
sleep 5s ;sync;sync
tar -czpf $basedir/mysql.$timenow.tgz /var/lib/mysql
/etc/rc.d/init.d/mysqld start #=====================================================

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号