![s3cmd:KeyError:嘗試複製多個檔案時出現“dest_name”](https://rvso.com/image/1414633/s3cmd%EF%BC%9AKeyError%EF%BC%9A%E5%98%97%E8%A9%A6%E8%A4%87%E8%A3%BD%E5%A4%9A%E5%80%8B%E6%AA%94%E6%A1%88%E6%99%82%E5%87%BA%E7%8F%BE%E2%80%9Cdest_name%E2%80%9D.png)
我需要使用 hive 處理 S3 儲存桶中的一些檔案。問題是,hive 顯然不喜歡將儲存桶用作資料夾,因此我決定在另一個儲存桶中建立一個資料夾,並透過 s3cmd 將檔案複製到那裡。
這是我的命令:
s3cmd -v cp s3://main.bucket/\* s3://temp.bucket/input/
然後 s3cmd 立即聲明我有 X 個檔案要傳輸(通常約 5k++),然後在複製一個檔案後,出現以下錯誤:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
An unexpected error has occurred.
Please report the following lines to:
[email protected]
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Problem: KeyError: 'dest_name'
S3cmd: 1.0.1
Traceback (most recent call last):
File "/usr/local/bin/s3cmd", line 2006, in <module>
main()
File "/usr/local/bin/s3cmd", line 1950, in main
cmd_func(args)
File "/usr/local/bin/s3cmd", line 614, in cmd_cp
subcmd_cp_mv(args, s3.object_copy, "copy", "File %(src)s copied to %(dst)s")
File "/usr/local/bin/s3cmd", line 604, in subcmd_cp_mv
dst_uri = S3Uri(item['dest_name'])
KeyError: 'dest_name'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
An unexpected error has occurred.
Please report the above lines to:
[email protected]
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
現在,這太糟糕了。
考慮到問題出在bucket-bucket傳輸上,我決定在main.bucket中創建一個資料夾,然後簡單地複製其中的所有內容,而不關心要複製的所有內容是否也被複製到資料夾中,從而導致循環或其他什麼情況,因為那時我已經無計可施了。
新命令如下:
s3cmd -v cp s3://main.bucket/\* s3://main.bucket/111a/
同樣,它只複製了一個文件,並給了我同樣的錯誤。
這意味著什麼?我該如何解決?
謝謝。
PS 如果一切都失敗了,我想我可以透過 AWS 的 GUI 來完成,但手動檢查每個複選框很痛苦。據我所知,如果您向下滾動足夠長的時間,它會愚蠢地忘記您在上面檢查的文件,迫使您以蝸牛般的速度完成此操作。
如果有一種方法可以一次選擇它們,然後將它們複製並貼上到新目錄中,那就太好了。
答案1
您使用的是非常舊版的 s3cmd。我相信這個錯誤多年來已經得到修復。請使用上游 github.com/s3tools/s3cmd master 分支重試。截至今天,1.5.0-rc1 是最新版本。