Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!ames!apple!rutgers!att!occrsh!uokmax!jeffm From: jeffm@uokmax.UUCP (Jeff Medcalf) Newsgroups: comp.unix.questions Subject: How to recover (and remove) UNIX files Message-ID: <3639@uokmax.UUCP> Date: 22 Aug 89 23:41:56 GMT Reply-To: jeffm@uokmax.UUCP (Jeff Medcalf) Distribution: na Organization: No, it isn't really. Lines: 135 The following shell scripts are: rm -- remove files to compressed storage in /usr/tmp/.$USER unrm -- bring those files back rml -- list files "removed" rmclean -- clean up /usr/tmp/.$USER rm, unrm, and rml were originally created by blknowle@uokmax.UUCP (Brad Knowles) and were modified by jeffm@uokmax.UUCP (Jeff Medcalf). rmclean was created by jeffm@uokmax.UUCP. #! /bin/sh #This is rm. It moves files to be removed to /usr/tmp/.$USER, then compresses #them. If /usr/tmp/.$USER does not exist, it will be created. The -f option #forces removal to be permanent. # name="rm" sd="/usr/tmp/.$USER" if test $# -lt 1 then echo "Usage: $name [-f] []" >&2 exit 1 elif test "$1" = "-f" then shift /bin/rm $* & exit 0 elif test ! -s $sd then mkdir $sd chmod 700 $sd fi until test $# -eq 0 do if test ! -f $1 then echo "$name: $1: not normal or nonexistent file." >&2 else (/bin/cp $1 $sd ; /usr/local/compress $sd/$1 > /dev/null 2>&1 ; /bin/rm -f $1) & fi shift done exit 0 #END OF RM #This is rml. It simply displays files which were previously rm'd. #This is better as an alias. ls -lasig /usr/tmp/."$USER"| less #END OF RML #! /bin/sh #This is unrm. It will recover files previously rm'd. name="unrm" sd="/usr/tmp/.$USER" if test $# -lt 1 then echo "Usage: $name []" >&2 exit 1 fi until test $# -eq 0 do if test -s $sd/$1.Z then exist=2 else exist=0 fi if test -s $sd/$1 then exist=`expr $exist + 1` fi if test -f $sd/$1.Z then normal=2 else normal=0 fi if test -f $sd/$1 then normal=`expr $normal + 1` fi if test $exist -eq 0 -o $normal -eq 0 then echo "$name: $1: not normal or nonexistent file." >&2 elif test $exist -eq 2 -a $normal -eq 2 then (/usr/local/uncompress $sd/$1 > /dev/null 2>&1 ; /bin/cp $sd/$1 . ; /bin/rm $sd/$1) & elif test $exist -eq 1 -a $normal -eq 1 then /bin/cp $sd/$1 . /bin/rm $sd/$1 elif test $exist -eq 3 -o $normal -eq 3 then echo "$name: cannot uncompress $1.Z because $1 already exists." >&2 /bin/cp $sd/$1.Z . /bin/rm $sd/$1 /bin/rm $sd/$1.Z else echo "$name: Something TRULY bizzarre has happened. Report to jkmedcal@uokmax." >&2 echo "argv[1] = $1, exist = $exist, normal = $normal" >&2 exit 3 fi shift done exit 0 #END OF UNRM #! /bin/sh #Permanently remove a file from /usr/tmp/.$USER #The -z option looks for files with a .Z suffix #The -all option completely removes the directory. name="rmclean" sd="/usr/tmp/.$USER" if test $# -lt 1 then echo "$name: usage: rmclean [-z | -all] filename [filenames]" elif test ! -s $sd then echo "$name: Directory $sd does not exist." exit 1 fi if test "$1" = "-z" then isz=".Z" shift else isz="" fi if test "$1" = "-all" then /bin/rm -r $sd echo "$sd is cleaned." exit 0 else until test $# -eq 0 do if test -f $sd/$1$isz then /bin/rm -f $sd/$1$isz else echo "$name: File $sd/$1$isz does not exist." exit 1 fi shift done exit 0 fi jeffm@uokmax.UUCP Jeff Medcalf jeffm@uokmax.ecn.uoknor.edu Is she spoiled? No, she always smells that way.