Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

MySQL数据自动备份并且ftp的shell文件

[复制链接]
haohaoo 发表于 2004-1-20 03:43:30 | 显示全部楼层 |阅读模式
这个是我写的第一个shell文件,请大家多多指教

MySQLbackup.sh 是备份整个MySQL数据库的数据
  1. #!/bin/bash

  2. ############### MySQL Backup & FTP ################
  3. #Power By SBear 2004-01-20 2:10
  4. #E-mail:sbear_ji@126.com
  5. #http://www.1842.net
  6. #http://www.CnLinux.net

  7. #1. mkdir /home/backup
  8. #2. chmod 700 MySQLbackup.sh
  9. #3. vi /etc/crontab , 30 03 * * * root /home/backup/MySQLbackup.sh
  10. #everyday 03:30 the MySQLbackup.sh will work

  11. #System Setup
  12. host=192.168.0.3  #ftp host
  13. UserName=ftp      #ftp user name
  14. Passwd=ftp        #fto user password

  15. backup_path=/home/backup  #set saved backup path
  16. file=mysql-$(date +%Y%m%d).tar.gz
  17. backupCWD=/usr/local/mysql/var  #set backup file,the mysql database

  18. #stop mysql database server
  19. /usr/bin/killall mysqld
  20. #/etc/rc.c/init.d/mysqld stop

  21. sleep 5s  #stop 5 second

  22. #file tar
  23. tar -czf $backup_path/$file $backupCWD

  24. sleep 10s

  25. #start mysql database server
  26. /usr/local/mysql/bin/mysqld_safe --user=mysql &  #set your mysqld path
  27. #/etc/rc.d/init.d/mysqld start

  28. cd $backup_path
  29. sleep 1s
  30. #file ftp
  31. ftp -i -n <<!
  32. open $host
  33. user $UserName $Passwd
  34. put  $file
  35. bye
  36. !

  37. sleep 10s
  38. rm -rf $backup_path/$file
复制代码



DBbackup.sh 是备份单个数据库的数据
  1. #!/bin/bash

  2. ############### MySQL One DataBase's Backup & FTP ################
  3. #Power By SBear 2004-01-20 2:40
  4. #E-mail:sbear_ji@126.com
  5. #http://www.1842.net
  6. #http://www.CnLinux.net

  7. #1. mkdir /home/backup
  8. #2. chmod 700 DBbackup.sh
  9. #3. vi /etc/crontab , 30 03 * * * root /home/backup/DBbackup.sh
  10. #everyday 03:30 the DBbackup.sh will work

  11. #System Setup

  12. #ftp Info
  13. host=192.168.0.3  #ftp host
  14. UserName=ftp      #ftp user name
  15. Passwd=ftp        #fto user password

  16. #MySQL Info
  17. SQL_host=localhost #MySQL host
  18. SQL_User=root      #MySQL UserName
  19. SQL_Passwd=abc     #User Password
  20. SQL_db=test        #database name


  21. backup_path=/home/backup  #set saved backup path
  22. file=$SQL_db-$(date +%Y%m%d).tar.gz
  23. MySQL_path=/usr/local/mysql/bin  #set the mysql database bin path

  24. cd $backup_path
  25. #export database
  26. $MySQL_path/mysqldump -h $SQL_host -u$SQL_User -p$SQL_Passwd --databases $SQL_db>$SQL_db.dump

  27. sleep 5s
  28. #file tar
  29. tar -czf $backup_path/$file $SQL_db.dump

  30. sleep 10s

  31. cd $backup_path
  32. sleep 1s
  33. #file ftp
  34. ftp -i -n <<!
  35. open $host
  36. user $UserName $Passwd
  37. put  $file
  38. bye
  39. !

  40. sleep 10s
  41. rm -rf $backup_path/$file
  42. rm -rf $backup_path/$SQL_db.dump
复制代码


大家也可以到我的站下载
http://www.1842.net

修改了一点小错误了

[ Last edited by haohaoo on 2004-1-23 at 05:13 PM ]
回复

使用道具 举报

Crossday 发表于 2004-1-20 09:40:02 | 显示全部楼层
不错啊 替你加分了 :)
回复

使用道具 举报

 楼主| haohaoo 发表于 2004-1-20 15:25:26 | 显示全部楼层
谢谢,下次争取来个精华,哈哈
回复

使用道具 举报

BENDY 发表于 2004-1-27 02:50:42 | 显示全部楼层
好东西。
回复

使用道具 举报

cqfanli 发表于 2004-1-27 11:12:24 | 显示全部楼层
好东东,这次是使用shell写的
回复

使用道具 举报

iamxyh 发表于 2006-4-4 22:49:53 | 显示全部楼层
有没有在windows下的呢?
回复

使用道具 举报

Nanu 发表于 2006-4-5 23:04:55 | 显示全部楼层
不错!!

有一个问题,就是数据库备份文件名,如果按照楼主的脚本来运行,那么数据库备份会很快占满磁盘空间,因为每天都要生成一个备份,并且没有重复。但实际当中,大多数情况并不需要保留这么多的备份。因而考虑可以这样:

file=mysql-$(date +%w).tar.gz

这样就会备份最近1周的数据库备份,7个文件,新备份替换旧备份。
回复

使用道具 举报

domin 发表于 2006-4-5 23:09:28 | 显示全部楼层
中间停掉mysql不好
回复

使用道具 举报

Nanu 发表于 2006-4-5 23:49:38 | 显示全部楼层
原帖由 domin 于 2006-4-5 23:09 发表
中间停掉mysql不好


如果不停掉MySQL的话,备份的数据库很有可能是坏的。

可以在凌晨3-5点做。
回复

使用道具 举报

穆亦风 发表于 2006-4-11 09:12:02 | 显示全部楼层
这个应该加净化
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-11-17 01:55 , Processed in 0.099412 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表