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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Linux本地和异地自动备份方案的所有评论