Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305417
  • 博文数量: 111
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 707
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-26 11:00
个人简介

小伙向前冲呀,小伙向前冲呀。

文章分类

全部博文(111)

文章存档

2014年(43)

2013年(68)

我的朋友

分类: LINUX

2014-06-04 06:33:41

shell实现自动、整站数据的两个脚本分享,使用了cron实现实现定时备份,并会自动删除N天前的备份,以及自动上传到别的服务器。
例一:shell+cron实现MySQL自动备份且自动删除N天前备份

  1. #!/bin/sh
  2. DUMP=/usr/local/mysql/bin/mysqldump
  3. OUT_DIR=/home/ldl/xxx/backup/
  4. LINUX_USER=ldl
  5. DB_NAME=ldl
  6. DB_USER=ldl
  7. DB_PASS=xxx
  8. #How much days backup most
  9. DAYS=1
  10. #Core of script
  11. cd $OUT_DIR
  12. DATE=`date +%Y_%m_%d`
  13. OUT_SQL="$DATE.sql"
  14. TAR_SQL="mysql_$DATE.tar.gz"
  15. $DUMP --default-character-set=utf8 --opt -u$DB_USER -p$DB_PASS $DB_NAME > $OUT_SQL
  16. tar -czf $TAR_SQL ./$OUT_SQL
  17. rm $OUT_SQL
  18. chown $DB_NAME:nobody ./$TAR_SQL
  19. find ./ -name "mysql*" -type f -mtime +$DAYS -exec rm {} \;
++
不用解释了吧,注意-uuser -ppass这样才可以,不能有空格。

  1. find ./ -name “mysql*” -type f -mtime +$DAYS -exec rm {} \;
这一句主要是在-mtime上-mtime +5表示5天前的文件,统一删除
我的操作系统是CentOS 5.4,只要把脚本拷贝到/etc/cron.daily,并设置为相同的权限就可以执行了,不用再添加crontab。
案例二:CentOS下自动备份网站和数据库的脚本并上传至FTP
假定这台服务器的网站目录为:/home/www,数据库程序路径为:/usr/local/mysql/bin,数据库名为:levil,ftp服务器为:ftphost,下面先来看完整的自动备份脚本(自动备份脚本保存位置为:/home/backup.sh):

  1. #!/bin/bash
  2. cd /home
  3. WebBakName=web_$(date +%y%m%d).tar.gz
  4. tar zcvf $WebBakName www
  5. SqlBakName=sql_$(date +%y%m%d).tar.gz
  6. /usr/local/mysql/bin/mysqldump -uusername -ppassword levil>backup.sql
  7. tar zcvf $SqlBakName backup.sql
  8. ftp -nv ftphost << EOF
  9. user ftpname ftppass
  10. put $WebBakName
  11. put $SqlBakName
  12. quit
  13. EOF
  14. rm -f backup.sql $WebBakName $SqlBakName
首先进入/home目录,定义WebBakName变量为网站备份的文件名,文件名格式为web日期.tar.gz,定义SqlBakName变量为数据库备份的文件名,文件名格式为sql日期.tar.gz,把整个网站目录www打包到WebBakName文件名中,使用mysqldump导出指定数据库内容到backup.sql,然后把数据库备份打包到SqlBakName文件中,本机备份工作至此结束,如果你没有足够大的远程ftp空间的话,可以直接把备份文件下载到本机,但我还是建议直接备份到另外一个服务器上的ftp空间中,做到完全自动化备份,这时你需要把脚本中的ftphost、ftpname和ftppass分别替换成你的ftp信息,整个备份过程就完成了。

接着输入chmod +x backup.sh给脚本添加执行权限,再输入:crontab -e编辑任务自动开始时间,比如输入:
00 05 1 /home/backup.sh 就代表每周1的上午5点整执行该自动备份操作。
在这一切完成之后,可以先把自动任务时间改为当前的接近时间,看自动备份脚本是否工作正常,测试OK的话以后就不用担心这台服务器出现任何问题导致数据丢失了,当然如果你的数据更新比较频繁的话,建议把自动备份时间调整为每日.
阅读(1431) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~