【问题标题】:Move files from EC2 to S3 and then delete from EC2将文件从 EC2 移动到 S3,然后从 EC2 中删除
【发布时间】:2015-08-11 10:33:35
【问题描述】:

我正在将文件从一台远程服务器迁移到 S3。大约有 10k 个文件(所有文件都可以通过远程服务器的 http URL 访问)。总大小约为 300GB(单个文件不超过 1GB)。我试图找出进行这种迁移的最有效方法。到目前为止,我有一个 EC2 实例并安装了 S3CMD; PHP-SDK,我也有一个包含所有 URL 的文本文件。我能够毫无问题地将文件从 EC2 移动到 S3。但问题是,如果我在 EC2 中下载所有内容,我的存储空间就会用完。有没有一种方法可以让我在 EC2 中下载文件(也许查看 txt 文件)将其移动到 S3(使用 S3CMD),然后在我转到下一个文件之前从 EC2 中删除文件。

理想情况下,我希望将所有内容从远程位置直接下载到 S3,但我认为这是不可能的,除非这里有人说是这样。

提前感谢您的帮助。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-s3 aws-php-sdk


    【解决方案1】:

    我看不到您当前的 ec2 实例正在运行什么操作系统。但如果是 linux 你可以使用 S3fs
    https://github.com/s3fs-fuse/s3fs-fuse/wiki/Fuse-Over-Amazon

    这将允许您像本地驱动器/文件夹一样安装您的存储桶。然后你可以简单地将文件移动到那里。它会将它们上传到后台的存储桶中。我会分批移动它们,以便于跟踪。上传后移动它们会将它们从本地文件系统中删除。您也可以通过这种方式将它们复制到存储桶中。完成后,您可以进行简单的比较以确保两个文件夹中存在相同的文件,然后您就完成了。

    编辑根据评论中提出的问题进行编辑

    在远程机器上,使用您的 AWS 凭证设置 Fuse。
    安装您的 S3 存储桶。它看起来像 Ubuntu 中的本地文件夹结构。
    假设您当前的文件位于
    /var/myfiles/folder1/var/myfiles/folder2
    将您的 S3 存储桶挂载到 /mybucket
    mv /var/myfiles/folder1 /mybucket/folder1

    同样,我会分批移动它们并确保文件夹匹配,然后再继续。

    结束编辑

    如果您的 EC2 实例是 Windows,那么还有其他方法可以将 S3 存储桶挂载为本地驱动器。然后可以进行相同的过程。

    【讨论】:

    • 我正在使用 Ubuntu。所以你是说一旦我挂载了我的存储桶(使用 Fuse),我就可以直接将它下载到那个文件夹(S3)?
    • @chips 。是的,您可以将文件从本地磁盘文件夹“移动”到新安装的 s3 存储桶文件夹。仍然会有大量数据传输,但 s3fs 会为您处理。在我上面的答案中添加了更多细节以使其更清晰。
    • 评论您的编辑。我认为移动的问题是存储空间。我一开始就无法将东西下载到我的 EC2(批量会很耗时),但如果我可以直接在那里下载,您的原始答案仍然有效。例如 cd /mybucker ; curl -O 网址
    • 如果问题是磁盘空间不足,您可以扩展可用空间 - EBS 现在最多支持 16TB 卷。您可以下载所有内容,然后使用 AWS cli 将其推送到 S3 - aws s3 sync 会完成。
    • 如果您要使用 s3fs,只有我们可以将文件移入和移出 s3。任何在块级别读取文件的应用程序都可能无法与 s3fs 一起正常工作。
    猜你喜欢
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2012-02-10
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    相关资源
    最近更新 更多