#========================start shell 脚本============================ #!/bin/bash #定义备份数据库时使用的用户名和密码 db_user="root" db_passwd="111111" #定义FTP服务器地址、用户名、密码、目录 ftp_url=113.108.8.80 ftp_user=ftpuser ftp_passwd=111111 ftp_dir=/mysql_backup/xxxx #数据库备份的路径 backup_dir=/home/mysqlbak #当前日期 time=` date +%Y%m%d ` #得到所有数据库名的sql sql="show databases" #得到所有数据库名 declare databases=`mysql -u${db_user} -p${db_passwd} -e "${sql}"` #循环数据库名列表,执行备份 for db_name in $databases do if [ $db_name != "Database" ] && [ $db_name != "information_schema" ] && [ $db_name != "mysql" ] && [ $db_name != "test" ]; then echo " the item is $db_name" /usr/bin/mysqldump -u$db_user -p$db_passwd -R -E -B $db_name > "$backup_dir/$db_name"_"$time.sql" fi done #删除备份目录下早于七天前的文件 find $backup_dir -name '*.sql' -type f -mtime +7 -exec rm {} \; #压缩文件 cd $backup_dir zip -m db_$time.zip *_$time.sql #上传文件 ftp -d -n <<! open "$ftp_url" user "$ftp_user" "$ftp_passwd" passive binary cd $ftp_dir lcd $backup_dir prompt put db_$time.zip close bye ! #====================end shell 脚本======================
passive:开关被动模式,,这里上传需要用主动模式,加上控制开关被动模式 看情况加不加 如果上传使用被动模式 则Entering Passive Mode报错
binary:二进制传输
cd: 服务端cd lcd:客户端cd put上传单个 mput上传多个 get下载单个 mget下载多个 prompt多个提示
#========================start shell 脚本============================#!/bin/bash
#定义备份数据库时使用的用户名和密码db_user="root"db_passwd="111111"
#定义FTP服务器地址、用户名、密码、目录ftp_url=113.108.8.80ftp_user=ftpuserftp_passwd=111111ftp_dir=/mysql_backup/113.108.8.82
#数据库备份的路径backup_dir=/home/mysqlbak
#当前日期time=` date +%Y%m%d `
#得到所有数据库名的sqlsql="show databases"
#得到所有数据库名declare databases=`mysql -u${db_user} -p${db_passwd} -e "${sql}"`
#循环数据库名列表,执行备份for db_name in $databasesdoif [ $db_name != "Database" ] && [ $db_name != "information_schema" ] && [ $db_name != "mysql" ] && [ $db_name != "test" ]; thenecho " the item is $db_name" /usr/bin/mysqldump -u$db_user -p$db_passwd -R -E -B $db_name > "$backup_dir/$db_name"_"$time.sql"fidone
#删除备份目录下早于七天前的文件find $backup_dir -name '*.sql' -type f -mtime +7 -exec rm {} \;
#压缩文件cd $backup_dirzip -m db_$time.zip *_$time.sql
#上传文件ftp -d -n <<!open "$ftp_url"user "$ftp_user" "$ftp_passwd"passive binarycd $ftp_dirlcd $backup_dirpromptput db_$time.zipclosebye!
#====================end shell 脚本======================
安装crontab:
yum install crontabs
crontab -e 打开执行计划
0 10 * * * /home/baksh/bakupmysql.sh 每天10点执行这个脚本
minute hour day month week command
其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
sudo chmod 777 ××× (每个人都有读和写以及执行的权限)
service crond reload
服务操作说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置