web-dev-qa-db-ja.com

S3への重複バックアップ:BackendException

AmazonS3バケットにバックアップするようにDuplicityインストールを構成しようとしています。 BackendExceptionエラーが発生し続けますが、詳細はありません。

編集:問題をさらに特定するために、この質問からDuply構成を削除し、小さなディレクトリ(10 MB、34ファイル)で単純なduplicityコマンドに切り替えました。

これが私が実行しようとしているコマンドです:

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

そして、これが出力です:

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:

私はこのスクリプトでBoto(DuplicityがS3接続に使用するもの)をテストしました:

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()

DuplicityとPythonの最新の適切なバージョンを実行していることを確認し、Botoで正常に機能するAWS_ *変数を設定しました。

私は何かが足りないのですか?私は何をすべきか?

1
A.M.K

元のコマンドが機能しなかった理由はわかりませんが、最終的にURL形式をs3://s3-us-east-1.amazonaws.com/bucketnameからs3+http://bucketnameに変更すると問題が解決することがわかりました。

削減された作業コマンドは次のとおりです。

duplicity full ./logs "s3+http://bucketname" -v9
1
A.M.K

それでも機能しない場合は、次を追加してみてください:export S3_USE_SIGV4="True"重複プロファイルconfファイルに。

これは詳細に説明されています ここ そして私のために働きました。

1
Joe Hudson

SIGV4ソリューションもs3 + httpソリューションも私にはうまくいきませんでした。

私の解決策は、一般的な「s3」の代わりに、URLで地域名を使用することでした。私の場合、これはeu-west-1(アイルランド)でした。

これは次のようになります。

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

の代わりに:

s3://s3.amazonaws.com/bucketname

2番目の汎用URLはs3cmdなどの他のツールで機能しますが、Duplicity/Botoでは機能しませんでした。

フランクフルトやシンガポールなどの新しい地域を使用している場合は、このソリューションをJoeHudsonの回答と組み合わせる必要がある場合があります。

0
Rafiq Maniar