使用gzip压缩文件以使用aws命令进行传输

时间:2014-11-11 15:18:17

标签: linux amazon-ec2 amazon-s3 gzip cp

$ gzip file.txt | aws s3 cp file.txt.gz s3://my_bucket/

我正在尝试将file.txt gzip到file.txt.gz并将其传递给aws程序,该程序将s3作为命令而cp作为子命令。

生成:警告:正在跳过文件file.txt.gz.文件不存在。

我是linux的新手。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:7)

$ gzip -c file.txt | aws s3 cp - s3://my_bucket/file.txt.gz

除非你想在本地拥有.gz文件,否则你可以在一步中完成gzip和传输,让file.txt保持完整。

现在,较新版本的AWS CLI允许您通过' - '字符。

答案 1 :(得分:4)

|替换为&&|表示管道,它立即运行aws命令,无需等待gzip完成甚至启动。此外|将不执行任何操作,因为其目的是将gzip的stdout输出发送到aws的stdin输入。该表格中没有来自gzip的标准输出。

如果您真的希望gzip将其输出发送到stdout并且而不是写入文件file.txt.gz,那么您需要使用gzip -c file.txt。然后,您需要aws的方式来接收该数据。在Unix实用程序中指定的典型方法是用-替换文件名。但是我不知道gzip -c file.txt | aws s3 cp - s3://my_bucket/是否有效。