我正在尝试从s3存储桶本地复制文件。我可以获取存储桶上的文件列表:
aws s3 ls s3://myBucket/myDirectory/todaysFiles/
但是当我尝试将文件复制到本地时:
aws s3 cp s3://myBucket/myDirectory/todaysFiles/ .
我得到了这个错误:
fatal error: An error occurred (404) when calling the HeadObject operation: Key "myDirectory/todaysFiles/" does not exist
但是我尝试在本地只复制一个文件:
aws s3 cp s3://myBucket/myDirectory/todaysFiles/somefile .
我得到了这个错误:
warning: Skipping file s3://myBucket/myDirectory/todaysFiles/somefile. Object is of storage class GLACIER. Unable to perform download operations on GLACIER objects. You must restore the object to be able to the perform operation. See aws s3 download help for additional parameter options to ignore or force these transfers.
你们中有谁知道我为什么会得到这个错误或者解决这个错误的方法?
我真的很感谢你的帮助
发布于 2017-07-15 03:25:42
对于第一个错误-添加递归标志:
aws s3 cp s3://myBucket/myDirectory/todaysFiles/ . --recursive
这会将"todaysFiles“目录中的所有文件复制到当前目录。
但是,第二个错误指示您的文件位于Glacier中。这让事情变得有点复杂,因为Glacier并不是实时的--取决于你愿意支付的价格,它可能需要几个小时才能恢复数据。有关更多信息,请参阅Restoring Objects文档。在将对象从冰川恢复到S3之前,无法从S3进行复制。
请注意,如果你这样做,你将有来自冰川和S3的成本。
顺便说一句,如果这些文件真的是今天的文件,那么在S3上存储和推送到Glacier之间应该有更长的时间。但我猜父目录可能也有一个与日期相关的组件。
发布于 2021-05-30 15:58:22
如果Source包含多个文件夹,请在末尾使用--recursive。
aws s3 cp s3Uri Local --recursive
发布于 2021-04-30 23:28:51
如果它对任何人都有帮助,您还可以使用
aws s3 sync s3://<bucketname>/<folder>/ ./<folder>
这应该可以在不使用递归的情况下工作。它的好处是可以跳过本地已经存在的文件。
正如@raju所提到的,冰川在AWS上是一个廉价的存储系统,这意味着如果你想要检索数据,你首先需要在下载之前发出一个请求来获取数据。对于不经常访问的长期存储来说,它是很便宜的。
https://stackoverflow.com/questions/45109533
复制相似问题