Re: Amrecover hangs after restore

Gene Heskett <[email protected]>
Newsgroups gmane.comp.archivers.amanda.user
Organization none,nada,zip
Message-ID <[email protected]>
On Friday 18 December 2020 03:03:39 Gene Heskett wrote:

> On Friday 18 December 2020 01:09:02 Gene Heskett wrote:
> > On Thursday 17 December 2020 22:23:16 Nathan Stratton Treadway wrote:
> > > On Thu, Dec 17, 2020 at 01:58:27 -0500, Gene Heskett wrote:
> > > > Here is the completed output of that command:
> > > >  root@coyote:~$ su amanda -c "/usr/local/sbin/amstatus Daily"
> > >
> > > [...]
> > >
> > > > taped           :  78     13416m     13308m (100.81%) (100.81%)
> > > >     tape 1      :  79     24046m     24046m ( 37.57%) Dailys-21
> > > > (79 parts)
> > >
> > > Okay, those two lines are the section in question from your ouput.
> > > In this case, the "taped" line *does* have statistics on that same
> > > line, so the existing logic in the script should have worked fine,
> > > at least on this run.
> > >
> > > On Thu, Dec 17, 2020 at 06:03:38 -0500, Gene Heskett wrote:
> > > > But lets fix the current problem first, it screwed up last night
> > > > on only 1 vtape. Thast means the edit I made last night, has
> > > > converted it into a full time failure.
> > >
> > > Did you get this fixed?  If not, post the info on the edit you
> > > made and the output from last night's run....
> >
> > I will once this run is done.
> >
> > > 						Nathan
>
> The edited file, wordwrap off:
> ------------------------------
> #!/bin/bash
> # this script is called by backup.sh (flush.sh too) to append the
> # current indices and configs in effect at the time amdump was last
> run # affording a good chance of being able to do a bare metal
> recovery # somewhat less painfully than they normally are.
> # script Copyright 2006 Gene Heskett, license=GPLv2
>
> # Read config
> . /GenesAmandaHelper-0.61/gene.conf
>
> PATH=/bin:/usr/local/sbin:/usr/bin
> #INDICE_PATH=$INDICE_PATH/$1
> echo INDICE_PATH in bak-indice-configs now=$INDICE_PATH
> # 2010/09 recently amanda has stopped using the 'data' link as a
> pointer to the right 'tape', so... #if [ $# -ne 1 ] ; then
> if [ $# -ne 2 ] ; then
> 	echo "The amanda configuration MUST be the first argument to this
> script" echo "And the TAPENUM must be the 2nd argument to this script"
> exit 1
> else
> 	CONFIGNAME=$1
> 	CONFPATH=$BASE_CONFPATH/${CONFIGNAME}
> 	TAPENUM=$2
> 	DATALOC="slot"$TAPENUM
> 	echo "Line 24 DATALOC="$DATALOC
> fi
>
>
> # this is an attempt to derive the tape number for a rewrite of the
> archiving now done # Change this hard coded path to whatever you are
> using for this particular cache, it does NOT # go into your disklist!
>
> #temp stuff these two
> if [ $DUMMY -eq 1 ] ; then
> 	echo "$0 started, mydir=$MYDIR config=$1 CONFPATH=${CONFPATH}"
> fi
>
> if [[ -d $MYDIR'/config-bak' ]] ; then
> 	cd $MYDIR/config-bak
> else
> 	echo "ERROR: the data dir $MYDIR/config-bak does not exist"
> 	exit 2
> fi
>
> # now get the final tape from the tapelist
> # likewise, change this to your real path
> TAPELIST=$CONFPATH/tapelist
>
> #temp stuff
> echo "Tapelist file to be used TAPELIST=${TAPELIST}"
>
> # strip the tapename and tapenumber out of the string
> if [ -f $TAPELIST ] ; then
> 	read TAPEDATE TAPENAME TAPESTATUS junk < $TAPELIST
> 	TAPENUM=${TAPENAME##*-}
> 	echo "tapename=$TAPENAME, tapenum=$TAPENUM"
> fi
>
> # keep track of the passes on the tapes, sort of.
> # first, check to see if old style name exists and use it if it does
> #if [ -f dd.report.$TAPENUM ] ; then
> #        read TAPEUSECOUNT < dd.report.$TAPENUM
> #	echo "Line 57 Tape use count obtained from dd.report.$TAPENUM =
> $TAPEUSECOUNT" #fi
>
> # now, if that bombed
> #if [[ $TAPEUSECOUNT -eq "" ]] ; then
> echo "getting tape usage count from dd.report.$TAPENAME"
> if [ -f dd.report.$TAPENAME ]  ; then
> 	read TAPEUSECOUNT < dd.report.$TAPENAME
>         echo "Line 71 Tape use count from dd.report.$TAPENAME =
> $TAPEUSECOUNT" fi
>
> echo "line 74 Tapeusecount is now="$TAPEUSECOUNT
> # and if it still bombed out, reset the friggin count
> if [[ $TAPEUSECOUNT -eq "" ]] ; then
> 	TAPEUSECOUNT=0
> fi
>
> # increment it
> TAPEUSECOUNT=$(( TAPEUSECOUNT + 1 ))
>
> #some troubelshooting echo's
> echo "This tape "$TAPENAME" has now been used $TAPEUSECOUNT times"
>
> echo "INDICE_PATH=$INDICE_PATH, CONFPATH=$CONFPATH DATALOC=$DATALOC"
>
> # now get rid of the data that was generated the last time this tape
> was used. rm -f configuration.tar.$TAPENAME indices.tar.$TAPENAME
> dd.report.$TAPENAME # this line can leave once all the stuff has been
> renamed else the tapenums are stuck in place! rm -f
> configuration.tar.$TAPENUM indices.tar.$TAPENUM dd.report.$TAPENUM
>
> # Lets see if its safe to write to the tape by generating a new
> dd.report.$TAPENAME # and, so it gets into the email
> touch dd.report.$TAPENAME
>
> # Now set the tape use count as the first line of this refreshed file
> echo "$TAPEUSECOUNT" >  dd.report.$TAPENAME
>
> # and report the invocation name used to line 2 (wrong slot# passed)
> echo "This script is being run as " $0 $* | tee -a dd.report.$TAPENAME
>
> # and report the tapename being used this time on line 3
> echo "using tape $TAPENAME" | tee -a dd.report.$TAPENAME
>
> # if using real tapes AND chg-scsi, enable this next line
> # Is this needed ?
> # mt -f /dev/nst0 tell | tee -a dd.report.$TAPENAME
>
> # if that worked, we should have a current one
> if [ ! -s "dd.report."$TAPENAME ] ; then # -s for exists AND is
> non-zero length echo "dd.report."$TAPENAME" was not created or written
> to"
> 	exit 3
> fi
>
> echo "tar up the indices and configs directories as they exist now."
> >> dd.report.$TAPENAME echo "In bak-indices-configs DUMMY="$DUMMY >>
> dd.report.$TAPENAME if [[ $DUMMY -ne 1 ]] ; then
> #	tar -cpsf indices.tar.${TAPENAME} $INDICE_PATH  2>&1 >>
> dd.report.$TAPENAME tar -cpf indices.tar.${TAPENAME} $INDICE_PATH 
> 2>&1 >> dd.report.$TAPENAME #	tar -cpsf configuration.tar.${TAPENAME}
> $CONFPATH  2>&1 >> dd.report.$TAPENAME tar -cpf
> configuration.tar.${TAPENAME} $CONFPATH  2>&1 >> dd.report.$TAPENAME
> else
> 	tar -cpsf indices.tar.${TAPENAME} $INDICE_PATH
> 	tar -cpsf configuration.tar.${TAPENAME} $CONFPATH
> fi
>
> # We've now generated the up2date indices & configs
> # Figure out if the tape was written to using amstatus
>
> PARTS_WRITTEN=`${AM_SBIN_DIR}/amstatus $CONFIGNAME | grep taped | awk
> -F: '{print $2}' | awk '{print $1}'` # Ok, then lets make it part of
> the dd.report record
> echo "Parts written = $PARTS_WRITTEN" >> dd.report.$TAPENAME

# and this echo is missing from dd.report.Dailys-25
#running the script by itself $PARTS_WRITTEN is a null.

> #if [ "$PARTS_WRITTEN" -gt 0 ]; then
> #	if [ $DUMMY -eq 1 ] ; then
> #		echo "DUMMY="$DUMMY" indices.tar."$TAPENAME" not written"
> #		echo "DUMMY="$DUMMY" configuration.tar."$TAPENAME" not written"
> #		exit 7 # we ought to replace this with a defined error code just to
> be neat. #	else
> 	if [ $VTAPES -eq 1 ] ; then
> 			echo "Using a vtape, so copying the indices & configuration to the
> vtape data dir." # Amanda has stopped using the link 'data' to point
> to the correct tape, breaking this script #			rm -f
> ${VTAPE_LOCATION}/data/indices.tar # replace outdated file rm -f
> ${VTAPE_LOCATION}/$DATALOC/indices.tar # replace outdated file
>
> #			cp indices.tar.$TAPENAME ${VTAPE_LOCATION}/data/indices.tar
> 			cp indices.tar.$TAPENAME ${VTAPE_LOCATION}/$DATALOC/indices.tar
>
> 			echo "Here are the contents of indices.tar" >> dd.report.$TAPENAME
> #			tar tf ${VTAPE_LOCATION}/data/indices.tar >> dd.report.$TAPENAME
> 			tar tf ${VTAPE_LOCATION}/$DATALOC/indices.tar >>
> dd.report.$TAPENAME
>
> #			rm -f ${VTAPE_LOCATION}/data/configuration.tar # replace outdated
> file rm -f ${VTAPE_LOCATION}/$DATALOC/configuration.tar # replace
> outdated file
>
> #			cp configuration.tar.$TAPENAME
> ${VTAPE_LOCATION}/data/configuration.tar cp
> configuration.tar.$TAPENAME
> ${VTAPE_LOCATION}/$DATALOC/configuration.tar
>
> 			echo "And here is the contents of configuration.tar" >>
> dd.report.$TAPENAME #			tar tf
> ${VTAPE_LOCATION}/data/configuration.tar >> dd.report.$TAPENAME tar tf
> ${VTAPE_LOCATION}/$DATALOC/configuration.tar >> dd.report.$TAPENAME
> else
> 			#Real tape
> 			echo "Using a real tape, so writing the indices & configuration
> using dd"
>
> 			# once for the file & once for value
> 			# due to the possibility of a double eof being written by amanda
> 			mt -f /dev/nst0 seod
>
> 			dd if=indices.tar.$TAPENAME of=/dev/nst0 bs=32768 conv=sync 2>&1 >>
> dd.report.$TAPENAME if [ $? -ne 0 ] ; then
> 				echo "dd command failed. Amanda configuration & indices not
> written to tape ! (tape full?)"
> 				exit 4
> 			fi
> 			echo "Here is the contents of indices.tar.$TAPENAME"
>                         tar tf indices.tar.$TAPENAME >>
> dd.report.$TAPENAME
>
> 			dd if=configuration.tar.$TAPENAME of=/dev/nst0 bs=32768 conv=sync
> 2>&1 >> dd.report.$TAPENAME if [ $? -ne 0 ] ; then
> 				echo "dd command failed. Amanda configuration not written to tape
> ! (tape full?)" exit 5
> 			fi
> 			echo "And here is the contents of configuration.tar.$TAPENAME"
> 			tar tf configuration.tar.$TAPENAME >> dd.report.$TAPENAME
> 			mt -f /dev/nst0 weof 1
> 			echo "Rewinding tape"
> 			mt -f /dev/nst0 rewind
> 		fi
> #	fi
>
> #else
> #	echo $TAPENAME" was not written to as amstatus $CONFIGNAME reported
> it had not written any partitions to tape." | tee -a
> dd.report.$TAPENAME
> #	exit 6
> #fi
>
> # with the above data, we can try to troubleshoot if it fubars.
>
> echo "The script "$0" is finished." | tee -a dd.report.$TAPENAME
> echo "Amandatapes usage="`df /amandatapes` |tee -a dd.report.$TAPENAME
>
> # The file /amanda/bak-configs/dd.report.$TAPENAME might have enough
> info # to allow troubleshooting if the proceedure blows up someplace. 
> One can # always add more data outputs in the problem area... :-)
> -----------------------------------------------
>
> Thanks Nathan.
>
> Copyright 2019 by Maurice E. Heskett
> Cheers, Gene Heskett



Copyright 2019 by Maurice E. Heskett
Cheers, Gene Heskett
-- 
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
If we desire respect for the law, we must first make the law respectable.
 - Louis D. Brandeis
Genes Web page <http://geneslinuxbox.net:6309/gene>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.