当前位置: 首页 > 知识库问答 >
问题:

如何从. tar归档中删除超过某个日期的文件

穆轶
2023-03-14

我有一个. tar文件,每天都有新文件更新。但是,文件超过60天后就没有价值了,不再需要放在归档中。如何从. tar归档中删除超过60天的文件?

我知道有一个 --delete 选项,但我不确定如何搜索符合该条件的文件的存档。

共有1个答案

微生俊捷
2023-03-14

最好使用构建在您需要的设施中的语言。例如,Python有一个tarfile模块,下面展示了如何将Python脚本嵌入到用bash编写的更大脚本中:

#!/usr/bin/env bash

tarfilter_script=$(cat <<'EOF'
import sys
import tarfile
from datetime import datetime, timedelta

delete_older_than = (datetime.now() - timedelta(days=60)).timestamp()

with tarfile.open(fileobj=sys.stdin.buffer) as tar_in, \
     tarfile.open(fileobj=sys.stdout.buffer, mode="w") as tar_out:
    for tarinfo in tar_in:
        if tarinfo.mtime >= delete_older_than:
            tar_out.addfile(tarinfo)
        else:
            sys.stderr.write(f"Skipping file: {tarinfo}\n")
EOF
)

python3 -c "$tarfilter_script" <in.tar >out.tar
 类似资料:
  • 我正在尝试创建多个文本文件的存档。有时这些文件会更新,当这些文件更新时,我使用 tar 中的 选项将这些文件附加到存档中。 假设我们有两个文件,test1.txt和test2.txt.这些文件被添加到存档test.tar. 用焦油 我得到的如预期: 现在,如果我更新test2.txt,并使用< code > tar-f test.tar-u test 2 . txt 将其添加到存档中。 我希望运行

  • 我有以下Log4J配置,我如何删除超过一个月的日志? log=log/ log4j.appender.file.datePattern='.'YYYY-MM-DD-A log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%m%n

  • 问题内容: 我有类型的日期 我想从中减去三个月。 在API中找不到很多乐趣。 问题答案: 这是普通的 JDK 版本,它需要该类作为帮助程序: 但是,由于和类的各种缺点,您应该认真考虑使用 Joda库 。使用Joda,您可以执行以下操作: 或者,如果您要从给定日期而不是当前日期中减去: Java 8更新: 使用Java 8,您还可以使用新的JSR 310 API(受Joda的启发):

  • 通常我可以做到这一点,没有任何问题,但我删除了一些语法在这里,当我继续并删除日期从页面标题在这段代码: 如何删除日期而不删除整个页面?

  • 我在Azure cosmosDB中有一个集合,我在其中启用了无默认值的生存时间(TTL)功能。 根据我将在此问题中提到的文档,一切似乎都非常清楚,但仍然缺少一些东西,因为5天后我仍然可以看到TTL为300秒的文档。 符合文件要求: Azure Cosmos DB将在这段时间后自动删除这些项目,因为它们是最后一次修改的。生存时间值以秒为单位进行配置。当您配置TTL时,系统将根据TTL值自动删除过期的

  • 本文向大家介绍如何使用Java从集合中删除多个文档?,包括了如何使用Java从集合中删除多个文档?的使用技巧和注意事项,需要的朋友参考一下 在Java中,com.mongodb.client.MongoCollection接口提供了方法deleteMany()。使用此方法,您可以一次从集合中删除多个文档,为此,您需要通过指定删除条件的过滤器。 示例 输出结果