AWS S3-使用powershell删除所有文件,但保留文件夹



我有一个powershell脚本,它从S3存储桶中下载所有文件,然后从存储桶中删除这些文件。我正在删除的所有文件都存储在S3存储桶中的一个子文件夹中,我只想删除这些文件,但要维护这些子文件夹。

我目前正在使用以下命令删除S3中的文件,一旦文件从S3下载。

Remove-S3Object -BucketName $S3Bucket -Key $key -Force 

我的问题是,如果它删除了子文件夹中的所有文件,那么子文件夹也会被删除。有没有办法删除文件,但使用powerhsell保持子文件夹的存在。我相信我能做这样的事,

aws s3 rm s3://<key_to_be_removed> --exclude "<subfolder_key>"

但不太确定这是否有效。

我正在寻找实现这一目标的最佳方法,目前,我唯一的选择是,如果子文件夹不存在,则通过脚本重新创建子文件夹。

实现空文件夹的唯一方法是创建一个长度为零的对象,该对象与要保留的文件夹同名。这实际上就是S3控制台使您能够创建一个空文件夹的方式。

您可以通过运行$ aws s3 ls s3://your-bucket/folderfoo/并观察长度为零字节的输出对象来检查这一点。

请在此处查看有关此主题的更多信息。

如前所述,S3并不像文件系统那样真正拥有文件夹。大多数S3浏览器提供的文件夹只是根据文件/对象的路径生成的。如果上载名为folder/file的对象/文件,浏览器会将folder显示为文件夹,将file显示为文件夹中的文件。但从技术上讲,所存在的只是文件/对象folder/filefolder本身并不存在。

您可以通过使用";在文件夹":folder/。如果你这样做,即使文件夹中没有文件,它也会显示为存在。但如果你不这样做,一旦你删除文件夹中的所有对象,虚拟文件夹就会消失。

现在的问题是,您的命令是否会删除表示文件夹的空命名对象。我说不出来。

相关内容

最新更新