Quite some time ago, I wrote a script to do this. It still works on my system, but I am still running 2.4.2p2 on AIX. I can't promise that it will work for you, but here it is if you want to try.
Anthony Montagni, Giovanni wrote: > Hi to all! > I've read the docs, searched through the web, but i cannot find the answer to > this question: > > is possible to search a file in amanda database? for example i have a file > called pippo.sh backed up somewhere in a tape i don't rebember. i only know > filename. > Can i do a search to find the tape and the path of pippo.sh? > > thanks for your help, > > Montagni Giovanni > >
#!/bin/bash ### Note above that this script uses Bash. It should run fine under a different shell, ### but I haven't tested it. ### Start of Script ########################################################################### # amindexsearch - Searches through and Amanda index directory searching # for specified patterns and (optionally) a date # ------------------- # begin : Thu Jul 25 09:02:56 AKDT 2002 # version : 0.2 # copyright : (C) 2002 by Anthony Valentine # email : [EMAIL PROTECTED] ########################################################################### ########################################################################### # # # This program is free software; you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # # the Free Software Foundation; either version 2 of the License, or # # (at your option) any later version. # # # ########################################################################### ### The following line sets up our local environment. Everybody else should ### leave it commented out. #. /etc/profile.gemini ## Turn on debugging DEBUG=false if [ "${DEBUG}" = "true" ]; then set -vx fi if [ $# -lt 2 ] || [ "${1}" = "--help" ] || [ "${1}" = "-h" ]; then echo " " echo "Usage: $(basename $0) <configname> [-d datestring] <pattern1> [pattern2] ... [paternN]" echo " " echo "Where: configname is an Amanda configuration name." echo " datestring is a string in YYYYMMDD format (ex. 20020725)." echo " patternX are the grep regexp patterns to search for." echo " " echo "Note: The Config name is case sensitive, but the search patterns are not." echo "Note: You must include a search pattern even if supply a datestring. If" echo " you want to search for everything for a particular date, use a '.' for" echo " the search pattern" echo " " exit 1 fi ### Set TEMPFILE variables; remove the files before we start TEMPFILE1=/tmp/amindextmp1.$$.${RANDOM} rm -f ${TEMPFILE1} ### Set program names and locations ZCAT=/usr/linux/bin/zcat GREP=/usr/linux/bin/grep SUDO=/bin/sudo #PAGER=/bin/less ### Set amanda user and group AMANDAUSER=amanda AMANDAGROUP=backup ### Find the amanda home directory in the password file AMANDAHOME=$(cat /etc/passwd |${GREP} "^${AMANDAUSER}:" | cut -d: -f 6) ### If your Amanda config directory isn't in the standard location, ### uncomment the following line and set it to it's location. #AMCONFIG=""/usr/local/etc/amanda/${1}" ### If ${AMCONFIG} variable has no value, check standard locations for a valid config directory if [ -z "${AMCONFIG}" ]; then if [ -d ${AMANDAHOME}/${1} ]; then ### Check first in Amanda's home dir (that's where I keep mine) AMCONFIG=${AMANDAHOME}/${1} elif [ -d "/usr/local/etc/amanda/${1}" ]; then ### Then check default location AMCONFIG="/usr/local/etc/amanda/${1}" else echo " " echo "Unknown Config Name" ### If not found, exit with an error echo " " exit 2 fi fi ### Check for datestring; note that DATESTRING is NOT currently validated as an actual date if [ "${2}" = "-d" ]; then DATESTRING=${3} shift 2 ### Check for the existance of a search pattern; exit if none if [ -z "${2}" ]; then echo "No search pattern found. Aborting. . ." exit 3 fi else DATESTRING="." fi ### Get the index directory from the amanda.conf file INDEXDIR=$(cat ${AMCONFIG}/amanda.conf | ${GREP} "^indexdir" | awk '{print $2}' | sed 's/"//g') ### Create a file of search patterns entered on the command line shift 1 while [ $# -gt 0 ] do echo ${1} >> ${TEMPFILE1} shift 1 done ### Print a header echo "LVL HOST DATE DISK FILE" echo "--- --------- -------- ------------------------ ---------------------------------" ### Search through index dir for matches. cd ${INDEXDIR} for INDEX in $(find . -print | ${GREP} ${DATESTRING}) do ### Search inside each compressed index file; for FILE in $(${SUDO} -u ${AMANDAUSER} ${ZCAT} ${INDEX} 2>/dev/null | ${GREP} -if ${TEMPFILE1} 2>/dev/null) do ### get the HOST and pad it out to 10 chars long (for neater printing) SETHOSTTMP=$(echo ${INDEX} | awk -F/ '{print $2}') SETHOST=$(echo "${SETHOSTTMP}"'""""""""""' | sed 's/^\(..........\).*$/\1/') ### get the DISKLIST and pad it out to 25 chars (for neater printing) SETDISKTMP=$(echo ${INDEX} | awk -F/ '{print $3}' | sed 's/_/\//g') SETDISK=$(echo "${SETDISKTMP}"'"""""""""""""""""""""""""' | sed 's/^\(.........................\).*$/\1/') ### get the DATE and BACKUP LEVEL DATELEVEL=$(echo ${INDEX} | awk -F/ '{print $4}') SETDATE=$(echo ${DATELEVEL} | awk -F_ '{print $1}') LEVEL=$(echo ${DATELEVEL} | awk -F_ '{print $2}' | awk -F. '{print $1}') ### Print all that, the name of the file and replace the pad char " with spaces echo "${LEVEL} ${SETHOST}${SETDATE} ${SETDISK}${FILE}"| sed 's/\"/ /g' done done ### Clean up rm -f ${TEMPFILE1} ### End of Script exit 0