我刚刚发现我的盒子里只剩下5%的硬盘空间,我还有差不多250 to的mysql文件要发送给s3。我们已经从mysql迁移到了NoSQL,并且目前没有使用mysql。但是,我希望在迁移之前保留旧数据。
问题是,在将文件发送到那里之前,我不能只在循环中对它们进行tar。
for i in * ; do cat i | gzip -9c | s3cmd put - s3://mybudcket/mybackups/$i.gz; done有没有实现这一点的方法?
操作系统为ubuntu 12.04,s3cmd版本为1.0.0
谢谢你的建议。
发布于 2015-11-09 14:56:28
或者,您可以使用https://github.com/minio/mc。Minio Client aka mc是用Golang编写的,在Apache License version2下发布。
它为用户实现了mc pipe命令,以便直接将数据流式传输到亚马逊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命令:-)。
发布于 2015-03-03 13:45:17
允许标准输入到S3的功能是在2014年2月添加到主分支中的,所以我猜一定要确保你的版本比这个版本更新?版本1.0.0来自2011年以及之前的版本,当前(在撰写本文时)是1.5.2。您可能需要更新您的s3cmd版本
除此之外,根据https://github.com/s3tools/s3cmd/issues/270的说法,这应该是可行的,只是你的"do cat i“没有$符号来表示它是一个变量。
https://stackoverflow.com/questions/26192577
复制相似问题