同步 AWS S3 存储桶到 EC2 服务器。

4
我正在尝试使用rsync来将我的S3存储桶与我的EC2服务器同步。然而,我在编写代码时遇到了问题。在我的EC2服务器上,我尝试了以下方法,但它不起作用。我知道我的S3地址是错误的,但我不确定应该放什么。iosSourceCode是存储桶名称。如何将此存储桶中的文件与我的EC2服务器文件同步?当我完成这项工作后,我打算设置一个cronjob每10分钟执行一次。是否有更好的方法来做到这一点,如果有,怎么做?请提供代码,谢谢!
sudo rsync -ra iosSourceCode.s3-website-us-east-1.amazonaws.com /var/www/

除非 rsync 发生了重大变化,否则它根本不会以那种方式工作。 - Michael - sqlbot
请解释一下,我需要弄清楚这个。 - Blane Townsend
3个回答

7
您可以使用这个命令:
aws s3 --region <your region name> sync s3://<your bucket name> /your/directory/path

所以在你的情况下:
aws s3 --region us-east-1 sync s3://osSourceCode.s3-website /var/www/

这是一次单向同步(在此示例中仅从S3下载更新),因此如果您想双向同步,则需要使用源和目标交换的两个命令:

aws s3 --region us-east-1 sync s3://osSourceCode.s3-website /var/www/
aws s3 --region us-east-1 sync /var/www s3://osSourceCode.s3-website

您可以将以下内容添加到crontab条目中,使其定期发生,如下例所示:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin
MAILTO=root
HOME=/

*/2 * * * * root aws s3 sync --region ap-southeast-2 /var/www/html s3://mywebsitecode/ >> /usr/local/logs/aws.log 2>&1
*/5 * * * * root aws s3 sync --region ap-southeast-2 s3://mywebsitecode/ /var/www/html >> /usr/local/logs/aws.log 2>&1

1
这应该是被接受的答案,因为它是标准 AWS CLI 工具的一部分,并且据所有账户称它更快。请参见文档相关答案 - RichVel

2

请使用s3cmd

http://s3tools.org/s3cmd

使用s3cmd同步

以下是语法:

s3cmd sync s3://mybucket/myfolder/files/ /var/mybucket/myfolder/files/

您可以将上述语法放入shell脚本中,并将该脚本添加到cron以在特定时间间隔内运行它。


0
你可能想要查看s3同步命令,它是Amazon CLI(命令行界面)的一部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接