Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 1 addition & 0 deletions
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‎

Lines changed: 74 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /