在 AWS CLI 中,如何将文件夹作为tar.gz
文件上传而不在本地创建tar.gz
?
例如,我有一个文件夹/var/test
,我想将其上传到/tests/test1.tar.gz
我该如何做到这一点而不将其转换为tar.gz
本地?(我想节省本地空间,因为我的硬盘上没有太多空间。)
答案1
你真正想要的不是保存本地文件。你可以使用管道将数据从tar
发送gzip
到s3
而不将任何内容保存到磁盘。
tar c /var/test | gzip | aws s3 cp - "s3://tests/test1.tar.gz"
分解一下(其中stdin
和stdout
参考标准输入/输出流通过管道):
tar c /var/test
创建一个tar
档案/var/test
并将其输出到stdout
...gzip
...由读取stdin
,并将 gzip 压缩文件 (.tar.gz
) 输出到stdout
...- ...由...读取
aws s3 cp - "s3://tests/test1.tar.gz"
从stdin
并发送到 S3。-
告诉 AWS CLI 从 复制stdin
。
这仍然gzip
在本地执行操作,但不需要创建临时文件,因为整个流直接通过网络发送。
答案2
tar cvfz - /var/test | aws s3 cp - s3://tests/test1.tar.gz
您不需要单独进行 gzip 操作;tar 会使用该z
选项为您完成该操作。
这对两个方向都有效。