【问题标题】:Deleting Folders From Azure Storage Containers or File Shares That are Older than X Days从 Azure 存储容器或文件共享中删除早于 X 天的文件夹
【发布时间】:2017-10-09 16:22:34
【问题描述】:

我正在使用 Azure 存储帐户并尝试使用 powershell 来删除容器上存在的文件夹(我知道容器只是一个 2 层层次结构和 blob 概念,并且每个文件夹实际上并不存在)。

除了无法检查文件夹日期/时间属性之外,在 blob 本身上,我能找到的唯一属性是“上次修改”,这对于我们的目的来说通常是可以的,尽管拥有创建属性更好。 据我了解,唯一的解决方案是创建一个表并列出每个文件及其创建时间和日期?这件事似乎需要做很多工作。

我可以从该文件夹中枚举一个文件,因为它们都被复制在一起,然后删除所有共享根“文件夹”的 blob,但我更愿意知道文件夹本身的实际最后修改时间,而不是其中的文件。有没有办法实现这一目标?现在,我没有锁定使用 azure 存储容器,文件共享也是可能的,但是当我尝试这样做时,枚举文件夹是可能的,但是修改后的日期和时间属性由于某种原因没有被填充,这是唯一的“ETag”旁边的属性。

提前致谢。

【问题讨论】:

    标签: powershell azure-blob-storage azure-storage-files


    【解决方案1】:

    据我所知,允许用户在本地存储的 blob 上定义过期策略仍在计划中,我们可以在 this Azure storage feedback 找到它。

    如果您想使用 powershell 脚本删除 ''expired'' 文件夹/文件,您可以尝试在 blob 名称中包含带有日期时间的路径信息(例如如 2017/10/test.txt),然后您可以列出并遍历 blob 以将 blob 名称中的datetime 部分与当前日期时间进行比较,如果 blob 超过 x 天,则将其删除。

    另外,如果你不想在blob名称中包含带日期时间的路径信息,你可以尝试将创建日期时间存储在properties or metadata中,然后你可以从属性或元数据中检索blob的创建日期时间,并比较创建日期时间使用当前日期时间来确定是否删除 blob。

    【讨论】:

    • 嗨 Fred,“文件夹”结构和元数据对于我的问题似乎都是非常合理的解决方案。非常感谢。
    • Fred,我们正在使用 azcopy 将文件上传到存储。你能告诉我一个使用 powershell 编辑 blob 元数据的例子吗?我能找到的所有内容都显示了如何将特定的本地文件上传到存储并提供其元数据。我认为我可以对 azcopy 做同样的事情,在工作本身期间提供元数据,有趣的是,本地文件夹是一个项目,在存储上它不是,所以如果我尝试为那个“blob”分配一些元数据会发生什么..
    • 根据AzCopy Parameters的说法,当我们将文件上传到Blob存储时,它不允许我们为Blob设置属性或用户定义的元数据。您可以尝试另一种解决方案(“文件夹”结构)在 blob 名称中包含创建日期时间信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多