Download/Copy tar.gz 从 S3 到 EC2 的文件

Download/Copy tar.gz File from S3 to EC2

当我从 AWS S3 下载 tar.gz 文件,然后尝试解压它时,出现以下错误:

tar -xzvf filename_backup_jan212021_01.tar.gz

gzip: stdin: not in gzip format

tar: Child returned status 1
tar: Error is not recoverable: exiting now

当我检查它是什么类型的文件时,我得到这个:

file filename_backup_jan212021_01.tar.gz
filename_backup_jan212021_01.tar.gz: ASCII text

这是我用来将文件从 S3 复制到我的 EC2 的命令:

aws s3 cp s3://bucket_name/filename_backup_jan212021_01.tar.gz .

请帮我找到从 AWS S3 下载后提取 tar.gz 文件的解决方案。

tar -xzvf filename_backup_jan212021_01.tar.gz

gzip: stdin: not in gzip format
file filename_backup_jan212021_01.tar.gz
filename_backup_jan212021_01.tar.gz: ASCII text

cat filename_backup_jan212021_01.tar.gz

/home/ec2-user/file_delete_01.txt
/home/ec2-user/file_jan2021.txt
/home/ec2-user/filename_backup_jan1.tar.gz
/home/ec2-user/filename_backup_jan1.txt
/home/ec2-user/filename_backup_jan2.tar.gz
/home/ec2-user/filename_backup_jan3.tar.gz

所有这些都表明上传到 S3 的文件本身不是 gzip 压缩后的 tar 文件,而只是上传了文件名 .tar.gz 的纯文本文件。虽然文件名和扩展名用于向人类指示内容类型,但计算机不这么认为:)

您可以使用

创建文件
tar cvzf <archive name> </path/to/files/to/be/tarred> && aws s3 cp <bucket path> <archive name>

创建存档并将其上传到 S3,然后使用您在问题中提到的命令下载它们。当然用正确的名称替换占位符等等