Skip to content

Commit 11a2d43

Browse files
committed
Backup your MySQL databases over FTP
1 parent 8dfdb2b commit 11a2d43

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ Nginx与Lua编写脚本的基本构建块是指令执行顺序的图
132132
* [SHELL脚本小技巧](/Nginx-Rtmp/Shell_script.md)
133133
* [Mysql 自动备份脚本安全加锁机制](/Nginx-Rtmp/backup_mysql.sh)
134134
* [PHP和Shell 脚本如何很好的搭配](/PHP/php-shell_run.md)
135+
* [通过FTP备份MySQL数据库](/Shell/Backup-MySQL-FTP.md)
135136

136137
## 微信公众号
137138

Shell/Backup-MySQL-FTP.md

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
### your favorite editor, create the script file
2+
```
3+
vim backupdb.sh
4+
```
5+
6+
```shell
7+
#!/bin/bash
8+
9+
############### Infos - Edit them accordingly ########################
10+
11+
DATE=`date +%Y-%m-%d_%H%M`
12+
LOCAL_BACKUP_DIR="/backups"
13+
DB_NAME="database_name"
14+
DB_USER="root"
15+
DB_PASSWORD="root_password"
16+
17+
FTP_SERVER="111.111.111.111"
18+
FTP_USERNAME="ftp-user"
19+
FTP_PASSWORD="ftp-pass"
20+
FTP_UPLOAD_DIR="/upload"
21+
22+
LOG_FILE=/backups/backup-DATE.log
23+
24+
############### Local Backup ########################
25+
26+
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | gzip > $LOCAL_BACKUP_DIR/$DATE-$DB_NAME.sql.gz
27+
28+
############### UPLOAD to FTP Server ################
29+
30+
ftp -nv $FTP_SERVER << EndFTP
31+
user "$FTP_USERNAME" "$FTP_PASSWORD"
32+
binary
33+
cd $FTP_UPLOAD_DIR
34+
lcd $LOCAL_BACKUP_DIR
35+
put "$DATE-$DB_NAME.sql.gz"
36+
bye
37+
EndFTP
38+
39+
############### Check and save log, also send an email ################
40+
41+
if test $? = 0
42+
then
43+
echo "Database Successfully Uploaded to the Ftp Server!"
44+
echo -e "Database Successfully created and uploaded to the FTP Server!" | mail -s "Backup from $DATE" your_email@email.com
45+
46+
else
47+
echo "Error in database Upload to Ftp Server" > $LOG_FILE
48+
fi
49+
```
50+
完成脚本编辑并保存文件后,我们可以通过以下命令使文件可执行:
51+
```
52+
chmod +x backupdb.sh
53+
```
54+
您现在可以通过在终端中输入进行测试。
55+
```
56+
/backups/backupdb.sh
57+
```
58+
完成执行后,键入ls -a以查看数据库是否已备份。还要确认它是否已发送到您的FTP服务器。
59+
60+
>如果到目前为止一切正常,我们可以使用Crontab使它每天运行。
61+
62+
## Crontab
63+
64+
您可以使用以下命令编辑crontab:
65+
```
66+
crontab -e
67+
```
68+
这将打开一个文本编辑器,您可以在其中输入每份工作的时间表并在新行上输入。
69+
70+
因此,在编辑器中,键入或粘贴以下行:
71+
```
72+
30 02 * * * /backups/backupdb.sh
73+
```
74+
上面的示例将在每月的每天的02:30 am运行/backups/backupdb.sh。当然,您可以根据需要更改时间。

0 commit comments

Comments
 (0)