【问题标题】:Compress and moving the files to respective directory压缩文件并将其移动到相应目录
【发布时间】: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')?

标签: bash shell scripting sh


【解决方案1】:

试试这个。

date "+%B" -d '1 day ago' 

上面的命令会给你昨天的月份参数。

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" -d '1 day ago')

【讨论】:

    【解决方案2】:

    试试这个;

    如果今天是一个月的第一天,则将 gzip 文件移动到上个月;

    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
    ifStart=`date '+%d'`
    if [ $ifStart == 01 ]
    then
    mv server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz /opt/Solartis_Monitoring/logsbackup/$(date +"%B" -d 'last month')
    else 
    mv server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz /opt/Solartis_Monitoring/logsbackup/$(date "+%B")
    fi
    
    
    done
    

    【讨论】:

    • 谢谢dogru,会好好利用的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多