如何使用 cli 从 Azure 文件共享中删除文件夹
Posted
技术标签:
【中文标题】如何使用 cli 从 Azure 文件共享中删除文件夹【英文标题】:How to delete a folder from an Azure Fileshare using cli 【发布时间】:2021-12-23 05:04:35 【问题描述】:我正在尝试通过脚本删除文件共享的内容,以便按计划或按需清理它。
az storage file delete -s $myshare -p $folderOrFileName --account-name $accountName --account-key $accountKey
允许我删除文件,但我不能删除文件夹。在网上搜索时,我发现了几个不连贯的解决方案,例如使用 azcopy 工具或 PS 命令,但到目前为止,它们都不适合我。
我们将不胜感激。
【问题讨论】:
docs.microsoft.com/en-us/cli/azure/storage/fs/… 如果不正确,请清楚“文件共享”的实际含义。由于它们的技术众多,这在 Azure 中也可以等同 用docs.microsoft.com/en-us/cli/azure/storage/…删除一个空文件夹 使用此命令列出目录中的文件,然后删除每个文件:docs.microsoft.com/en-us/cli/azure/storage/… 编辑您的问题以清楚地说明您正在尝试的内容(一个示例)和错误消息。说到目前为止没有一个对我有用并不是一个可以解决的明显问题。 【参考方案1】:您必须使用az storage directory delete
而不是az storage file delete
来删除文件共享中存在的文件夹,因为文件删除只会删除文件而不是文件夹(目录)。
我在我的环境中测试了场景:
但是当我直接使用下面的命令时,我得到另一个错误,因为目录不是空的,它无法删除整个目录。
az storage directory delete --share-name test --name ansumandirectory --account-name ansumanadls1234 --account-key <accountkey>
所以,为了删除目录,我必须先删除其中存在的文件。所以我使用了下面的脚本:
$sharename = "test"
$foldername = "ansumandirectory"
$accountname = "ansumanadls1234"
$accountkey = "accountkey"
$source= "$sharename/$foldername"
az storage file delete-batch --source $source --account-name $accountname --account-key $accountkey
az storage directory delete --share-name $sharename --name $foldername --account-name $accountname --account-key $accountkey
输出:
注意:如果你的目录是Empty那么你可以直接使用az storage directory delete
命令,它会删除该文件夹。但如果它不为空,则使用az storage file delete-batch
通过目录删除命令删除所有文件(如上述脚本中所做的那样)。
【讨论】:
是的。这就是我找到的解决方案。我必须编写一个脚本来递归遍历文件夹树,因为只能删除空文件夹。 很高兴能帮助@Demiurge :))以上是关于如何使用 cli 从 Azure 文件共享中删除文件夹的主要内容,如果未能解决你的问题,请参考以下文章