我一直在阅读有关使用 Amazon Glacier 和 AWS S3 服务的文档,目的是将它们用作夜间备份。除非我错过了,否则增量备份是如何完成的?
我想每晚从我们的 Linux 文件服务器备份 100 GB 的数据(约 70k 个文件),以便进行异地备份。但是删除文件时存在问题,所以似乎无法更新它们。
还有其他更简单的方法吗?如何使用 rsync 将数据备份到 AWS EC2,然后将数据从 EC2 传输到 Amazon Glacier 进行存储或传输到 AWS S3?因为每晚发送一个新的 100 GB 压缩 tar 文件的想法并不切实际。
答案1
备份的方法有很多,这里提供一些想法和选择。
增量备份
理想情况下,您的备份应该是增量的。这意味着您可以根据需要回滚到以前的版本。它还可以显著减少 CPU、带宽使用率,有时还可以减少存储。您还可以查看差异备份,它们略有不同,因为它们是上次完整备份的增量。
本地备份至 AWS
这AWS 存储网关虚拟设备可能对您有用。安装虚拟机,分配一些磁盘。有几种模式,不久前它们更改了名称,但本质上它就像备份到 S3 的本地磁盘一样工作。它可以将您的所有数据保留在本地,或将本地磁盘用作 S3 的缓存。
否则,还有很多其他选项可以将数据传输到 AWS。
AWS S3 同步
我使用“aws s3 sync”命令行实用程序将数据上传到 AWS S3,使用 IA 存储类。这样可以保证备份在 AWS S3 上安全。您可以将要备份的文件直接上传到 S3,可以上传本地存储的备份程序的存储库,或者您的备份软件可能原生使用 S3。使用命令行,您可以执行以下操作。
aws s3 sync /path/to/backups s3://bucketname/backups --storage-class STANDARD_IA --delete --exclude ".sync/*"
您可以在 S3 中启用加密和版本控制。它会单独保存文件的每个版本,它不是增量的,因此它比同时进行压缩的增量备份软件占用更多的存储空间。
目的地
S3 是备份的好地方。如果你的备份相当静态,你可以使用 S3不频繁访问类存储,比标准存储类更便宜。如果您的备份是不可变的(永不改变),则可以使用 S3 Glacier 存储类,但请记住,恢复这些备份需要数小时。
Dropbox 是一个不错的备份地点。我使用过Dropbox 上传器脚本。但它不太灵活 - 它不会删除本地已删除的文件,从而浪费磁盘空间。这就是使用它的方法。
/opt/Dropbox-Uploader/dropbox_uploader.sh -s -q upload /path/to/files /dropbox/path
**Borg Backup(不再使用)**
我使用以下方式备份我的 Linux 服务器(恰好在 AWS 上)Borg 备份。这会在本地磁盘上创建增量、重复数据删除的备份。它具有保留策略,可告知其保存数据的时间长度 - 例如,每周每晚保存一次(持续一周)、每周一次(持续一个月)、每月一次(持续一年)。您可以使用许多增量备份程序。
我不喜欢 Borg Backup 的一点是,每次运行时它都会重命名现有文件。我认为这种行为对于非常大的备份会发生变化,但我的 500MB 备份每晚肯定会重命名文件。最终,你会得到数百个小文件和一个很大的新文件/重命名文件。因此,如果你的备份是远程的,你可能会使用比你预期更多的带宽。我因此停止使用 Borg。
Borg 还支持远程存储库本地通过 SSH 访问。您可以启动一个带有 EBS 磁盘的 EC2 实例,与其同步,然后实例关闭 - 但 EBS 比 S3 贵很多,所以这不是一个好选择。
**Restic Backup(现在用于 PC/Web 服务器备份)**
我一直在使用Restic 备份已经有几年了。它的目标是简单、快速、可验证、安全、高效和免费。它适用于大多数平台(*nix、Windows 等),并且编译为单个二进制文件,因此安装很容易。
它基于块,并且对磁盘/网络非常高效。我做过多次恢复测试,它总是能完美地恢复所有内容。我对 restic 很满意。它正在缓慢但稳定地发展,未来会添加压缩等功能——截至 2020 年 8 月,它确实有重复数据删除功能,但没有压缩功能。
初始化存储库
set RESTIC_PASSWORD=abcdefg
restic_0.9.1_windows_amd64.exe init --repo x:\repository
set RESTIC_PASSWORD=abcdefg
restic_0.9.1_windows_amd64.exe --exclude c:\data\exclude --repo c:\data backup x:\repository
您可以让 Restic 保留备份可配置的时间量 - 例如保留每日备份,然后保留每周备份 8 周,保留每月备份 24 个月。
restic_0.9.1_windows_amd64.exe --repo x:\repository forget --keep-daily 7 --keep-weekly 8 --keep-monthly 24
restic_0.9.1_windows_amd64.exe --repo x:\repository prune
如果您希望 Restic 备份到 S3,只需定义您的密钥并进行这样的备份。这里要考虑的一件事是 Restic 可能会从 S3 读取数据,即使它有本地缓存,因此在某些情况下 IA 类可能比标准类更昂贵 - 尽管我怀疑这些情况很少见。
以下是 Restic 的基本设置:
REM setup S3 (once)
set AWS_ACCESS_KEY_ID=ABCDEFGHIJK
set AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXX/AAA
set RESTIC_PASSWORD=abcdefg
restic_0.9.1_windows_amd64.exe --repo s3:s3.amazonaws.com/s3-bucket-name init
这是备份的方法
REM backup
restic_0.9.1_windows_amd64.exe --repo s3:s3.amazonaws.com/s3-bucket-name backup c:\data
答案2
如果您只需要存储档案,请使用 Amazon Glacier。Glacier 比 S3 更便宜。