通过s3cmd (Amazon S3)创建文件夹

29

我正在使用s3cmd将文件上传到我的S3服务器。我的问题是,当服务器上的目录不存在时,上传会失败。我该如何告诉s3cmd在目录不存在时创建它?我正在使用PHP。


据我所知,S3没有文件夹的概念。您只需将所有内容放入存储桶中即可。 - Sabeen Malik
1
它确实有文件夹 http://imageshack.us/photo/my-images/838/capturefhw.png/ - John
你能按照这样的方式放置文件吗:s3cmd put file.jpg s3://yo/folder/ - Colum
不行,因为“folder”不存在。 - John
1
为了帮助谷歌找到这个问题,如果您尝试在“mb”命令中包含文件夹名称,则会出现错误“期望只设置桶名称的S3 URI...” - Adam Rabung
3个回答

50

我认为你应该尝试类似这样的东西:s3cmd put file.jpg s3://bucket/folder/file.jpg

S3没有目录的概念,整个folder/file.jpg就是文件名。如果使用GUI工具或其他工具从文件夹内删除file.jpg,则很可能会看到该文件夹也被删除了。目录的可视表示仅供用户方便使用。


5
这是创建文件夹的方法:
s3cmd put foobar s3://bucket_name/new_directory/

验证:

s3cmd la

2

如果您不想上传文件,可以复制S3工具创建的特殊$folder$对象以标记文件夹:

s3cmd cp 's3://bucket/parent_$folder$' 's3://bucket/parent/child_$folder$'

该功能会创建一个“子”文件夹。

在子位置上传内容会更加清晰易懂:

s3cmd put dummy s3://bucket/parent/child/dummy

Hive创建外部表时需要完整S3路径存在

创建外部表时,Hive似乎要求完整的S3路径存在。这就是我查看这个问题的原因 :)


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