Rsync 到 AWS S3 存储桶

Bar*_*ans 34 backup rsync amazon-s3 amazon-web-services

对于我托管网站的服务器,我想将数据和设置备份到 S3 存储桶。我发现您不能直接使用 rsync 备份到 S3 存储桶。是否有另一种方法可以实现以下 rsync 命令将数据备份到 S3 存储桶?

rsync -­av ­/Data /s3bucket
Run Code Online (Sandbox Code Playgroud)

我还想将该服务器上的 mysql 数据库备份到 S3 存储桶。实现这一目标的最佳方法是什么?

最后一个问题,如果我设法将所有内容备份到 S3。如果服务器崩溃或在最坏的情况下完全擦除,恢复服务器的最佳方法是什么?我必须自己记下服务器设置并重新配置服务器还是有办法备份它?

小智 41

要与 s3 通信,您需要做两件事

  1. 对 s3 存储桶具有读写访问权限的 IAM 用户凭证。
  2. 像用于 bash 的 aws-cli、用于 Python 的 boto 库等的客户端。

两者都拥有后,您就可以将任何文件从您的机器传输到 s3 以及从 s3 传输到您的机器。以下是 aws-cli 的示例。

同步文件夹中的所有文件

aws s3 sync source_folder  s3://your_bucket_name/destination_folder/
Run Code Online (Sandbox Code Playgroud)

将一个文件复制到 s3

aws s3 cp source_file s3://your_bucket_name/destination_folder/
Run Code Online (Sandbox Code Playgroud)

只需替换命令中的目标即可从 s3 下载任何文件。

有关更多信息,请关注aws 文档

  • 值得指出的是,`rsync` 计算校验和,客户端和服务器端,然后比较它们以准确确定文件是否已更改。而`aws s3 sync` 没有 - 它使用文件大小和时间戳。如果我错了,有人请纠正我吗? (3认同)
  • 注意:您可能希望首先运行“aws configure”,以便存储您的凭据,这样您就不必在每次同步时输入它们。 (2认同)

Kei*_*ith 26

你可以试试rclone

设置(文档):

rclone config
Run Code Online (Sandbox Code Playgroud)

同步(文档):

rclone sync /my/local/folder s3service:bucket-name
Run Code Online (Sandbox Code Playgroud)

  • @Kutzi 我看到的主要优点(当你想使用 s3 时)是在你想在不同的 s3(类似)提供商之间同步的情况(awscli 不允许这样做)。此外,如果您使用不是来自 AWS 的类似 s3 的服务(minio、backblaze、数字海洋空间等),您需要在命令中指定端点,而不是将其声明为配置文件(有一个 [开放问题](https://github.com/aws/aws-cli/issues/1270))。 (3认同)
  • 听起来不错,但是您能详细说明一下与使用 aws s3sync 相比有什么优势吗? (2认同)
  • 此外 rclone 保留时间戳,而 aws s3 sync 不保留。 (2认同)