Ste*_*ith 4 amazon-web-services
我正在阅读有关使用 Amazon Glacier 和 AWS S3 服务的文档,以便将它们用作夜间备份。除非我错过了,增量备份是如何完成的?
我想每晚从我们的 Linux 文件服务器备份 100 GB 数据,即大约 70k 个文件,以便存储以进行异地备份。但是存在删除文件的问题,因此听起来您无法更新它们。
还有另一种更简单的方法吗?是否可以使用 rsync 备份到 AWS EC2,然后将数据从 EC2 传输到 Amazon Glacier 进行存储或传输到 AWS S3?因为每晚发送一个新的 100 GB 压缩 tar 文件的想法是不切实际的。
进行备份的方法有很多,这里有一些想法和选择。
增量备份
理想情况下,您的备份应该是增量的。这意味着您可以根据需要回滚到以前的版本。它还可以显着减少 CPU、带宽使用量,有时还可以减少存储空间。您还可以查看差异备份,它们略有不同,因为它们是上次完整备份的增量。
本地备份到 AWS
AWS Storage Gateway虚拟设备可能对您有用。安装虚拟机,分配一些磁盘。有几种模式,他们不久前更改了名称,但本质上它的工作原理就像备份到 S3 的本地磁盘。它可以将所有数据保留在本地,或使用本地磁盘作为 S3 的缓存。
除此之外,还有很多其他选项可以将数据导入 AWS。
AWS S3 同步
我使用“aws s3同步”命令行实用程序将数据上传到AWS S3,使用IA存储类。这可以确保 AWS S3 上的备份安全。您可以将要备份的文件直接上传到 S3,也可以上传本地存储的备份程序的存储库,或者您的备份软件可能本身使用 S3。您可以使用命令行进行以下操作。
aws s3 sync /path/to/backups s3://bucketname/backups --storage-class STANDARD_IA --delete --exclude ".sync/*"
Run Code Online (Sandbox Code Playgroud)
您可以在 S3 中打开加密和版本控制。它单独保存文件的每个版本,它不是增量的,因此它可以比也进行压缩的增量备份软件使用更多的存储空间。
目的地
S3 是备份的好地方。如果您的备份相当静态,您可以使用 S3不频繁访问类存储,它比标准存储类便宜。如果您的备份是不可变的(从不更改),您可以使用 S3 Glacier 存储类,但请记住,恢复这些备份需要几个小时。
Dropbox 是一个合理的备份位置。我使用了Dropbox Uploader 脚本。但它并不那么灵活 - 它不会删除已本地删除的文件,从而浪费磁盘空间。这就是你如何使用它。
/opt/Dropbox-Uploader/dropbox_uploader.sh -s -q upload /path/to/files /dropbox/path
Run Code Online (Sandbox Code Playgroud)
**Borg 备份(不再使用)**
我使用Borg Backup备份我的 Linux 服务器(恰好位于 AWS 上)。这会在本地磁盘上创建增量、重复数据删除的备份。它有保留策略,告诉它保存数据多长时间 - 例如,一周每天晚上,一个月每周一次,一年每月一次。您可以使用许多增量备份程序。
我不喜欢 Borg Backup 的一件事是它每次运行时都会重命名现有文件。我认为对于非常大的备份,这种行为会发生变化,但我的 500MB 备份肯定每天晚上都会重命名该文件。每天您都会得到数百个小文件和一个新的/重命名的大文件。因此,如果您的备份是远程的,您可能会使用比您预期更多的带宽。因此我不再使用 Borg。
Borg 还原生支持通过 SSH 访问的远程存储库。您可以拥有一个带有 EBS 磁盘的 EC2 实例,同步到它,然后实例关闭 - 但 EBS 比 S3 贵很多,所以它不是一个很好的选择。
**Restic Backup(现在用于 PC/Web 服务器备份)**
我已经使用Restic Backup好几年了。它的目标是简单、快速、可验证、安全、高效和免费。它适用于大多数平台(*nix、Windows 等),并且被编译为单个二进制文件,因此安装很容易。
它是基于块的并且对于磁盘/网络来说是高效的。我已经做了多次恢复测试,它总是完美地恢复一切。我对休息很满意。它正在缓慢但稳定的发展中,未来将添加诸如压缩之类的功能 - 截至 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
Run Code Online (Sandbox Code Playgroud)
您可以让 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
Run Code Online (Sandbox Code Playgroud)
如果您希望 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
Run Code Online (Sandbox Code Playgroud)
这就是您进行备份的方式
REM backup
restic_0.9.1_windows_amd64.exe --repo s3:s3.amazonaws.com/s3-bucket-name backup c:\data
Run Code Online (Sandbox Code Playgroud)