Backup de duplicidade para S3: BackendException

1

Estou tentando configurar minha instalação do Duplicity para fazer backup em um bucket do Amazon S3. Continuo recebendo um erro BackendException sem mais detalhes.

EDITAR: Eu removi minha configuração do Duply desta questão para tentar isolar mais o problema e mudei para um comando de duplicidade simples em um diretório pequeno (10 MB, 34 arquivos). / p>

Aqui está o comando que estou tentando executar:

duplicity full ./logs "s3://s3-us-east-1.amazonaws.com/bucketname" -v9

E aqui está a saída:

root@ats:/var/ats# duplicity full ./logs "s3://s3-us-east-1.amazonaws.com/bucketname" -v9

Duplicity 0.6 series is being deprecated:
See http://www.nongnu.org/duplicity/

Using archive dir: /root/.cache/duplicity/876c7d0b54276e675d41f6ea6077d52f
Using backup name: 876c7d0b54276e675d41f6ea6077d52f
Import of duplicity.backends.botobackend Succeeded
Import of duplicity.backends.cfbackend Succeeded
Import of duplicity.backends.dpbxbackend Succeeded
Import of duplicity.backends.ftpbackend Succeeded
Import of duplicity.backends.ftpsbackend Succeeded
Import of duplicity.backends.gdocsbackend Succeeded
Import of duplicity.backends.hsibackend Succeeded
Import of duplicity.backends.imapbackend Succeeded
Import of duplicity.backends.localbackend Succeeded
Import of duplicity.backends.megabackend Succeeded
Import of duplicity.backends.rsyncbackend Succeeded
Import of duplicity.backends.sshbackend Succeeded
Import of duplicity.backends.swiftbackend Succeeded
Import of duplicity.backends.tahoebackend Succeeded
Import of duplicity.backends.webdavbackend Succeeded
Import of duplicity.backends.~par2wrapperbackend Succeeded
Using temporary directory /tmp/duplicity-sQ3sGs-tempdir
Backend error detail: Traceback (most recent call last):
  File "/usr/local/bin/duplicity", line 1509, in <module>
    with_tempdir(main)
  File "/usr/local/bin/duplicity", line 1503, in with_tempdir
    fn()
  File "/usr/local/bin/duplicity", line 1336, in main
    action = commandline.ProcessCommandLine(sys.argv[1:])
  File "/usr/local/lib/python2.7/dist-packages/duplicity/commandline.py", line 1062, in ProcessCommandLine
    backup, local_pathname = set_backend(args[0], args[1])
  File "/usr/local/lib/python2.7/dist-packages/duplicity/commandline.py", line 955, in set_backend
    globals.backend = backend.get_backend(bend)
  File "/usr/local/lib/python2.7/dist-packages/duplicity/backend.py", line 163, in get_backend
    return _backends[pu.scheme](pu)
  File "/usr/local/lib/python2.7/dist-packages/duplicity/backends/_boto_single.py", line 163, in __init__
    self.resetConnection()
  File "/usr/local/lib/python2.7/dist-packages/duplicity/backends/_boto_single.py", line 189, in resetConnection
    raise BackendException(err.message)
BackendException

BackendException:

Eu testei o Boto (que é o que o Duplicity usa para conexões S3) com este script:

root@ats:/var/ats# python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto.s3
>>> conn = boto.s3.connect_to_region("us-east-1")
>>> bucket = conn.get_bucket("bucketname")
>>> for key in bucket.list(): print key, key.storage_class
...
<Key: bucketname,test.txt> STANDARD
>>> exit()

Eu tenho certeza de que estou executando as últimas versões apropriadas de duplicidade e python, e eu configurei as variáveis AWS_ * que funcionam bem no Boto.

Estou faltando alguma coisa? O que devo fazer?

    
por A.M.K 08.07.2015 / 22:02

3 respostas

1

Não sei por que o comando original não estava funcionando, mas no final percebi que alterar o formato da URL de s3://s3-us-east-1.amazonaws.com/bucketname para s3+http://bucketname corrige o problema.

O comando de trabalho reduzido é agora:

duplicity full ./logs "s3+http://bucketname" -v9
    
por 10.07.2015 / 20:46
1

Se você ainda não conseguir fazer isso funcionar, tente adicionar: %código% para o seu arquivo conf duply profile.

Isso é descrito em detalhes aqui e trabalhou para mim.

    
por 13.07.2015 / 20:45
0

Nem as soluções SIGV4 nem as http s3 + funcionaram para mim.

Minha solução foi usar o nome da região na URL, em vez do genérico 's3'. No meu caso, este foi eu-west-1 (Irlanda).

Isso parece:

s3://s3-eu-west-1.amazonaws.com/bucketname

Em vez de:

s3://s3.amazonaws.com/bucketname

Embora o segundo URL genérico funcione em outras ferramentas, como s3cmd, ele não estava funcionando com o Duplicity / Boto.

Você pode precisar combinar essa solução com a resposta de Joe Hudson se estiver usando uma nova região, como Frankfurt ou Cingapura.

    
por 29.05.2016 / 09:14