2017-07-19 84 views
2

我已經搜索並閱讀了很多,但找不到這個問題的答案,所以我認爲這是不可能的。有沒有辦法將S3存儲桶中的目錄克隆到同一個存儲桶中的另一個路徑?

我可以將S3存儲桶中的路徑克隆(或複製)到另一個路徑,並讓它複製所有子路徑和文件?

我見過用S3FS做過類似的事情,但我寧願不必做那一步。

我從殼嘗試並創建目標目錄,但裏面什麼都沒有:

aws s3api copy-object --copy-source my-bucket/source/ --key dest/ --bucket my-bucket

+0

你已經有了一個答案,在這裏,所以我會做出這樣的評論:你使用的命令做的事情沒有發生錯誤是因爲你在缺點中創建了該文件夾OLE。它不是容器中的東西 - 它只是一個空名稱,在名稱末尾有一個斜槓,有助於控制檯中的導航。 S3實際上並不擁有*文件夾...控制檯只是爲了方便而向您顯示它們。這就是爲什麼複製層次結構沒有直接操作 - 層次結構是錯覺。 –

+0

舊的控制檯用戶指南比新的更清楚地解釋了這個概念:http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html –

回答

3

而不是使用copy-object API調用,使用由AWS Command-Line Interface (CLI)提供更好aws s3 cp命令:

aws s3 cp s3://my-bucket/source s3://mybucket/dest --recursive 
+0

如果水桶是本地和跨區域複製(如果目標存儲桶位於另一個區域)。 –

+0

謝謝。這也可以用PHP API嗎?我一直無法找到它。 – Dubby

+0

否。Amazon S3 API(適用於所有語言)一次只能複製一個對象。 [AWS命令行界面(CLI)](http://aws.amazon.com/cli/)實際上是一個以您的名義調用API的Python程序。 'aws s3 cp'和'aws s3 sync'命令具有附加的編程邏輯,可自動獲取文件列表,然後遞歸複製文件。您可以在PHP中編寫類似的邏輯,但不提供給您。 –

相關問題