问题描述
用例:
我在本地有一个目录,我想为它做一个备份,比如说每个午夜。并希望在出现问题时恢复它。
似乎不是一项复杂的任务,但通读 AWS 文档即使这样也很麻烦且成本高昂。对于像这样的简单任务来说,在本地设置存储网关似乎不必要地复杂,在 EC2 上设置也很昂贵。
我做了什么:
通读这篇文章+其他一些博客文章:
https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html
https://docs.aws.amazon.com/storagegateway/latest/userguide/WhatIsStorageGateway.html
我发现了什么:
1.设置文件网关(本地或作为 EC2 实例):
它只是将文件挂载到 S3。就是这样。所以我的内部部署应用程序会不断地写入这个 S3。文档没有提到任何关于计划备份和恢复的内容。
2.设置卷网关:
在这里,我可以对 S3 进行预定的同步/备份,但使用整个卷将是一个很大的开销。
3.独立 S3:
只需使用裸 S3 并通过 AWS API/SDK 将我的备份复制到那里,并使用手动安排的作业。
解决方案:
- 使用上面的第 1 点,启用版本控制,文件的版本将用作恢复点。
- 使用第 3 点
我想我正在寻找文件卷网关的组合:在文件级别工作并为它们制作异步计划快照。
这应该如何处理?难道没有一种非常简单的方法可以将目录的备份发送到 AWS 吗?
解决方法
将目录备份到 Amazon S3 的最简单方法是:
- 安装 AWS Command-Line Interface (CLI)
- 通过
aws configure
命令提供凭据 - 需要时运行
aws s3 sync
命令
例如
aws s3 sync folder1 s3://bucketname/folder1/
这会将任何文件从源复制到目标。它只会复制自上次同步以来添加或更改的文件。
文档:sync — AWS CLI Command Reference
如果你想更花哨并保留多个备份,你可以复制到不同的目标目录,或者先创建一个 zip 文件并上传 zip 文件,甚至使用像 Cloudberry Backup 这样的备份程序知道如何使用 S3 并可以进行传统风格的备份。