我的目录格式为/var/log/2015-03-01/192.168.56.101_SW1002
每周需要将2015-XX-XX
目录放入tarball中。
我到目前为止的脚本逻辑是:
if (-mtime % 7 == 0) && (file extension != .tar)
{
tar -xvvcf /var/log/(most recent date).tar `grep -v *.tar`
}
如何将此逻辑转换为bash脚本?
感谢。
答案 0 :(得分:0)
我可能会设置一个计数器并循环一系列日期,存档最近完成的一周。例如:
#!/bin/sh
LOGDIR='.'
DATECMD='gdate'
WEEKENDING='Sunday'
ENDDATE=`$DATECMD -d "last $WEEKENDING" +%Y-%m-%d`
STARTDATE=`$DATECMD -d "$ENDDATE -6 days" +%Y-%m-%d`
OFN="week_ending_$ENDDATE.tar"
if [ ! -f "$OFN" ]; then
for i in `seq 0 6`; do
LOOPDATE=`$DATECMD -d "$STARTDATE +$i days" +%Y-%m-%d`
if [ -d $LOGDIR/$LOOPDATE ]; then
if [ -f "$OFN" ]; then
tar rvf "$OFN" "$LOGDIR/$LOOPDATE/"
else
tar cvf "$OFN" "$LOGDIR/$LOOPDATE/"
fi
fi
done
fi
上一个脚本可以在前一周关闭日期之后的一周内的任何时间毫无问题地运行。在GNU系统上,将DATECMD设置为' date'。
注意,你的tar命令很棘手。您不能同时创建(-c)提取(-x)和归档。