linux备份数据库并上传至远程服务器(定时执行shell进行ftp上传)

Posted wuhaobk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux备份数据库并上传至远程服务器(定时执行shell进行ftp上传)相关的知识,希望对你有一定的参考价值。

#========================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 脚本======================

 












以上是关于linux备份数据库并上传至远程服务器(定时执行shell进行ftp上传)的主要内容,如果未能解决你的问题,请参考以下文章

mysql自动备份并上传至git仓库

MySQL执行sql查询并上传至远程服务器

想将ubuntu下某个文件夹下的文件定时上传至FTP或者共享文件夹,也可以直接传至另一台LINUX上使用。

Linux下远程备份上传工程,重启服务器

linux自动备份文件 并上传到远程服务器 脚本实现

Linux FTP远程备份shell脚本命令