s3cmd: KeyError: 여러 파일을 복사하려고 할 때 'dest_name'

s3cmd: KeyError: 여러 파일을 복사하려고 할 때 'dest_name'

Hive를 사용하여 S3 버킷의 일부 파일을 처리해야 합니다. 문제는 하이브가 버킷을 폴더로 사용하는 것을 좋아하지 않는다는 것입니다. 그래서 다른 버킷에 폴더를 만들고 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]
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

이제 정말 짜증나네요.

문제는 버킷 간 전송에 있다고 생각하여 main.bucket 내부에 폴더를 만들고 거기에 모든 것을 복사하기로 결정했습니다. 모든 것이 복사 될 폴더도 복사되는지 신경 쓰지 않고 루프가 발생합니다. , 그 시점에서 나는 어찌할 바를 몰랐기 때문입니다.

새로운 명령은 다음과 같습니다:

s3cmd -v cp s3://main.bucket/\* s3://main.bucket/111a/

이번에도 파일 하나만 복사했는데 동일한 오류가 발생했습니다.

이것이 무엇을 의미할까요? 이 문제를 어떻게 해결합니까?

감사해요.

PS 다른 모든 방법이 실패하면 AWS의 GUI를 통해 수행할 수 있지만 모든 확인란을 수동으로 확인하는 것은 고통스럽습니다. 내가 아는 한, 충분히 오랫동안 아래로 스크롤하면 위에서 확인한 파일이 어리석게도 잊어버리고 달팽이 속도로 작업을 수행해야 합니다.

한 번에 모두 선택하고 복사하여 새 디렉터리에 붙여넣는 방법이 있다면 좋을 것입니다.

답변1

매우 오래된 버전의 s3cmd를 사용하고 있습니다. 나는 이 버그가 그 이후 몇 년 동안 수정되었다고 생각합니다. 업스트림 github.com/s3tools/s3cmd 마스터 브랜치로 다시 시도하세요. 현재로서는 1.5.0-rc1이 최신 릴리스입니다.

관련 정보