# @(#)restorefiles 1.1 /sccs/src/cmd/sadmin/shell/s.restorefiles # restore a file from the save area to the regular file systems flags="-qq -k$$" trap 'exit' 1 2 15 sfile=`checkre ${flags} -fe 'Enter full path name of file to be restored [q]: ' \ '.' ' ' \ '^[^ ; ][^ ; ]*$' 'Blanks or tabs not permitted in the file name.' \ '^/' 'A full path name must begin with "/".' \ '[^/]$' 'No trailing "/" in the file name.' \ '/[^/]\{1,14\}$' 'No more than 14 characters in a file name.'` echo 'Enter path name of where restored file is to be placed or press RETURN if restored file is to be put to its original place:\n\t\c' read rfile if [ -z "${rfile}" ] then rfile=${sfile} fi trap 'exit 1' 1 2 15 trap "rm -f /tmp/$$restorefiles /tmp/$$Xrestorefiles" 0 ( cd /save/list fgrep -x ${sfile} /dev/null */* | tail -1 >/tmp/$$restorefiles ) if [ ! -s /tmp/$$restorefiles ] then echo "File '${sfile}' not in save area." exit fi ed - /tmp/$$restorefiles <<-! t. s;^;cp '/save/files/; s;:;'; s;$; /tmp/$$Xrestorefiles; -s/:.*// s;\(..\).\(..\).\(..\).\(.*\);echo Found '${sfile}' saved \4 \2/\3/\1.; w q ! sh /tmp/$$restorefiles 2>/dev/null || { echo >&2 "Unable to restore '${sfile}'. Wrong permission." exit 1 } if mv /tmp/$$Xrestorefiles ${rfile} then echo "'${sfile}' now restored as\\n'${rfile}'." else echo "'${sfile}' not restored." fi