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

Sau*_*nda 7 backup amazon-s3 duplicity

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

duplicity --no-encryption system/ s3+http://MY_BUCKET_NAME/backup
Run Code Online (Sandbox Code Playgroud)

但是,我始终收到以下错误:

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>
Run Code Online (Sandbox Code Playgroud)
  1. S3 存储桶为空且没有backup目录
  2. 桶在新加坡地区

小智 12

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

s3://host/bucket_name[/prefix]
Run Code Online (Sandbox Code Playgroud)

host您所在地区的 S3 终端节点在哪里,您可以在Amazon 的终端节点列表中找到该终端节点

在您的情况下,您想要的网址是:

s3://s3-ap-southeast-1.amazonaws.com/MY_BUCKET_NAME/backup
Run Code Online (Sandbox Code Playgroud)

注意:

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

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

  • 使用 s3+http 我得到了双重错误“拒绝访问”。用 s3://host/bucket 修复。使用相同的 IAM 用户/策略。去搞清楚.... (2认同)

mgo*_*ven 1

根据duplicity 手册页,它看起来只支持美国和欧盟 S3 区域。我猜它正在与美国端点通信,检测到该存储桶在美国地区不存在,然后尝试创建它但失败。

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