s3cmd: KeyError: 'dest_name' ao tentar copiar vários arquivos

s3cmd: KeyError: 'dest_name' ao tentar copiar vários arquivos

Preciso processar alguns arquivos em um bucket S3 usando o Hive. O problema é que o Hive aparentemente não gosta de usar os buckets como pastas, então decidi criar uma pasta em outro bucket e copiar os arquivos para lá via s3cmd.

Este é o meu comando:

s3cmd -v cp s3://main.bucket/\* s3://temp.bucket/input/

s3cmd declara imediatamente que tenho arquivos X para transferir (geralmente em torno de 5k++) e, depois de copiar um arquivo, me surpreende com o seguinte erro:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    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]
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Agora, isso é uma merda.

Pensando que o problema está na transferência bucket-bucket, resolvi criar uma pasta dentro do main.bucket, e simplesmente copiar tudo que está ali, sem me importar se a pasta para onde tudo vai ser copiado também é copiada, causando assim um loop ou algo assim , porque naquele momento eu estava perdendo o juízo.

O novo comando é o seguinte:

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

Novamente, ele copiou apenas um arquivo e me deu o mesmo erro.

O que isso poderia significar? Como faço para corrigir isso?

Obrigado.

PS: Se tudo mais falhar, suponho que poderia fazer isso por meio da GUI da AWS, mas marcar manualmente cada caixa de seleção é uma dor. Que eu saiba, se você rolar para baixo por tempo suficiente, ele esquecerá estupidamente os arquivos que você verificou acima, forçando você a fazer isso em ritmo de lesma.

Se houver um método para selecioná-los todos de uma vez e copiá-los e colá-los em um novo diretório, isso seria ótimo.

Responder1

Você está usando uma versão muito antiga do s3cmd. Acredito que esse bug foi corrigido nos anos seguintes. Tente novamente com o branch master upstream github.com/s3tools/s3cmd. A partir de hoje, 1.5.0-rc1 é a versão mais atual.

informação relacionada