我正在尝试创建一个需要存档上周文本日志的脚本。
基本上,我们有一条路径,其中有按日期排序的文件夹,如下所示,每个文件夹包含包含当天数据的 csv 文件
2015-02-01
2015-02-02
2015-02-03
2015-02-04
2015-02-05
我们希望运行一个每周日运行的脚本,并将上周所有文件夹的所有文件夹和文件存档。
知道如何实现这个目标吗?
我正在使用此命令进行测试,它应该存档所有超过 5 天的文件夹,但它只是压缩一个文件夹
find . -type d -mtime +5 -print -exec tar -zvcf test.tar.gz {} \;
答案1
如果您在特定的一天运行该脚本,并且您可以访问 GNU 日期和 GNU tar(即 Linux),那么您可以使用类似这样的命令(我认为您正在使用 bash,未在其他 shell 上测试过):
for i in {1..7}; do
FOLDER=`date +%Y-%m-%d -d "$i days ago"`
tar zcfv /var/tmp/${FOLDER}.tgz ${FOLDER}/
done
GNU 日期很重要,因为它理解 -d“N 天前”参数。
由于文件夹名称是可预测的,因此这通常也比查找更快
/编辑:如果您需要一整个星期的档案,只需添加到 tar 源中。
WEEK=`date +%U`
SOURCE=""
for i in {1..7}; do
FOLDER=`date +%Y-%m-%d -d "$i days ago"`
SOURCE=${SOURCE}" "${FOLDER}/
done
tar zcfv /var/tmp/week${WEEK}.tgz ${SOURCE}
我的测试脚本的输出(截至今天):
tar zcfv /var/tmp/week07.tgz 2015-02-17/ 2015-02-16/ 2015-02-15/ 2015-02-14/ 2015-02-13/ 2015-02-12/ 2015-02-11/