如何将存储账户容器中的文件从一个文件夹移动到另一个文件夹?

3
我在Azure中有一个存储帐户,其中包含文件夹内的文件。我想使用PowerShell脚本将一个文件夹中的.txt和.csv文件移动到同一存储帐户容器中的另一个文件夹中。
请问有人能建议我如何操作吗?

似乎没有直接的方法来移动文件,你需要先复制然后再删除它们。 - unknown
我知道这是一个老问题,但它突然出现了。有人能确认一下,你可以使用Move-AzDataLakeStoreItem更轻松地完成这个任务吗?https://learn.microsoft.com/en-us/powershell/module/az.datalakestore/move-azdatalakestoreitem?view=azps-10.0.0 - Nick.Mc
5个回答

1
请问这句话是要翻译还是需要做些什么呢?
$context = New-AzureStorageContext -StorageAccountName {accountName} -StorageAccountKey {Enter your storage account key here}
$Blobs = Get-AzStorageBlob -Container "SourceContainer" -Blob SourceFolder/*.csv -Context $context
foreach ($blob in $Blobs) {
    $blob.Name

    # Copy to DestinationFolder
    Start-AzStorageBlobCopy -SrcBlob "SourceFolder/SourceFile" -SrcContainer "<SourceContainer>" -DestContainer "<DestinationContainer>" -DestBlob "DestinationFolder/DestinationFile"

    # Delete the source blob
    Remove-AzStorageBlob -Container "SourceContainer" -Blob $blob.Name
}

0

在上述建议中添加更多信息,最简单的方法是使用存储资源管理器

这个So帖子提供了一些关于你的问题的想法(PS)。


0
请注意,复制是异步的,因此在删除源之前,请确保 Blob 已在目标位置中。据说在同一容器内进行的复制是“即时”的,更像是移动操作(这种操作不存在,也不需要在 API 中存在)。

0
请在Powershell中使用azcopy来实现这个功能。
azcopy login
azcopy copy 'https://<SourceStorageaccount>.blob.core.windows.net/<SourceContainer>/<SourceFile>' 'https://<DestinationStorageaccount>.blob.core.windows.net/<DestinationContainer>/<DestinationFile>'

AzCopy命令行实用工具为Azure存储提供高性能、可脚本化的数据传输。您可以使用AzCopy将数据传输到Blob存储和Azure文件中。

或者,我认为这也可以使用:

Start-AzStorageBlobCopy -SrcBlob "SourceFolder/SourceFile" -SrcContainer "<SourceContainer>" -DestContainer "<DestinationContainer>" -DestBlob "DestinationFolder/DestinationFile"

目前,Az.Storage模块中似乎没有Powershell cmdlets来移动文件。必须将它们复制到目标位置并从源位置删除。


0

这是我从上面的答案中提供的代码。

$context = New-AzStorageContext -StorageAccountName TESTACC -StorageAccountKey PpzcfuKhruAhQL0ZMR

$Blobs = Get-AzStorageBlob -Container "raw-voi-2021" -Blob 2021-11/*2021-09* -Context $context

foreach ($blob in $Blobs) {
     $blob.Name
     $file=$blob.Name.Split("/")[1]
     Start-AzStorageBlobCopy -SrcBlob $blob.Name -SrcContainer "raw-voi-2021" -context $context -DestContainer "raw-voi-2021" -DestBlob "2021-09/$file" -DestContext $context
     Get-AzStorageBlob -Container "raw-voi-2021" -blob "2021-09/$file" -Context $context |select name, length,lastmodified
 }

如果您正在处理此事,请确认您是否可以使用Move-AzDataLakeStoreItem来更轻松地完成此操作?https://learn.microsoft.com/zh-cn/powershell/module/az.datalakestore/move-azdatalakestoreitem?view=azps-10.0.0 - Nick.Mc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接