服务器增量备份到 AWS Glacier

Jak*_*son 5 backup php cron amazon-web-services amazon-glacier

我希望将各种目录和文件从 Linux 服务器备份到 AWS Glacier。我正在努力解决如何管理此问题的详细信息。

增量备份

我想增量上传文件。所以基本上,如果一个文件没有改变,如果它已经存在,我不想再次将它上传到 Glacier。我想我已经弄清楚了这部分。由于您无法立即获得 Glacier 保管库中档案的即时列表,因此我将保留上传文件的本地数据库,以便能够分辨保管库中存在哪些内容,哪些不存在。这将允许我进行增量备份(仅上传丢失或更改的文件)。

无法覆盖文件?

根据(http://aws.amazon.com/glacier/faqs/):

存储在 Amazon Glacier 中的档案是不可变的,即档案可以上传和删除,但不能编辑或覆盖。

那么,如果我上传文件/存档,然后文件在本地更改,下次我进行备份时,Glacier 将如何处理这个问题,因为它无法用新版本覆盖文件?

删除旧数据

AWS 对删除不到 3 个月的档案收取每 GB 0.03 美元的费用。由于我正在备份本地服务器,因此我想删除本地不再存在的存档。组织这个的最佳方式是什么。使用本地存储的存档清单来确定哪些数据不再存在,如果数据超过 3 个月,是否将其从 Glacier 中删除?这看起来很简单,但有没有更好的方法呢?

单个文件与 TAR/ZIP 文件

您可以将单个文件作为档案上传,或者在上传之前将文件分组为 TAR 或 ZIP 文件以提高效率。TAR/ZIP 文件的想法很吸引人,因为它使它更简单并且您产生的存储费用更少,但我想知道我将如何处理增量上传。如果上传了包含 10,000 个文件的 20 MB zip 文件,并且其中一个文件在本地发生了更改,我是否需要再上传 20 MB 的 zip 文件?现在我需要承担在这些 zip 文件中存储几乎所有内容的 2 个副本的成本......此外,我将如何处理删除本地不再存在的 ZIP 文件中的内容?由于我不想删除整个 zip 文件,现在我要支付费用来存储不再存在的文件。

也许我想多了。解决这些问题最直接的方法是什么?

我不知道这是否重要,但我正在为此备份脚本使用 PHP SDK。此外,我不想先上传到 S3 存储桶,然后再将存储桶备份到 Glacier,因为我现在还必须支付 S3 存储和传输费用。

Bru*_*e P 3

那么,如果我上传文件/存档,然后文件在本地发生更改,并且下次我进行备份时,会发生什么情况,Glacier 如何处理这个问题,因为它无法用新版本覆盖该文件?

根据冰川常见问题解答

您将数据作为存档存储在 Amazon Glacier 中。每个存档都分配有一个唯一的存档 ID,稍后可用于检索数据。存档可以代表单个文件,或者您可以选择将多个文件组合起来作为单个存档上传。您将档案上传到保管库中。保管库是用于组织数据的档案集合。

这意味着您上传的每个文件都会被分配一个唯一的 ID。上传同一文件两次,文件的每个副本都有自己的 ID。如果需要,这使您能够恢复到文件的先前版本。

使用本地存储的存档清单来确定哪些数据不再存在,如果数据已存在超过 3 个月,请将其从 Glacier 中删除?这看起来很简单,但是有更好的方法吗?

为了避免因删除 3 个月以内的数据而产生附加费,这可能是最好的方法。但您需要跟踪和删除的不仅仅是不再存在的数据。如上所述,每当文件发生更改并将其重新上传到 Glacier 时,您都会获得该文件的新 ID。假设您不希望能够恢复到这些旧版本,您最终也会希望删除该文件的旧版本。

如果上传的 20 MB zip 文件包含 10,000 个文件,并且其中一个文件在本地更改,我是否需要上传另一个 20 MB zip 文件?现在我需要承担在这些 zip 文件中存储几乎所有内容的 2 个副本的成本...另外,我将如何处理删除 ZIP 文件中本地不再存在的内容?由于我不想删除整个 zip 文件,现在我需要支付费用来存储不再存在的文件。

这是您真正必须自己决定的权衡。您是否对所有内容进行 tar/zip 压缩,然后被迫跟踪这些文件及其中的所有内容,或者是否值得您单独上传文件,以便您可以单独清除它们,因为不再需要它们。

您可能会考虑其他几种方法:

  • 有两个或多个 tar/zip 存档,一个包含极不可能更改的文件(如系统文件),另一个包含配置文件和其他更可能随时间变化的内容。
  • 不必费心跟踪单个文件,并将所有内容备份到上传到 Glacier 的单个 tar/zip 存档中。当每个存档达到 3 个月(甚至可能更晚)时,只需删除它即可。这为您提供了一种非常简单的方法来跟踪和从给定时间点恢复。

然而,话虽如此,Glacier 可能并不是满足您需求的最佳方法。Glacier 实际上是用于数据归档,这与仅仅备份服务器不同。如果您只想对服务器进行增量备份,那么使用 S3 而不是 Glacier 可能是更好的方法。使用Duplicityrdiff-backup之类的工具(与s3fs之类的工具结合使用)将使您能够将增量备份到 S3 存储桶并非常轻松地管理它们。多年来我在一些 Linux 系统上使用了 rdiff-backup,发现它工作得非常好。