【发布时间】:2019-11-15 23:47:55
【问题描述】:
我正在尝试使用这个出色的工具azcopy 将 blob 从一个容器移动到另一个容器。 我的问题是我只需要复制过去 40 天内修改过的 blob。不应复制较旧的 blob。 是否可以指定一个参数来限制数据范围?
【问题讨论】:
标签: azure azure-storage azcopy
我正在尝试使用这个出色的工具azcopy 将 blob 从一个容器移动到另一个容器。 我的问题是我只需要复制过去 40 天内修改过的 blob。不应复制较旧的 blob。 是否可以指定一个参数来限制数据范围?
【问题讨论】:
标签: azure azure-storage azcopy
您可以尝试编写自己的程序来复制基于Azure Storage Data Movement Library 的 blob。这是一个专为高性能传输 Blob/File 设计的库。
您可以参考this sample 了解如何复制 Blob 目录。 要仅复制过去 40 天内修改的 blob,可以使用 DirectoryTransferContext.ShouldTransferCallbackAsync() 来决定是否复制每个 blob。
context.ShouldTransferCallbackAsync = async (source, destination) =>
{
CloudBlob sourceBlob = source as CloudBlob;
if (sourceBlob != null)
{
if (sourceBlob.Properties.LastModified >= DateTime.Now.AddDays(-40))
{
return true;
}
}
return false;
};
【讨论】:
没有参数(我知道)可以做到这一点。
一种解决方案是编写一个程序,枚举过去 40 天内已更改的所有文件。然后使用该程序为要复制的每个 blob 生成一个 azcopy 命令。
您可以使用本文中的代码作为起点。
【讨论】:
azcopy 现在有 --include-after 标志(和 --include-before)。
来自docs:
--include-after string 仅包含在给定日期/时间或之后修改的文件。
【讨论】: