diff options
Diffstat (limited to 'sandbox/fwiemann/fsfsbackup.sh')
-rwxr-xr-x | sandbox/fwiemann/fsfsbackup.sh | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/sandbox/fwiemann/fsfsbackup.sh b/sandbox/fwiemann/fsfsbackup.sh deleted file mode 100755 index 32d472760..000000000 --- a/sandbox/fwiemann/fsfsbackup.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/bash - -# Author: Felix Wiemann -# Contact: Felix_Wiemann@ososo.de -# Revision: $Revision$ -# Date: $Date$ -# Copyright: This file has been placed in the public domain. - -# Options: -# -# -f Do not print feedback. - -set -e - -trap "echo; echo Exiting with error.; trap - 0; exit 1" 0 1 2 3 15 - -test "$1" == -f && printfeedback= || printfeedback=1 - -function feedback() { - test "$printfeedback" && echo "$@" || true -} - -function do_backup() { - # If any of the tests fails, the script terminates silently. - feedback "Checking that all necessary variables are set." - test -n "$BACKUPDIR" - test -n "$HOST" - test -n "$REMOTEDIR" - if test ! -d "$BACKUPDIR"; then - feedback "Creating backup directory $BACKUPDIR." - mkdir --parents --verbose "$BACKUPDIR" - fi - if test ! -f "$BACKUPDIR/db/fs-type"; then - feedback - echo "$BACKUPDIR/db/fs-type not found." - echo "Please fetch the first copy of the repository database yourself." - echo "I only assist in doing incremental backups of repository databases." - exit 1 - fi - feedback "Checking that repository format is FSFS." - test "`cat "$BACKUPDIR/db/fs-type"`" == fsfs - feedback "Changing to database directory $BACKUPDIR/db." - cd "$BACKUPDIR/db" - feedback "Getting local current revision number." - LOCALREVNUM="`cat current | sed 's/ .*//'`" - feedback "Checking that current.new doesn't exist." - if test -f current.new; then - feedback - echo "Make sure that no other instance of this script" - echo "is running and delete the following file:" - echo "$BACKUPDIR/db/current.new" - exit 2 - fi - feedback "Getting remote 'current' file." - ssh "$HOST" "cat '$REMOTEDIR/db/current'" > current.new - feedback "Getting remote current revision number." - REMOTEREVNUM="`cat current.new | sed 's/ .*//'`" - feedback "Checking that we got a response from the server." - test -n "$REMOTEREVNUM" - if ! test "$LOCALREVNUM" -le "$REMOTEREVNUM"; then - feedback - echo "ERROR: Local revision number ($LOCALREVNUM) greater" - echo " than remote revision number ($REMOTEREVNUM)." - echo "Wrong backup directory or changed repository?" - exit 2 - fi - if test "$LOCALREVNUM" -eq "$REMOTEREVNUM"; then - feedback "No backup needed; at revision $LOCALREVNUM." - feedback "Removing 'current.new'." - rm current.new - feedback "Done." - return - fi - LOCALREVNUM="$[$LOCALREVNUM+1]" - feedback "Backing up from revision $LOCALREVNUM to revision $REMOTEREVNUM." - test "$printfeedback" && verbose=-v || verbose= - ssh "$HOST" " - set -e; - cd $REMOTEDIR/db/; - nice -n 10 tar cf - \`seq -f revs/%g $LOCALREVNUM $REMOTEREVNUM\` \`seq -f revprops/%g $LOCALREVNUM $REMOTEREVNUM\` | nice -n 10 bzip2 -c" \ - | tar $verbose -xjf - - feedback "Renaming 'current.new' to 'current'." - mv current.new current - feedback "Done." -} - -feedback 'Reading ~/.fsfsbackup.' -source ~/.fsfsbackup -feedback 'Finished.' -trap - 0 1 2 3 15 |