如何解决如何从 azure 存储帐户中删除 azure 文件共享旧数据?
我有 3 个月的旧数据存储在 azure 存储帐户上?现在我想删除数据 如果 >= 30 天
解决方法
以下脚本以递归方式列出文件共享中的文件/FileDir,并删除超过 30 天的文件。您可以提供所需的天数限制。 引用自线程 here。
在删除活动之前,请参阅this以了解最佳做法。
$ctx = New-AzStorageContext -StorageAccountName $accountName -StorageAccountKey $key
$shareName = <shareName>
$DirIndex = 0
$dirsToList = New-Object System.Collections.Generic.List[System.Object]
# Get share root Dir
$shareroot = Get-AzStorageFile -ShareName $shareName -Path . -context $ctx
$dirsToList += $shareroot
# List files recursively and remove file older than 14 days
While ($dirsToList.Count -gt $DirIndex)
{
$dir = $dirsToList[$DirIndex]
$DirIndex ++
$fileListItems = $dir | Get-AzStorageFile
$dirsListOut = $fileListItems | where {$_.GetType().Name -eq "AzureStorageFileDirectory"}
$dirsToList += $dirsListOut
$files = $fileListItems | where {$_.GetType().Name -eq "AzureStorageFile"}
foreach($file in $files)
{
# Fetch Attributes of each file and output
$task = $file.CloudFile.FetchAttributesAsync()
$task.Wait()
# remove file if it's older than 14 days.
if ($file.CloudFile.Properties.LastModified -lt (Get-Date).AddDays(-14))
{
## print the file LMT
# $file | Select @{ Name = "Uri"; Expression = { $_.CloudFile.SnapshotQualifiedUri} },@{ Name = "LastModified"; Expression = { $_.CloudFile.Properties.LastModified } }
# remove file
$file | Remove-AzStorageFile
}
}
#Debug log
# Write-Host $DirIndex $dirsToList.Length $dir.CloudFileDirectory.SnapshotQualifiedUri.ToString()
}
(或)
可以按照以下步骤从 Azure 数据工厂配置删除活动。这需要将您的 azure 存储帐户与 ADF 相关联,如果需要,提供帐户名称、文件共享名称和路径。
- 部署 ADF(如果尚未配置):
- 打开 ADF 并创建一个任意名称的流水线。
Process is
:我们选择了存储帐户中文件共享的元数据>遍历它们>为其中超过 30 年的文件配置删除活动天(或者说一些 x 天)
-
- 搜索获取元数据>>选择并拖动以放置在该区域中 显示并命名文件。 2)然后导航到数据集(此数据集 指向存储帐户中的文件),选择新建。所以选择天蓝色 文件存储>命名 3) >>选择格式为 csv 4)>>链接您的帐户 通过设置属性>提供文件路径。
- 要获取早于或等于 30 天的文件,您可以配置结束时间
作为
@adddays(utcnow(),-30)
- 现在我们必须使用 foreach 循环来遍历数组 文件。从活动中拖放 foreach 循环并将其与 获取元数据。
- 在设置中,勾选标记顺序框以按顺序迭代文件。
childItems 是具有数组的 getmetadata 输出 JSON 的属性
的对象。因此,为项目选择动态内容并配置为
@activity("Get old files").output.childItems
并点击 结束。 (这里获取旧文件是我创建的获取活动的名称 以前)
- 在 Foreach 活动中,编辑活动并设置删除 活动如下。
- 转到我们之前链接文件存储的数据集 帐户。
- 创建文件名参数并将其链接以通过以下方式删除活动
通过选择该文件路径为文件路径添加动态内容
@dataset().FileName
- 然后转到删除管道并添加如图所示的文件名。
- 您还可以添加日志设置以链接帐户并查看活动 在调试路径之后发生。
其他参考:clean-up-files-by-built-in-delete-activity-in-azure-data-factory/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。