2015-10-13 101 views
4

通常解釋說S3上沒有文件夾/目錄,這是真的,但是有PREFIX對象。在某些情況下 - 例如使用riofs將文件系統「安裝」到S3--知道如何創建其中的一個實際上會很有用。如何使用AWS CLI在S3上創建「類文件夾」(即PREFIX)對象?

有誰知道是否有一種「正確」的方式來使用AWS CLI執行此操作?

Amazon S3 boto - how to create a folder?

Creating a folder via s3cmd (Amazon S3)

附註:它使用低級別的API aws s3api ...

相關SO帖子很可能可能

我也想指出,在AWS控制檯中,這個動作實際上被命名爲「創建文件夾...」,因此告訴人們S3上沒有「概念」文件夾是不公平的。

非常感謝!

+0

我用s3fuse過去之前「安裝」 S3作爲一個文件系統。我認爲當你做了一個'mkdir/var/mys3mount/newfolder /'時,它只在本地文件系統中創建文件夾,而不是在S3中創建。它給出了一個文件夾的外觀,但s3在您將對象放在那裏之前不會看到它。然後給你在文件夾概念的完整路徑。 –

+0

Hi Greg,我在本地使用'mkdir'時看到了與riofs相同的行爲,但我也看到,當S3存儲桶中存在前綴對象時,riofs將創建一個本地目錄來鏡像它。當圍繞這些「坐騎」進行自動化時,這會非常有用。 – Cawb07

回答

13

後,我身邊的一些擺弄很快發現這似乎工作:

aws s3api put-object --bucket test --key dir-test/

但是如果包括它不僅工程「/」在參數--key結束。那部分感覺不正確......當然有更好的方法嗎?

8

真的,在S3中確實沒有目錄。但是,正如您指出的那樣,有前綴和分隔符,默認分隔符是/,它允許您在S3存儲桶中獲得非常令人信服的模擬分層目錄結構。

但桶仍然只是一個包含帶有鍵名的對象的平坦空間。如果您想要創建一個目錄您必須創建一個名稱包含或以分隔符結尾的密鑰(默認爲/)的對象。所以你上面描述的技術可能感覺不對,但這是唯一的方法。

誰想出了創建文件夾想法在控制檯應該是自己感到羞恥。它引起了很多混亂。

+2

從技術上講,這是事實,但大多數客戶可能不太關心底層存儲機制,它不是文件系統。 s3是一種URI方案,它們最初是作爲對分層子目錄的抽象而創建的。誰在乎這些不是真正的文件夾/目錄。他們喜歡文件夾,他們喜歡文件夾。當解釋他們不是文件夾時,期望客戶不會入睡就顯得很迂腐。 – Davos

0

剛剛保存的文件夾名稱複製/移動和添加/目錄名作爲目標

DirName = "Hello" 
s3bucket = "s3://mybucket" 


os.system("aws s3 cp " + DirName + " " + s3//mybucket" + "/" + DirName + " --recursive") 
相關問題