Initial revision
This commit is contained in:
parent
87853d6f12
commit
1273c9fff5
100
contrib/auto_del.csh
Executable file
100
contrib/auto_del.csh
Executable file
|
|
@ -0,0 +1,100 @@
|
||||||
|
#!/bin/csh -f
|
||||||
|
|
||||||
|
# Set this to where this program, and convdate reside so they can be invoked.
|
||||||
|
set MY_DIR = /usr/fsp/bin
|
||||||
|
|
||||||
|
# Set this to where you want the log files stored. If you don't want
|
||||||
|
# any log files, set this to /dev/null
|
||||||
|
set LOG_DIR = /usr/fsp/logs
|
||||||
|
|
||||||
|
# Set this to point to the top level of your FSP export directory
|
||||||
|
set FSP_HOME = /usr/fsp/data
|
||||||
|
|
||||||
|
# auto_del version 1.0
|
||||||
|
|
||||||
|
# A c-shell script that uses convdate, and walks all directories under
|
||||||
|
# your FSP home directory in order to find files that are out dated.
|
||||||
|
# It allows complete control of how long to leave files alone via 2
|
||||||
|
# files, .FSP_EXPIRE and .FSP_TIMEOUT. If neither of these two files
|
||||||
|
# exist, the directory is ignored, if either of them exist, every file
|
||||||
|
# in the directory is tested to see if it should be expired or timed
|
||||||
|
# out. Each of the two files contains one line containing an integer.
|
||||||
|
# This integer is the number of days after which a file should be
|
||||||
|
# expired or timed out. The .FSP_EXPIRE causes the script to check
|
||||||
|
# the current date against the last access (includes reads) time and
|
||||||
|
# if it's greater, remove it. The .FSP_TIMEOUT checks the last
|
||||||
|
# modified time and compares it to the date and if it has been around
|
||||||
|
# too long, to remove it.
|
||||||
|
|
||||||
|
# This simple script written by Joseph Traub (jtraub@cs.cmu.edu)
|
||||||
|
# Feel free to use it, hack it, have sex with it, or whatever.
|
||||||
|
# Author disclaims any responsibility whatsoever for any acts performed
|
||||||
|
# with this script or any derivitive thereof.
|
||||||
|
|
||||||
|
|
||||||
|
# if we are called with no arguments start at the top level of the export dir.
|
||||||
|
# otherwise start at the directory we're called with.
|
||||||
|
if ( ${#argv} == 1 ) then
|
||||||
|
cd $1
|
||||||
|
else
|
||||||
|
cd $FSP_HOME
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Look for the two special files that mark this directory as a victim for
|
||||||
|
# this scripts tender mercies.
|
||||||
|
if ( -e .FSP_EXPIRE || -e .FSP_TIMEOUT) then
|
||||||
|
set can_remove = 1
|
||||||
|
else
|
||||||
|
set can_remove = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Get the time limit for auto-expiration. The file .FSP_EXPIRE should
|
||||||
|
# contain one line which has an integer number of days.
|
||||||
|
if (-e .FSP_EXPIRE) then
|
||||||
|
set expire_time = `cat .FSP_EXPIRE`
|
||||||
|
else
|
||||||
|
set expire_time = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Get the time limit for auto-expiration. The file .FSP_TIMEOUT should
|
||||||
|
# contain one line which has an integer number of days.
|
||||||
|
if (-e .FSP_TIMEOUT) then
|
||||||
|
set time_out = `cat .FSP_TIMEOUT`
|
||||||
|
else
|
||||||
|
set time_out = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
# I include .* here as a hack to keep it from printing errors when it
|
||||||
|
# doesn't find any normal files.
|
||||||
|
foreach i (* .*)
|
||||||
|
if ( $i !~ .* ) then
|
||||||
|
if ( -d $i ) then
|
||||||
|
$MY_DIR/auto_del $i
|
||||||
|
else
|
||||||
|
if ( $can_remove ) then
|
||||||
|
set removed = 0
|
||||||
|
set atime = `$MY_DIR/convdate -a $i`
|
||||||
|
set mtime = `$MY_DIR/convdate -m $i`
|
||||||
|
set d = `date`
|
||||||
|
set date = `$MY_DIR/convdate -d $d`
|
||||||
|
set file_age = 0
|
||||||
|
@ file_age = $date - $mtime
|
||||||
|
set last_read = 0
|
||||||
|
@ last_read = $date - $atime
|
||||||
|
if ( $time_out ) then
|
||||||
|
if ( $time_out < $file_age ) then
|
||||||
|
\rm -rf $i >& /dev/null
|
||||||
|
echo "[$d] timedout $i" >> $LOG_DIR/auto_del.log
|
||||||
|
set removed = 1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if ( $expire_time && ! $removed ) then
|
||||||
|
if ( $expire_time < $last_read ) then
|
||||||
|
\rm -rf $i >& /dev/null
|
||||||
|
echo "[$d] expired $i" >> $LOG_DIR/auto_del.log
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
end
|
||||||
Loading…
Reference in New Issue
Block a user