AWS 将文件夹以 tar.gz 格式上传到 S3,无需在本地压缩

AWS 将文件夹以 tar.gz 格式上传到 S3,无需在本地压缩

在 AWS CLI 中,如何将文件夹作为tar.gz文件上传而不在本地创建tar.gz

例如,我有一个文件夹/var/test,我想将其上传到/tests/test1.tar.gz

我该如何做到这一点而不将其转换为tar.gz本地?(我想节省本地空间,因为我的硬盘上没有太多空间。)

答案1

你真正想要的不是保存本地文件。你可以使用管道将数据从tar发送gzips3而不将任何内容保存到磁盘。

tar c /var/test | gzip | aws s3 cp - "s3://tests/test1.tar.gz"

分解一下(其中stdinstdout参考标准输入/输出流通过管道):

  • 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选项为您完成该操作。

这对两个方向都有效。

相关内容