-
Notifications
You must be signed in to change notification settings - Fork 0
/
dbbackups_pgsql.sh
44 lines (31 loc) · 1.08 KB
/
dbbackups_pgsql.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/bash
# crontab example:
# 1 4 * * * /usr/local/bin/dbbackups_pgsql daily
# 1 5 * * 0 /usr/local/bin/dbbackups_pgsql weekly
if [ "$1" != "daily" ] && [ "$1" != "weekly" ]; then
echo "Syntax: $(basename $0) daily|weekly"
exit 1
fi
DATENOW=$(date "+%F_%T")
DB_USER="root"
USERNAME="CHANGEME"
BACKUPROOT="/home/$USERNAME/pgsql_backups/$1/"
export PGPASSWORD="CHANGEME"
function backup_table()
{
DB_NAME="$1"
BACKUPDIR="$BACKUPROOT/$DB_NAME"
BACKUPNAME="db_backup_"$DB_NAME"_"$DATENOW""
LOGFILE="$BACKUPDIR/$BACKUPNAME.log"
echo "Creating Backup $BACKUPDIR/$BACKUPNAME..."
mkdir -p "$BACKUPDIR"
pg_dump --clean --create -U $DB_USER $DB_NAME | xz > "$BACKUPDIR/$BACKUPNAME".xz
echo "Removing all backups except for the last 7..."
find "$BACKUPDIR" -type f | sort | head -n -7 | xargs rm
echo "Contents:"
du -h --total "$BACKUPDIR"/*
}
# create backups
backup_table "ttrss"
backup_table "owncloud"
# restore backups: http://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE