#!/bin/sh # # $Id: Restore,v 1.14 2002/06/26 20:32:16 lwl Exp $ # # Restore - Extract and install an archived set of backup # database files. # # Syntax: Restore [filename] # PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:.; export PATH LTDL_LIBRARY_PATH=./modules:./bin:.:../src:../src/modules:../src/.libs:./modules/.libs; export LTDL_LIBRARY_PATH # . mush.config . check_paths # ARCHIVE="$1" # if [ ! "$ARCHIVE" ]; then echo "Syntax: $0 [backup archive]" exit 1 fi # if [ ! -r $ARCHIVE ]; then if [ ! -r "$BACKUP_DIR/$1" ]; then echo "Error: $ARCHIVE not found." exit 1 fi ARCHIVE=$BACKUP_DIR/$1 fi # # # Use the flatfile extension to figure out what type of file we have to # deal with, and how we should deal with it. # case $ARCHIVE in *.gz) UNZIP="gzip -dc" ZEXT="gz" echo "Will use $UNZIP to uncompress gzipped archive." ;; *.Z) UNZIP="compress -dc" ZEXT="Z" echo "Will use $UNZIP to uncompress compressed archive." ;; *.bz2) UNZIP="bzip2 -dc" ZEXT="bz2" echo "Will use $UNZIP to uncompress bzip2 archive." ;; *) UNZIP="cat" ZEXT="" echo "This archive appears to be uncompressed... okay." ;; esac # # If we have other goop in the way, move it out of the way. # echo "Moving old files out of the way. Please ignore file-not-found warnings." # DBDATE=`date +%m%d-%H%M` mkdir db-$DBDATE mv -f $DATA/$GDBM_DB $DATA/$CRASH_DB $DATA/$BACKUP_DB $DATA/mod_*.db db-$DBDATE # # Reload the archive. # case $ARCHIVE in *-archive.*.tar.*) mv -f mush.config $GAMENAME.conf db-$DBDATE mkdir db-$DBDATE/$TEXT TXTFILES=`ls $TEXT/*.txt | egrep -v '^(help|wizhelp|qhelp|mushman).txt'` mv -f $TXTFILES db-$DBDATE/$TEXT echo "Restoring archive." $UNZIP $ARCHIVE | tar -xvf - INFILE=`basename $ARCHIVE | sed -e "s/\\.tar\\.$ZEXT\$//" | sed -e "s/\\-archive/\\.flat/"` . mush.config . check_paths echo "Restoring flatfile $INFILE ..." $BIN/dbconvert -c $GAMENAME.conf -X $DATA/$GDBM_DB < $INFILE rm $INFILE ;; *.tar.*) echo "Restoring module databases and flatfile." INFILE=`echo $ARCHIVE | sed -e "s/\\.tar\\.$ZEXT\$//"` $UNZIP $ARCHIVE | tar -xvf - $BIN/dbconvert -c $GAMENAME.conf -X $DATA/$GDBM_DB < $INFILE rm $INFILE ;; *) echo "Restoring flatfile." $UNZIP $ARCHIVE | $BIN/dbconvert -c $GAMENAME.conf -X $DATA/$GDBM_DB ;; esac