【问题标题】:How can I download encrypted .gz file from AWS S3 bucket如何从 AWS S3 存储桶下载加密的 .gz 文件
【发布时间】:2020-04-01 17:16:00
【问题描述】:

我备份了一个 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 脚本执行此操作,但 IDK 是否会更好?

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

我是这样加密的:

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

【问题讨论】:

  • 我认为这个问题在这里是题外话。 bash 的标签描述说 关于 Bash 交互使用的问题在超级用户上比在 Stack Overflow 上更有可能成为话题。,你没看到吗?
  • 另外我真的不想就如何编写 bash 提供建议,只是包含了标签,因为我有一些 bash
  • 是的,好的,就这样吧,谢谢!
  • “以我指定的格式”从存储桶中获取备份是什么意思?存储在 S3 中的文件就是这样。如果您上传了 tar.gz,那么就是这样。当你下载它时,它不会改变。要从 S3 复制文件,请使用 aws s3 cp s3://mybucket/myfile.tar.gz .(带点)或 aws s3 cp s3://mybucket/myfile.tar.gz xyz.tar.gz
  • @jarmod 好的,你是绝对正确的。我真笨。使用终端,它就像你说的那样工作,没有问题,并且给了我 .gz 文件。我的密码没有被读取,我看错了方向。然而,只是为了完整起见:如果我在浏览器中下载 .gz 文件,它就不是这样了。它下载为 .tar 文件。但这没关系,无论如何,终端更适合我的用例。非常感谢,你让我看起来正确!

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


【解决方案1】:

您可以使用 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 本身不会这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-06
    • 2021-05-23
    • 1970-01-01
    • 2017-10-19
    • 2017-06-26
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    相关资源
    最近更新 更多