HCoop
/
hcoop
/
scripts.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
hcoop-all-db-backup: switch cwd to tmpdir
[hcoop/scripts.git]
/
hcoop-all-db-backup
diff --git
a/hcoop-all-db-backup
b/hcoop-all-db-backup
index
03b2001
..
d0a9a10
100755
(executable)
--- a/
hcoop-all-db-backup
+++ b/
hcoop-all-db-backup
@@
-1,28
+1,31
@@
-#!/bin/bash
-x
+#!/bin/bash
#
# This script backs up every database to its own file, gzipped.
# docelic@hcoop.net, Tue Aug 28 13:38:26 EDT 2007
#
#
# This script backs up every database to its own file, gzipped.
# docelic@hcoop.net, Tue Aug 28 13:38:26 EDT 2007
#
-BACKUP_ROOT=/
var/backups/databases
-BACKUP_DAYS=
2
+BACKUP_ROOT=/
srv/backup/database
+BACKUP_DAYS=
7
if ! test -d "$BACKUP_ROOT"; then
echo "Backup root directory '$BACKUP_ROOT' inaccessible."
exit 1
fi
if ! test -d "$BACKUP_ROOT"; then
echo "Backup root directory '$BACKUP_ROOT' inaccessible."
exit 1
fi
-MYSQL_DBS=`sudo -H mysqlshow | tail -n +4 | head -n -1 | cut -d' ' -f 2 | xargs`
+# change cwd; default will be /root which postgres user can't chdir into
+cd /tmp
+
+MYSQL_DBS=`sudo -H mysql -Bse 'show databases' | xargs`
echo "Mysql Databases are: $MYSQL_DBS"
echo "Mysql Databases are: $MYSQL_DBS"
-PGSQL_DBS=`sudo -u postgres psql template1 -
c '\l' | tail -n +4 | head -n -2 | cut -d' ' -f 2
| xargs`
+PGSQL_DBS=`sudo -u postgres psql template1 -
tAc 'SELECT datname FROM pg_database WHERE datistemplate = false;'
| xargs`
echo "Postgres Databases are: $PGSQL_DBS"
# Delete oldest
rm -rf "$BACKUP_ROOT/mysql.$BACKUP_DAYS"
echo "Postgres Databases are: $PGSQL_DBS"
# Delete oldest
rm -rf "$BACKUP_ROOT/mysql.$BACKUP_DAYS"
-rm -rf "$BACKUP_ROOT/postgres.$BACKUP_DAYS"
+rm -rf "$BACKUP_ROOT/postgres
-9
.$BACKUP_DAYS"
-# Rotate
ab
ckup dirs
+# Rotate
ba
ckup dirs
for day in `seq $BACKUP_DAYS -1 1`; do
to=".$day"
let day_before=" $day - 1"
for day in `seq $BACKUP_DAYS -1 1`; do
to=".$day"
let day_before=" $day - 1"
@@
-33,19
+36,21
@@
for day in `seq $BACKUP_DAYS -1 1`; do
fi
mv -f "$BACKUP_ROOT/mysql$from" "$BACKUP_ROOT/mysql$to" 2>/dev/null
fi
mv -f "$BACKUP_ROOT/mysql$from" "$BACKUP_ROOT/mysql$to" 2>/dev/null
- mv -f "$BACKUP_ROOT/postgres
$from" "$BACKUP_ROOT/postgres
$to" 2>/dev/null
+ mv -f "$BACKUP_ROOT/postgres
-9$from" "$BACKUP_ROOT/postgres-9
$to" 2>/dev/null
done
done
+# backups should not be world-readable, mask all o permissions
+umask 0027
+
# Create current dump dirs
# Create current dump dirs
-mkdir --mode=770 "$BACKUP_ROOT/mysql" "$BACKUP_ROOT/postgres"
+mkdir --mode=770 "$BACKUP_ROOT/mysql" "$BACKUP_ROOT/postgres
-9
"
# Perform MYSQL backup
# Perform MYSQL backup
-for db in $MYSQL_DBS; do
- sudo -H mysqldump
"$db" | gzip
- > "$BACKUP_ROOT/mysql/$db.gz"
+for db in $MYSQL_DBS; do
+ sudo -H mysqldump
--single-transaction "$db" | pigz
- > "$BACKUP_ROOT/mysql/$db.gz"
done
# Perform PGSQL backup
done
# Perform PGSQL backup
-for db in $PGSQL_DBS; do
- sudo -H -u postgres pg_dump
"$db" | gzip - > "$BACKUP_ROOT/postgres/$db.gz
"
+for db in $PGSQL_DBS; do
+ sudo -H -u postgres pg_dump
-Fc "$db" > "$BACKUP_ROOT/postgres-9/$db.pg
"
done
done
-