Skip to content

Instantly share code, notes, and snippets.

@simonluijk
Last active December 18, 2015 20:29
Show Gist options
  • Save simonluijk/5840822 to your computer and use it in GitHub Desktop.
Save simonluijk/5840822 to your computer and use it in GitHub Desktop.
Simple script to backup a Heroku hosted postgres database and download to local directory. Assumes one database per app.
#!/bin/bash
# Copyright (c) 2013 Simon Luijk
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
###################################################################
# Simple script to backup a Heroku hosted postgres database and
# download to local directory. Assumes one database per app.
# Set BACKUP_DIR to the directory you wich your backup to be stored
# then add your apps to the APPS list. Thats it.
# See http://devcenter.heroku.com/articles/pgbackups
###################################################################
BACKUP_DIR="/path/to/backups"
APPS=(
appname
)
cd "$BACKUP_DIR" || exit 1
for app in ${APPS[*]}; do
echo "Backing up: $app"
filename="${app}_`date -u '+%Y-%m-%dT%H:%M:%S%z'`.dump"
heroku pgbackups:capture --expire --app $app || continue
curl -o "$filename" "`heroku pgbackups:url --app $app`" || continue
ln -sf "$filename" "${app}_latest.dump"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment