鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 服务器相关 > 批处理 > >

在指定时间内不停刷新目录下文件的时间戳

来源:互联网 作者:佚名 时间:2015-11-13 08:08
有时我们工作的远程机器没有给我们提供足够大的home空间,/tmp目录空间够大但是文件会被管理员的清理脚本根据时间戳删除掉,这个脚本可以在未来的若干天之内每隔10分钟刷新目录下所有文件的时间戳,以防止被清理脚本删除 无 #!/bin/sh#Usage : run script und
有时我们工作的远程机器没有给我们提供足够大的home空间,/tmp目录空间够大但是文件会被管理员的清理脚本根据时间戳删除掉,这个脚本可以在未来的若干天之内每隔10分钟刷新目录下所有文件的时间戳,以防止被清理脚本删除 <无>
#!/bin/sh
#Usage : run script under certain directory, to keep files under this directory fresh
#Example: nohup keepAlive 1.5&
#Note: directory should have permission to write files under current directory

#Visit given directory recursively and use touch command to update the timestamp of all files in it
function freshDir() {
	for file in `ls $1`
	do
        touch $1"/"$file
		if [ -d $1"/"$file ]
		then
			freshDir $1"/"$file
		fi
	done
}

#Show help when script started without arguments
function showHelp() {
	echo "Run script under certain directory, to keep files under this directory up to date and not be deleted"
	echo "Example: nohup ~yantang/tools/keepAlive 1.5&"
	echo "Then all files under current directory will be refreshed in the next 1.5 days "
	echo "Kill it manually when you no longer need it"
}

if [ $# -gt 0 ]
then
	daysAlive=$1
else
	showHelp
	exit
fi

curDate=`date`
echo "The time now: $curDate"
echo "The directory will be alive for $daysAlive days"

startTime=`date +%s`
currentTime=$startTime
typeset days=$(echo ${currentTime} ${startTime}|awk '{print ($1-$2)/86400 }')

isAlive=1

while [ $isAlive -gt 0 ]
do
	freshDir "."
	sleep 600    #Sleep 10 minutes
	currentTime=`date +%s`
	days=$(echo ${currentTime} ${startTime} | awk '{print ($1-$2)/86400 }')
	isAlive=$(echo ${days} ${daysAlive}|awk '{if($1<$2) print 1; else print 0;}')
done

curDate=`date`
echo "Now the time is $curDate .keepAlive stopped running. Bye"
网友评论
<