python - 如何从 AWS S3 存储桶下载加密的 .gz 文件

标签 python bash amazon-web-services amazon-s3

我备份了一个 nextcloud 实例,对其进行压缩和加密,然后将其存储在 S3 存储桶中。当我进入存储桶时,我有一个名为 backup.tar.gz 的文件。伟大的。

现在我从存储桶中下载文件,并得到 .tar文件,这显然使我的备份完全无用。我无法解密它。如果我手动保存扩展名为 .gz 的文件它仍然没有解密,但显示 tar: Error opening archive: Unrecognized archive format

当我尝试通过 CLI 下载它时,它不会下载该文件,而是显示 usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] :

aws s3 cp s3://mybucket/myfile.tar.gz

这里也提到了这个问题:https://forums.aws.amazon.com/thread.jspa?threadID=250926唯一的答案是,“为什么不使用 AWS 快照来备份您的 EC2 实例”。

我不明白为什么 AWS 会这样做,还是这是一个错误?有没有什么好的方法可以按照我指定的格式从我的存储桶中获取备份?

如果需要的话,我也可以使用 python 脚本来做到这一点,但我不知道这样是否会更好?

非常感谢您的帮助!提前致谢!

我这样加密:

tar -czf - /path/to/file | openssl enc -e -aes256 -pbkdf2 -salt -out backup.tar.gz -pass pass:$ENCRYPTION_PASS

最佳答案

您可以使用 awscli 从 S3 下载文件,如下所示:

aws s3 cp s3://mybucket/myfile.tar.gz .

请注意结尾的句点,它的意思是“到当前文件夹”。

或者您可以在下载过程中重命名文件,如下所示:

aws s3 cp s3://mybucket/myfile.tar.gz xyz.tar.gz

我想,如果您使用浏览器或其他工具(不是 awscli)下载 tar.gz,那么该工具可能会尝试提供帮助并在飞行中为您解压缩 GZ 文件,从而生成 TAR文件。但 awscli 本身不会执行此操作。

关于python - 如何从 AWS S3 存储桶下载加密的 .gz 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60976596/

相关文章:

python - 如何在 Django 中为 css 文件设置相对 url

arrays - 在数组上使用 GREP 查找单词

python - 如何编写一个用 python 调用自身的 bash 脚本?

python - 使用 AWS Lambda/CloudFormation 转换 AWS Kinesis Firehose 中的数据

python - 从多处理 python 函数中提取输出

python - 使用 Pyinstaller 编译 PyQt4 时出错

python - 按数字最大的顺序对显示的内容进行排序

python - 连接多个文件内容

默认 AWS 私有(private)主机名的正则表达式

amazon-web-services - 如何使用 Terraform 创建与 AWS S3 的 Snowflake 存储集成?