上周的旧 tar 文件夹

上周的旧 tar 文件夹

我正在尝试创建一个需要存档上周文本日志的脚本。

基本上,我们有一条路径,其中有按日期排序的文件夹,如下所示,每个文件夹包含包含当天数据的 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/

相关内容