【Shell】删除指定时间之前的文件

本文介绍了如何根据工作需求使用Shell脚本删除六小时之前的备份数据,以防止硬盘空间不足。文中提到了公司之前三个月未进行清理的SQL备份情况。
摘要由CSDN通过智能技术生成

工作需求,要求删除六小时之前的所有备份数据,以免硬盘爆掉

下面给出第一版:

#!/bin/bash

##create log dirPath
declare logDirPath="/home/ipm/shell/log"
if [ ! -d ${logDirPath} ];then
	mkdir ${logDirPath}
fi
declare logFilePath=${logDirPath}"/jiakuandelete.log"
if [ -f ${logFilePath} ];then
	rm -f ${logFilePath}
fi
touch ${logFilePath}
unset logDirPath

##http in data03,others in data04
declare sourceDataDirPath="/data04/dpi/bak/"
declare sourceDataDirNameArray=("dns" "mms" "ftp" "email" "voip" "rtsp" "im" "p2p" "common")
declare startTime=$(date +%Y%m%d%H%M%S)
echo "-----------------execute time:${startTime} start-----------------" >> ${logFilePath}
unset startTime

declare sixHoursAgo=$(date +%Y%m%d%H -d '-6 hours')
echo "sixHoursAgo:"${sixHoursAgo} >> ${logFilePath}
##delete six hours ago data of "http"
echo "deleteDataDirPath:rm -f /data03/dpi/bak/http/*"${sixHoursAgo}"*" >> ${logFilePath}
rm -f /data03/dpi/bak/http/*${sixHoursAgo}*
##delete "dns" "mms" "ftp" "email" "voip" "rtsp" "im" "p2p" "common" datas six hours ago
for sourceDataDirName in ${sourceDataDirNameArray[*]};do
{
	echo "deleteDataDirPath:rm -f "${sourceDataDirPath}${sourceDataDirName}"/*"${sixHoursAgo}"*" >> ${logFilePath}
	rm -f ${sourceDataDirPath}${sourceDataDirName}/*${sixHoursAgo}*
}&
done
wait
declare endTime=$(date +%Y%m%d%H%M%S)
echo "-----------------execute time:${endTime} end-----------------" >> ${logFilePath}
unset endTime
unset logFilePath
unset sourceDataDirName
unset sixHoursAgo
unset sourceDataDirNameArray
unset sourceDataDirPath


公司要求删除一个月之前的备份文件,免得把硬盘给整爆了,上服务器看了下,居然都有3个月的备份没有清理了,还好是sql备份,不然硬盘空间早就满了.


下面是我的解决办法:
cat delbak.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值