【问题标题】:How to upload to compress and upload to s3 on the fly with s3cmd如何使用 s3cmd 即时上传压缩并上传到 s3
【发布时间】:2014-10-04 11:57:51
【问题描述】:

我刚刚发现我的盒子还有 5% 的 HDD 硬盘驱动器,我有将近 250GB 的 mysql bin 文件要发送到 s3。我们已经从 mysql 转移到 NoSQL,目前不使用 mysql。不过,我希望在迁移之前保留旧数据。

问题是我不能在将文件发送到那里之前循环压缩文件。所以我想我可以在发送之前即时 gzip,这样它就不会将压缩文件存储在 HDD 上。

for i in * ; do cat i | gzip -9c | s3cmd put - s3://mybudcket/mybackups/$i.gz; done

为了测试这个命令,我在没有循环的情况下运行它,它没有发送任何东西,但也没有抱怨任何东西。有没有办法做到这一点?

操作系统是 ubuntu 12.04 s3cmd 版本为 1.0.0

感谢您的建议。

【问题讨论】:

    标签: amazon-s3 compression gzip s3cmd


    【解决方案1】:

    您也可以使用 https://github.com/minio/mc 。 Minio Client aka mc 是用 Golang 编写的,在 Apache License Version 2 下发布。

    它实现了mc pipe 命令,让用户可以将数据直接流式传输到 Amazon S3。 mc pipe 也可以并行管道到多个目的地。在内部 mc pig 流式传输输出并并行进行分段上传。

    $ mc pipe
    NAME:
       mc pipe - Write contents of stdin to files. Pipe is the opposite of cat command.
    
    USAGE:
       mc pipe TARGET [TARGET...]
    

    示例

    #!/bin/bash
    
    for i in *; do
       mc cat $i | gzip -9c | mc pipe https://s3.amazonaws.com/mybudcket/mybackups/$i.gz
    done
    

    如果你能看到mc 也实现了mc cat 命令:-)。

    【讨论】:

      【解决方案2】:

      允许 stdin 到 S3 的功能已于 2014 年 2 月添加到 Master 分支,所以我想确保您的版本比那个更新? 1.0.0 版本来自 2011 年及之前的版本,当前(在撰写本文时)是 1.5.2。您可能需要更新您的 s3cmd 版本

      除此之外,根据https://github.com/s3tools/s3cmd/issues/270,这应该可以工作,只是你的“do cat i”缺少 $ 符号来表示它是一个变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-28
        • 2014-07-26
        • 1970-01-01
        • 2021-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多