Hi, Axel Beckert wrote: > Attached a patch which adds such functionality.
That patch still had one bug: Monthly backups of global objects did not work. The attached updated patch fixes this. > + dbdump "$MDB" "$BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql" That line needs to be > + dbdumpglobals "$BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql" Regards, Axel -- ,''`. | Axel Beckert <a...@debian.org>, http://people.debian.org/~abe/ : :' : | Debian Developer, ftp.ch.debian.org Admin `. `' | 1024D: F067 EA27 26B9 C3FC 1486 202E C09E 1D89 9593 0EDE `- | 4096R: 2517 B724 C5F6 CA99 5329 6E61 2FF9 CD59 6126 16B5
Index: autopostgresqlbackup-1.0/autopostgresqlbackup =================================================================== --- autopostgresqlbackup-1.0.orig/autopostgresqlbackup 2013-05-02 17:07:19.000000000 +0200 +++ autopostgresqlbackup-1.0/autopostgresqlbackup 2013-05-02 17:50:15.000000000 +0200 @@ -327,6 +327,18 @@ return 0 } +# Global data dump function +dbdumpglobals () { + touch $1 + chmod 600 $1 + if [ -n "$SU_USERNAME" ]; then + su $SU_USERNAME -c "pg_dumpall $PGHOST -g" > $1 + else + pg_dumpall --username=$USERNAME $PGHOST -g > $1 + fi + return 0 +} + # Compression function plus latest copy SUFFIX="" compression () { @@ -428,6 +440,18 @@ BACKUPFILES="$BACKUPFILES $BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql$SUFFIX" echo ---------------------------------------------------------------------- done + + # Backup global stuff + MDB=globals + if [ ! -e "$BACKUPDIR/monthly/$MDB" ] # Check Monthly DB Directory exists. + then + mkdir -p "$BACKUPDIR/monthly/$MDB" + fi + echo Monthly Backup of $MDB... + dbdumpglobals "$BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql" + compression "$BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql" + BACKUPFILES="$BACKUPFILES $BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql$SUFFIX" + echo ---------------------------------------------------------------------- fi for DB in $DBNAMES @@ -476,6 +500,49 @@ echo ---------------------------------------------------------------------- fi done + + # Weekly Globals Backup + DB=globals + + # Create Seperate directory for each DB + if [ ! -e "$BACKUPDIR/daily/$DB" ] # Check Daily DB Directory exists. + then + mkdir -p "$BACKUPDIR/daily/$DB" + fi + + if [ ! -e "$BACKUPDIR/weekly/$DB" ] # Check Weekly DB Directory exists. + then + mkdir -p "$BACKUPDIR/weekly/$DB" + fi + + if [ "$DNOW" = "$DOWEEKLY" ]; then + echo Weekly Backup of Globals + echo Rotating 5 weeks Backups... + if [ "$W" -le 05 ];then + REMW=`expr 48 + $W` + elif [ "$W" -lt 15 ];then + REMW=0`expr $W - 5` + else + REMW=`expr $W - 5` + fi + rm -fv "$BACKUPDIR/weekly/$DB/${DB}_week.$REMW".* + echo + dbdumpglobals "$BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql" + compression "$BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql" + BACKUPFILES="$BACKUPFILES $BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql$SUFFIX" + echo ---------------------------------------------------------------------- + + # Daily Backup + else + echo Daily Backup of Globals + echo Rotating last weeks Backup... + rm -fv "$BACKUPDIR/daily/$DB"/*."$DOW".sql.* + echo + dbdumpglobals "$BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.sql" + compression "$BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.sql" + BACKUPFILES="$BACKUPFILES $BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.sql$SUFFIX" + echo ---------------------------------------------------------------------- + fi echo Backup End `date` echo ======================================================================