linux自动备份mysql并上传到远程ftp脚本
- 七月 9th, 2010
生产需要,在cent os 5.4下自动备份mysql数据库并上传到远程ftp,花了点时间,脚本如下:
#!/bin/bash
#auto ftp bakup
#by xhat 2010.06.08
#要备份的数据库
DBName=wwwdbname
#ftp账号信息
ftphost="test.com"
ftpuser=username
ftppass=passwd
#mysql账号信息
DBUser=root
DBPasswd=123456
BackupPath=./
NewFile="$BackupPath"db$(date +%y%m%d).tar.gz
DumpFile="$BackupPath"db$(date +%y%m%d).sql
OldFile="$BackupPath"db$(date +%y%m%d --date='1 days ago').tar.gz
#LogFile="$BackupPath"db$(date +%y%m%d --date='1 days ago').txt
echo "---------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "---------------------------"
#删除
if [ -f $OldFile ]; then
rm -f $OldFile
echo "[$OldFile]Delete Old File Success!"
fi
#新
if [ -f $NewFile ]; then
echo "[$NewFile] 已经存在,不再备份! "
else
/opt/mysql/mysqldump -u$DBUser -p$DBPasswd $DBName > $DumpFile
sleep 5
tar czvf $NewFile $DumpFile
rm $DumpFile -rf
echo "[$NewFile]备份成功"
fi
echo "打开ftp"
ftp -i -in <<!
open $ftphost 21
user $ftpuser $ftppass
cd /
mput *.tar.gz
bye
!
echo "备份完成"
#auto ftp bakup
#by xhat 2010.06.08
#要备份的数据库
DBName=wwwdbname
#ftp账号信息
ftphost="test.com"
ftpuser=username
ftppass=passwd
#mysql账号信息
DBUser=root
DBPasswd=123456
BackupPath=./
NewFile="$BackupPath"db$(date +%y%m%d).tar.gz
DumpFile="$BackupPath"db$(date +%y%m%d).sql
OldFile="$BackupPath"db$(date +%y%m%d --date='1 days ago').tar.gz
#LogFile="$BackupPath"db$(date +%y%m%d --date='1 days ago').txt
echo "---------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "---------------------------"
#删除
if [ -f $OldFile ]; then
rm -f $OldFile
echo "[$OldFile]Delete Old File Success!"
fi
#新
if [ -f $NewFile ]; then
echo "[$NewFile] 已经存在,不再备份! "
else
/opt/mysql/mysqldump -u$DBUser -p$DBPasswd $DBName > $DumpFile
sleep 5
tar czvf $NewFile $DumpFile
rm $DumpFile -rf
echo "[$NewFile]备份成功"
fi
echo "打开ftp"
ftp -i -in <<!
open $ftphost 21
user $ftpuser $ftppass
cd /
mput *.tar.gz
bye
!
echo "备份完成"
完成上面脚本后,在crontab里面加入每天凌晨定时执行即可。
10 3 * * * /opt/bak/mybak


在vps上面试试~~有用~~谢老大`