【发布时间】:2016-08-09 09:02:22
【问题描述】:
请帮忙,
我的文件夹每天都有日志,所以我的目标是在第二天使用 cron 将文件 tar 和压缩到单独的目录。
***所有日志均以“server.log.2016-08-08”(server.log.year-month-date)格式保存
为了找到我使用的文件for i in
find . -type f -name server.log.$(date "+%Y-%m-%d" -d '1 day ago')
如果日期是 2016-08-09 ,它将查找昨天的服务器日志(server.log.2016-08-07)
***然后为了压缩它,我使用了do tar -czvf server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz $i --remove-files
****我的文件夹为 January,February....December 在路径 /opt/Solartis_Monitoring/logsbackup/(jan,feb...dec)
****现在我需要将存档和压缩文件移动到备份位置 如果压缩的日志属于 8 月份,那么它应该在 August 文件夹中,相同的情况适用于所有月份。
所以我用mv server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz /opt/Solartis_Monitoring/logsbackup/$(date "+%B")
我正在使用 crontab 来执行此操作。
问题:
问题是如果文件在下个月的第一天(9 月)执行,脚本会找到 8 月 31 日的文件并压缩,但在移动压缩文件时,它会移动到 9 月 rit??
因为我使用的是/opt/Solartis_Monitoring/logsbackup/$(date "+%B")
这里date "+%B" 将在 9 月扩展,我的文件将移至 /opt/Solartis_Monitoring/logsbackup/september 右...。
如何解决这个..august 文件假设移动到 august 文件夹中
脚本:
cd /opt/Solartis_Monitoring/JON_Server/logs
for i in `find . -type f -name server.log.$(date "+%Y-%m-%d" -d '1 day ago')`
do tar -czvf server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz $i --remove-files
mv server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz /opt/Solartis_Monitoring/logsbackup/$(date "+%B")
done
【问题讨论】:
-
把
$(date "+%B")改成$(date "+%B" -d '1 day ago')?