Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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
- )
Add Comment
Please, Sign In to add comment