我有一堆日志文件,根据它们的创建日期命名。例如,如果我的日志文件是在2018年3月12日创建的,则日志文件的名称为log-2018-03-12.log
下面是我想要做的事情:从今天开始,我想检查我的日志文件的名称,并压缩在过去10天内创建的日志文件。
下面是将所有日志文件压缩到特定目录中的代码:
#!/bin/bash
# current time
now=$(date +"%F")
backupfile="backup-$now"
scripthome=/opt/MyStore/action_scripts/deneme/
tendaysbefore= date -d "$now - 10 days" '+%F'
for file in $scripthome;
do
find "$(basename "$file")" | zip -R $backupfile.zip "log-2*.log"
done但是我想要压缩10天的日志文件,而不是所有的日志文件,而且我还想在这之后的每10天继续这样做。另外,在有zip文件之后,我想删除旧的日志文件。换句话说,我正在尝试编写一个日志备份脚本。你能帮帮我吗?
非常感谢!
发布于 2018-11-19 14:15:12
#!/bin/bash
END=10
for ((i=1;i<=END;i++)); do
file=log-`date -d "$i days ago" +"%F"`.log
echo $file
done有了上面的脚本,您就有了最后10天的文件名。稍后(内部循环),您可以做任何您想做的事,比如将它添加到现有的zip中,或者搜索它的存在。
编辑:
根据您的要求,下面的代码可能很有用
#!/bin/bash
# current time
now=$(date +"%F")
backupfile="backup-$now"
scripthome=/home/bhanu/opt/MyStore/action_scripts/deneme/
tendaysbefore=`date -d "$now - 10 days" '+%F'`
for file in $scripthome;
do
zip -r -tt $now -t $tendaysbefore "$backupfile.zip" $scripthome/log-*.log > add.log 2>&1
zip "$backupfile.zip" -d "*" -tt $tendaysbefore > delete.log 2>&1
donehttps://stackoverflow.com/questions/53375441
复制相似问题