2015-11-09 73 views
2
遞歸下載

我對S3一個結構如下:AWS CLI工具 - 無法從S3

bucket: 
    - dir_test 
     - dir_a 
      - dir 
       - file 
      - file_2 
      - file_2 
      - file_n 
     - dir_b 
      - dir 
       - file 
      - file_2 
      - file_2 
      - file_n 

我想的dir_test整個內容從一個shell腳本下載到我的工作目錄:

source_path="s3://bucket/dir_test/" 
target_path="." 
aws s3 cp "$source_path" "$target_path" --recursive 

一切都被下載正常,但是AWS報告errno的21:

download failed: s3://bucket/dir_test/dir_a/dir/ to dir_a/dir/ [Errno 21] Is a directory: u'/my-wd/dir_a/dir/' 

我在做什麼錯?

+0

嘗試使用'AWS S3 sync'命令 - 它做了遞歸複製默認情況下可能對某些情況更有用。 –

回答

0

你的拷貝命令看起來是正確的,但是這個錯誤沒有任何意義--S3實際上沒有目錄,所以它不應該試圖「下載」一個空目錄。目錄是在本地創建的,作爲下載文件的副作用(S3文件實際上命名爲「foo/bar/baz.txt」,CLI工具將其轉換爲「bar」目錄中的「baz.txt」 foo「dir)。

不知你是否有什麼奇怪的東西,比如文件命名爲「dir /」?或者是一個空名稱的文件?嘗試aws s3 ls s3://bucket/dir_test/dir_a/dir/

0

您可以嘗試mc工具太:

mc cp https://s3-us-west-2.amazonaws.com/bucketName/... localdir

在命令中的...指示遞歸操作