|
| 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