如何从 azure 存储帐户中删除 azure 文件共享旧数据?

Posted

技术标签:

【中文标题】如何从 azure 存储帐户中删除 azure 文件共享旧数据?【英文标题】:How to remove azure file share old data from the azure storage account? 【发布时间】:2021-10-03 03:15:28 【问题描述】:

我有 3 个月的旧数据存储在 azure 存储帐户上?现在我想删除数据 如果 >= 30 天

【问题讨论】:

嗨@Bala!如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充)。这对其他社区成员可能是有益的。谢谢你:) 【参考方案1】:

以下脚本以递归方式列出文件共享中的文件/FileDir,并删除超过 14 天的文件。您可以给出所需的天数限制。 引用自线程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 数据工厂(ADF) 配置删除活动。这需要通过提供帐户名称、文件共享名称和路径(如果需要)将您的 azure 存储帐户与 ADF 链接。

部署 ADF(如果尚未配置):

打开 ADF 并创建一个任意名称的 PipeLine。

The Process is我们获取所选存储帐户中文件共享的元数据>循环遍历它们>为其中超过 30 天的文件配置删除活动(或者说几天)

    搜索获取元数据>>选择并拖动到该区域 显示并命名文件。 2)然后导航到数据集(这个数据集 指向存储帐户中的文件),选择新建。所以选择天蓝色 文件存储>命名 3) >>选择格式为 csv 4)>>链接您的帐户 通过设置属性 > 给出文件路径。

要获取早于或等于 30 天的文件,您可以配置 endtime 作为 @adddays(utcnow(),-30)

现在我们必须使用 foreach 循环来遍历数组 文件。从活动中拖放foreach循环,并将arrwoed行与get metadata连接/链接。

在设置中,勾选顺序框以按顺序迭代文件。 childItems 是具有数组的 getmetadata 输出 JSON 的属性 对象。因此,为 Items 选择 Dynamic content 并配置为 @activity("Get old files").output.childItems 并点击 结束。 (这里获取旧文件是我创建的获取活动的名称 以前)

在 Foreach 活动中,编辑活动并设置删除 活动如下。

转到我们之前链接文件存储的数据集 帐户。

创建文件名参数并将其链接到删除活动 通过选择该文件路径为文件路径添加动态内容 @dataset().FileName

然后进入delete管道,添加如图所示的文件名。

您还可以添加日志设置以链接帐户并查看活动 在调试路径后发生。

其他参考:clean-up-files-by-built-in-delete-activity-in-azure-data-factory/

【讨论】:

以上是关于如何从 azure 存储帐户中删除 azure 文件共享旧数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有 Azure 存储帐户的 Azure 文件中的 PHP 显示文本内容本身?

如何删除包含租用 blob 的 Azure 存储帐户?

使用 PowerShell 从 Azure 中存储帐户的管理 ACL 列表中删除 ACL 条目

如何从 C# 代码轮换 Azure 存储帐户访问密钥?

如何从 azure 文件共享中删除特定时间段之前的文件

无法删除 Azure 存储帐户