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

0

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

Este é o meu comando:

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

s3cmd então declara prontamente que eu tenho arquivos X para transferir (geralmente na ordem de 5k ++) e depois de copiar um arquivo, sai em cima de mim 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 de bucket-bucket, decidi criar uma pasta dentro do main.bucket, e simplesmente copiei tudo lá, despreocupado se a pasta em que tudo deve ser copiado também é copiada, causando assim uma loop ou outros enfeites, porque naquele momento eu estava no fim da minha sagacidade.

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.

P.S. Se tudo mais falhar, suponho que eu poderia fazê-lo através da GUI da AWS, mas verificar manualmente cada caixa de seleção é uma dor. Pelo que sei, se você rolar para baixo o tempo suficiente, ele vai esquecer os arquivos que você verificou acima, forçando você a fazê-lo no ritmo de um caracol.

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

    
por zack_falcon 07.07.2014 / 14:38

1 resposta

1

Você está usando uma versão muito antiga do s3cmd. Eu acredito que este bug foi corrigido nos anos desde então. Por favor, tente novamente com a ramificação mestre upstream do github.com/s3tools/s3cmd. A partir de hoje, o 1.5.0-rc1 é o lançamento mais atual.

    
por 08.07.2014 / 05:18