From 3953315c474ea737305c7a8ae8d63a240938f1f0 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Wed, 2 Jan 2008 07:03:59 +0000 Subject: Guess archive name on restores --- ezjail-admin | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'ezjail-admin') diff --git a/ezjail-admin b/ezjail-admin index 648247c..02e9594 100755 --- a/ezjail-admin +++ b/ezjail-admin @@ -860,7 +860,7 @@ archive) ####################### ezjail-admin RESTORE ######################## restore) # Clean variables, prevent polution - unset ezjail_fromarchive ezjail_archivedir + unset ezjail_archivedir #ezjail_usage_restore="Usage: ${ezjail_admin} restore [-d archivedir] (archive|jailname)..." @@ -871,9 +871,27 @@ restore) [ $# -eq 0 ] && exerr ${ezjail_usage_restore} - # Jail name mandatory - fetchjailinfo $1 + # Default archive directory to . + ezjail_archivedir=${ezjail_archivedir:-`pwd -P`} + while [ $# -gt 0 ]; do + ezjail_fromarchive=$1 + + # if archive location is absolute and doesn't exist, fail + [ "${ezjail_fromarchive%%[!/]*}" -a ! -f "${ezjail_fromarchive}" ] && exerr "Error: File for archive ${ezjail_fromarchive} not found." + if [ -z "${ezjail_fromarchive%%[!/]*}" ]; then + # Try archive location + if [ -r "${ezjail_archivedir}/${ezjail_fromarchive}" ]; then + ezjail_fromarchive="${ezjail_archivedir}/${ezjail_fromarchive}" + else + # If archive is not found, try guessing by jail name + ezjail_safename=`echo -n "$1" | tr -c '[:alnum:]' _` + ezjail_fromarchive=`ls -tr ${ezjail_archivedir}/${ezjail_safename}* | head -n 1` + [ -f "${ezjail_fromarchive}" ] || exerr "Error: No archive for pattern $1 can be found." + fi + fi + echo ${ezjail_fromarchive} + done ;; ######################## ezjail-admin CONFIG ######################## config) -- cgit v1.2.3