Duplicity不写入预先存在的S3存储桶

我正尝试使用以下命令将目录备份到预先存在的Amazon S3存储桶:

duplicity --no-encryption system/ s3+http://MY_BUCKET_NAME/backup 

不过,我一直得到以下错误:

 S3CreateError: S3CreateError: 409 Conflict <?xml version="1.0" encoding="UTF-8"?> <Error><Code>BucketAlreadyOwnedByYou</Code><Message>Your previous request to create the named bucket succeeded and you already own it.</Message><BucketName>vacationlabs</BucketName><RequestId>3C1B8C49469E3374</RequestId><HostId>4dU1TKf3Td6R0yvG9MaLKCYvQfwaCpdM8FUcv53aIOh0LeJ6wtVHHduPSTqjDwt0</HostId></Error> 
  1. S3存储桶是空的,没有backup目录
  2. 这个桶在新加坡地区

Duplicity也支持这种格式的Amazon S3url:

 s3://host/bucket_name[/prefix] 

其中host是您所在地区的S3端点,您可以在Amazon的端点列表中find它。

在你的情况下,你想要的URL是:

 s3://s3-ap-southeast-1.amazonaws.com/MY_BUCKET_NAME/backup 

注意:

  • Duplicity仍然只能在美国标准和欧盟地区创build桶,这意味着您需要手动创build桶(您已经拥有)。

  • 对于美国标准以外的地区,您需要让Duplicity使用亚马逊的“新风格”子域存储区寻址,方法是在Duplicity命令行中添加--s3-use-new-style

根据双重性手册页 ,它看起来只支持美国和欧盟的S3地区。 我猜测它正在和美国端点通话,检测到这个存储区在美国地区不存在,然后尝试创build并失败。

尝试在美国或欧盟地区创build一个存储桶,并testing其是否有效(如果合适的话,使用--s3-european-buckets )。 如果这样做确实有效,而且您真的想要使用新加坡地区,那么您必须破解Duplicity来支持它。

@mgorven是正确的,我会试图得到这个正确的修复。 如果您希望看到解决方法,请标记自己受到影响,并在https://bugs.launchpad.net/duplicity/+bug/1003159

s3://<region>/<bucket>语法不起作用,只有s3+http://<bucket>使用us-east-1或者eu-west-1指定--s3-european-buckets 。 你不能去任何其他地区。