From 11a2d4353b7959e6730f4b4350f203ba14e4ae7d Mon Sep 17 00:00:00 2001 From: Tinywan <756684177@qq.com> Date: Sat, 11 Jul 2020 09:02:42 +0800 Subject: [PATCH] Backup your MySQL databases over FTP --- README.md | 1 + Shell/Backup-MySQL-FTP.md | 74 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 Shell/Backup-MySQL-FTP.md diff --git a/README.md b/README.md index 97709b1..6d4c14b 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,7 @@ Nginx与Lua编写脚本的基本构建块是指令执行顺序的图 * [SHELL脚本小技巧](/Nginx-Rtmp/Shell_script.md) * [Mysql 自动备份脚本安全加锁机制](/Nginx-Rtmp/backup_mysql.sh) * [PHP和Shell 脚本如何很好的搭配](/PHP/php-shell_run.md) +* [通过FTP备份MySQL数据库](/Shell/Backup-MySQL-FTP.md) ## 微信公众号 diff --git a/Shell/Backup-MySQL-FTP.md b/Shell/Backup-MySQL-FTP.md new file mode 100644 index 0000000..350c71e --- /dev/null +++ b/Shell/Backup-MySQL-FTP.md @@ -0,0 +1,74 @@ +### your favorite editor, create the script file +``` +vim backupdb.sh +``` + +```shell +#!/bin/bash + +############### Infos - Edit them accordingly ######################## + +DATE=`date +%Y-%m-%d_%H%M` +LOCAL_BACKUP_DIR="/backups" +DB_NAME="database_name" +DB_USER="root" +DB_PASSWORD="root_password" + +FTP_SERVER="111.111.111.111" +FTP_USERNAME="ftp-user" +FTP_PASSWORD="ftp-pass" +FTP_UPLOAD_DIR="/upload" + +LOG_FILE=/backups/backup-DATE.log + +############### Local Backup ######################## + +mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | gzip > $LOCAL_BACKUP_DIR/$DATE-$DB_NAME.sql.gz + +############### UPLOAD to FTP Server ################ + +ftp -nv $FTP_SERVER << EndFTP +user "$FTP_USERNAME" "$FTP_PASSWORD" +binary +cd $FTP_UPLOAD_DIR +lcd $LOCAL_BACKUP_DIR +put "$DATE-$DB_NAME.sql.gz" +bye +EndFTP + +############### Check and save log, also send an email ################ + +if test $? = 0 +then + echo "Database Successfully Uploaded to the Ftp Server!" + echo -e "Database Successfully created and uploaded to the FTP Server!" | mail -s "Backup from $DATE" your_email@email.com + +else + echo "Error in database Upload to Ftp Server" > $LOG_FILE +fi +``` +完成脚本编辑并保存文件后,我们可以通过以下命令使文件可执行: +``` +chmod +x backupdb.sh +``` +您现在可以通过在终端中输入进行测试。 +``` +/backups/backupdb.sh +``` +完成执行后,键入ls -a以查看数据库是否已备份。还要确认它是否已发送到您的FTP服务器。 + +>如果到目前为止一切正常,我们可以使用Crontab使它每天运行。 + +## Crontab + +您可以使用以下命令编辑crontab: +``` +crontab -e +``` +这将打开一个文本编辑器,您可以在其中输入每份工作的时间表并在新行上输入。 + +因此,在编辑器中,键入或粘贴以下行: +``` +30 02 * * * /backups/backupdb.sh +``` +上面的示例将在每月的每天的02:30 am运行/backups/backupdb.sh。当然,您可以根据需要更改时间。 \ No newline at end of file