Last active
December 20, 2017 07:36
-
-
Save plasticut/637c18bd859eb2daa8866b4f5638934e to your computer and use it in GitHub Desktop.
Backup dokku database
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
APP_NAME=<APP NAME> | |
HOST=<FTP HOST> | |
USER=<FTP USER> | |
PASS=<FTP PASSWORD> | |
# mongo, mysql, postgres & etc. | |
DB=mongo | |
CUR_DATE=$(date +%F-%H-%M) | |
BACKUP_COUNT=30 | |
CRON_COMMAND="/home/dokku/${APP_NAME}/backup_database.sh > /home/dokku/${APP_NAME}/backup_database.log 2>&1" | |
CRON_SCHEDULE="0 3 * * *" | |
cd /home/dokku/${APP_NAME} | |
# Install cron job | |
( crontab -u dokku -l | grep -v -F "$CRON_COMMAND" ; echo "$CRON_COMMAND $CRON_SCHEDULE" ) | crontab -u dokku - | |
# Dump database and gzip it | |
dokku ${DB}:export ${APP_NAME} | gzip --stdout > "./${APP_NAME}_${CUR_DATE}.tar.gz" | |
# Upload file to ftp://<host>/<app name>/ | |
ftp -inv $HOST << EOF | |
user $USER $PASS | |
mkdir $APP_NAME | |
cd $APP_NAME | |
put ${APP_NAME}_${CUR_DATE}.tar.gz | |
bye | |
EOF | |
# Remove local file | |
rm "./${NAME}_${CUR_DATE}.tar.gz" | |
# Delete old remote backups | |
( | |
while read line; do echo ${line##* }; done << EOF | |
$(curl -s ftp://$HOST/$APP_NAME/ --user $USER:$PASS) | |
EOF | |
) | sort -r | tail -n +$((BACKUP_COUNT+1)) | ( | |
echo user $USER $PASS | |
echo cd $APP_NAME | |
while read line; do echo del ${line}; done; | |
echo bye | |
) | ( | |
ftp -inv $HOST | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment