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

Mic*_*ung 12 amazon-s3 tar amazon-web-services

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

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

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

Bob*_*Bob 19

您真正要找的不是保存本地文件。您可以使用管道从发送数据tar通过gzips3不保存任何东西到磁盘。

tar c /var/test | gzip | aws s3 cp - "s3://tests/test1.tar.gz"
Run Code Online (Sandbox Code Playgroud)

分解一下(在这里stdin和通过管道stdout引用标准输入/输出流):

  • tar c /var/test从中创建一个tar存档/var/test并将其输出到stdout...
  • ...由gzipfrom读取stdin,压缩后的文件 ( .tar.gz) 输出到stdout...
  • ...由aws s3 cp - "s3://tests/test1.tar.gz"from读取stdin并发送到 S3。该-告诉AWS CLI从副本stdin

这仍然在gzip本地执行操作,但不需要创建临时文件,因为整个流直接通过网络发送。


小智 8

tar cvfz - /var/test | aws s3 cp - s3://tests/test1.tar.gz
Run Code Online (Sandbox Code Playgroud)

您不必单独进行 gzip;tar 通过该z选项为您完成此操作。

这在两个方向上都有效。