带有 restic 的 Scaleway GLACIER 类对象存储

问题描述 投票:0回答:4

Scaleway近期推出GLACIER类存储“C14冷库类

他们有一个很棒的 75GB 免费计划,我想使用 restic 备份工具来利用它。

为了使这项工作正常进行,我已成功按照 S3 说明创建和上传存储库,但有一点需要注意。我无法将存储类标头作为 GLACIER 成功传递。

使用 awscliv2,我可以从我的本地机器成功传递一个看起来非常像这样的标头:

aws s3 cp object s3://bucket/ --storage-class GLACIER

但是有了 restic,在研究了一些 github 问题后,我可以看到 一个选项 来传递一个

-o
标志。链接问题的解决对我来说不是那么清楚,所以我尝试了以下 restic 命令,但没有成功地看到 Scaleway 存储桶控制台中文件对象旁边的“GLACIER”类存储标签:

  • restic -r s3:s3.fr-par.scw.cloud/restic-testing -o GLACIER --verbose backup ~/test.txt
  • restic -r s3:s3.fr-par.scw.cloud/restic-testing -o storage-class=GLACIER --verbose backup ~/test.txt

有人可以建议另一种选择吗?

backup
4个回答
2
投票

我开始使用 C14 的 GLACIER 存储类和 restic,直到现在它似乎工作得很好。

我建议使用

restic -r s3:s3.fr-par.scw.cloud/test-bucket init
以通常的方式创建存储库,这将在 STANDARD 存储类中创建
config
文件和密钥。 对于备份,我使用命令:

$ restic backup -r s3:s3.fr-par.scw.cloud/test-bucket -o s3.storage-class=GLACIER --host host /path

类似于您所做的,除了选项是

s3.storage-class
而不是
storage-class

这样

data
snapshots
目录下的文件都是GLACIER存储类,添加备份没有问题。 我还可以在数据位于 GLACIER 类时挂载存储库(我想所有信息都是从缓存中获取的)所以我可以做
restic mount /mnt/c14
并且我可以浏览文件,即使我无法复制它们或查看它们的内容。

如果我需要恢复文件,我使用

s3cmd restore --recursive s3://test-bucket/
恢复标准类中的所有存储桶(参见 s3cmd),我测试标准类中的所有文件是否正确:

$ aws s3 ls s3://test-bucket --recursive | tr -s ' ' | cut -d' ' -f 4 | xargs -n 1 -I {} sh -c "aws s3api head-object --bucket unitedhost --key '{}' | jq -r .StorageClass" | grep --quiet GLACIER

如果至少有一个文件在 GLACIER 类中,则返回 true,因此您必须等待此命令返回 false。

显然恢复需要更多时间,但我使用 C14 冰川作为第二或第三个备份,同时在 Backblaze B2 中使用另一个 restic 存储库,这是一个温暖的存储。


2
投票

除了vstefanoxxanswer:这是我的工作流程。

我像 vstefanoxx 一样设置 restic 存储库。

现在,如果你想 prune 存储库......你不能,因为文件在

glacier
restic
需要对存储桶的读写访问权限才能修剪。 Scaleway 的有趣之处在于
glacier
standard
类之间的文件传输是免费的。因此,让我们将数据移回标准类:

s3cmd restore --recursive s3://test-bucket

然后使用 vstefanoxx 给出的命令等到过程结束。一旦您的数据达到标准级别,您的成本就会增加五倍,因此我们必须高效 :-)

所以我们现在修剪存储库:

restic prune -r s3:s3.fr-par.scw.cloud/test-bucket

完成后,将所有内容(实际上是

data, index
snapshots
not
keys
)移回冰川:

s3cmd cp s3://test-bucket/data/ s3://test-bucket/data/ --recursive --storage-class=GLACIER
s3cmd cp s3://test-bucket/index/ s3://test-bucket/index/ --recursive --storage-class=GLACIER
s3cmd cp s3://test-bucket/snapshots/ s3://test-bucket/snapshots/ --recursive --storage-class=GLACIER

所以我们现在已经到了修剪存储库的地步,试图支付最少的钱!


0
投票

选择的答案在做增量备份时似乎不起作用。我采用了不同的解决方案。

我设置了一个普通的桶,用你通常的

restic init
初始化。然后我设置了以下生命周期规则:

<?xml version="1.0" ?>
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
        <Rule>
                <ID>data-to-glacier</ID>
                <Filter>
                        <Prefix>data/</Prefix>
                </Filter>
                <Status>Enabled</Status>
                <Transition>
                        <Days>0</Days>
                        <StorageClass>GLACIER</StorageClass>
                </Transition>
        </Rule>
</LifecycleConfiguration>

Days
设置为 0,这意味着该规则将应用于所有文件。虽然规则不会持续应用,但它们每天午夜 UTC应用一次。

此规则仅适用于

data/
中的文件,即大文件。

此规则描述应该与

s3cmd
一起使用,但如果您更喜欢 GUI,也可以从仪表板执行此操作。


0
投票

我搜索了一个解决方案,使用带有 restic 的 Scaleway Glacier :

标准桶中日期皮革超过 15 天的所有备份和冰川桶中日期在 16 到 90 天之间的所有备份

Aukfood

© www.soinside.com 2019 - 2024. All rights reserved.