Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!casbah.acns.nwu.edu!navarra From: navarra@casbah.acns.nwu.edu (John 'tms' Navarra) Newsgroups: comp.unix.admin Subject: Re: Non Destructive Version of rm Keywords: rm, undelete Message-ID: <1991May3.212619.21119@casbah.acns.nwu.edu> Date: 3 May 91 21:26:19 GMT References: <144@larry.UUCP> <11283@statware.UUCP> Distribution: na Organization: Northwestern University Lines: 62 In article <11283@statware.UUCP> mcf@statware.UUCP ( Mathieu Federspiel) writes: > > Following are Bourne shell scripts I implemented on our systems. >I install the scripts in /usr/local/bin, and then give everyone an >alias of "rm" to this script. > What happens is, say, you "rm testfile". The script moves >"testfile" to ".#testfile". You then have a period of time to >"unrm testfile" to get the file back. The period of time is >determined by the system administrator, who sets up a job to run >periodically to remove all files with names starting with ".#". > For this removing process, the administrator must, of course, >warn users not to name files as ".#". Since this is a hidden file, >there should be no problem. Note that this preserves the directory >structure of files, which makes life easier than moving everything >to ".wastebasket". Also note that directories will be moved, and >special handling of directories in your removing job may be >required. > Enjoy! I am not to sure about this one. Why would you want to make a script which does not allow users to name a file .# something when you can just make an script to put ALL removed files into a directory /var/preserve/username and remove all files in that directory older than two days? Then you can tell users that they can get into that directory and get a copy of the file they just removed, -- no matter what the name of it is. Also, whatever script you write that searches thru EVERYONE's dir looking for files beginning with a .# would be MUCH slower than doing a find -mtime on a previously specified dir like /var/preserve and then removing those files older than 2 days. Also, when you remove a file from say your home directory, is there a file .#file made in your home dir? and if you are in your bin directory there is a .#file made there? That means of course that whatever script you write to remove these files has to traverse EVERY damn directory on the planet lookin for .# files! Also, when you say hidden, you mean from ls and not ls -las. Well I do a ls -las all the time and I wouldn't want a whole bunch of .# files looking me in the face when I ls my directories. This is what I do: I have a program called rm that moves all files I remove into $HOME/tmp. Then I have a program called night-clean which is run from crontab that looks SPECIFICALLY in $HOME/tmp and removes files older than 2 days. Night-clean reports what files it removes to $HOME/adm/rmlog so I can look periodically at what files crontab has removed in case I forget or something. Of coure, rmlog grows to a considerable size after a while so I have another program called skim which I run to make sure it is not too big :-) Note though, that this is MUCH more efficient than looking a GOD knows how many directories looking for .# files. > >-- >Mathieu Federspiel mcf%statware.uucp@cs.orst.edu >Statware orstcs!statware!mcf >260 SW Madison Avenue, Suite 109 503-753-5382 >Corvallis OR 97333 USA 503-758-4666 FAX > -- From the Lab of the MaD ScIenTiST: navarra@casbah.acns.nwu.edu