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

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. 该存储桶位于新加坡地区

答案1

Duplicity 还支持以下格式的 Amazon S3 URL:

s3://host/bucket_name[/prefix]

您所在地区的 S3 端点在哪里host,您可以在亚马逊的端点列表

对于您来说,您需要的 URL 是:

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

注意:

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

  • 对于美国标准以外的地区,您需要让 Duplicity 通过添加--s3-use-new-style到您的 Duplicity 命令行来使用亚马逊的“新样式”子域名存储桶寻址。

答案2

@mgorven 说得对,我会尽力修复这个问题。如果您希望修复这个问题,请标记自己受到影响并订阅https://bugs.launchpad.net/duplicity/+bug/1003159

s3://<region>/<bucket>语法不再起作用,您只能s3+http://<bucket>在指定的情况下使用 us-east-1 或 eu-west-1 --s3-european-buckets。您无法访问任何其他区域。

答案3

根据duplicity 手册页,它似乎仅支持美国和欧盟 S3 区域。我猜它正在与美国端点通信,检测到存储桶不存在于美国区域,然后尝试创建它并失败。

尝试在美国或欧盟地区创建一个存储桶并测试它是否有效(--s3-european-buckets如果合适,请使用)。如果这有效并且您确实想使用新加坡地区,则必须破解 Duplicity 以支持它。

相关内容