如何从命令行管理 Amazon S3

Amazon S3 是在云上廉价地备份和存储文件的好地方。 虽然有些人使用它来存储他们的个人数据,但也有其他人使用它来存储他们网站的图像和脚本,甚至将其用作 CDN。 在您的桌面上,您可以使用 CloudBerry、DragonDisk 等应用程序轻松访问和管理您的 Amazon S3 帐户,但是如果您需要从命令行访问它怎么办? 这就是 S3cmd 派上用场的地方。

S3cmd 是一个免费的命令行工具,用于在 Amazon S3 中上传、检索和管理数据。 除了 S3 之外,它还支持其他使用 S3 协议的云存储服务提供商,例如 Google Cloud 存储或 DreamHost DreamObjects。 此工具的最佳用途是在远程服务器上,所有操作都在命令行上完成。 或者,您也可以使用它来创建批处理脚本和自动备份到 S3。

S3cmd 是用 Python 编写的,因此只要安装了 Python,几乎所有操作系统都支持它。

安装

S3cmd 可以在大多数 Linux 存储库中找到。 在 Debian/Ubuntu 或任何其他基于 apt 的发行版中,您可以使用以下命令安装 S3cmd:

为了 Fedora、Centos 或任何其他基于 yum 的发行版:

或者,您可以 下载 源代码,解压缩包并运行安装程序:

入门

在开始之前,您需要准备好 Amazon S3 的访问密钥和密钥。 您可以在 亚马逊管理控制台.

要开始,请打开终端并输入:

它会首先提示您输入您的访问和秘密密钥。

接下来,您必须输入加密密钥和 GPG 程序的路径。

s3cmd-配置-加密

加密密钥后是使用 HTTPS 协议的提示。 默认选项为“否”,但您可以设置为“是”以更安全地连接到 Amazon S3。 请注意,使用 HTTPS 协议会降低传输速度,如果您使用代理,则无法使用。

s3cmd-配置-https

配置并测试设置后,您可以继续使用 S3cmd。 如果需要更改设置,可以编辑主目录中的 .s3cfg 文件,或运行 s3cmd --configure 再次命令。

用法

首先,要查看 S3 账户中的存储桶,您可以使用 ls 命令。

s3cmd-list-bucket

要创建存储桶,请使用 mb 命令:

请注意,您需要在存储桶名称前加上“s3://”前缀

s3cmd-创建存储桶

要列出存储桶中的内容,请使用 ls 命令与存储桶名称一起使用。 为了 example:

s3cmd-list-bucket-content

将文件上传到存储桶

通过 S3cmd 上传文件的最简单方法是使用 put 命令。 为了 example:

此外,您可以使用 --encrypt 在上传到 S3 之前加密文件的参数。

的默认权限 put 命令是私有的,这意味着该文件只能由您查看。 如果需要文件可公开访问,可以添加参数 --acl-public

要进行更精细的控制,请使用 --acl-grant=PERMISSION:EMAIL or USER_CANONICAL_ID 范围。 为了 example:

“PERMISSION”可以是“read”、“write”、“read_acp”、“write_acp”、“full_control”、“all”。

从存储桶中检索文件

要检索文件,请使用 get 命令。

要下载存储桶中的所有文件,只需附加 --recursive 范围。

从存储桶中删除文件

s3cmd 的删除命令很简单 del. 为了 example:

您还可以使用 --recursive 参数删除存储桶中的所有文件。

如需更多 S3cmd 命令, 在此处查看其使用指南.

高级用法:将文件夹同步到 S3

假设您将所有重要文件存储在一个文件夹中,并且希望将其同步到 S3。 S3cmd 带有一个 sync 可以将本地文件夹同步到远程目标的命令。

您所要做的就是创建一个 cronjob 来定期运行同步命令。

1. 打开 crontab。

2. 将以下行添加到 crontab 的末尾。 Save 并退出 crontab。

就是这样。 您的系统现在将每 5 分钟将机密文件夹同步到 S3。 您可以更改该值以按您喜欢的时间间隔运行同步命令。 您从秘密文件夹中删除的每个文件也将从 S3 中删除。

结论

对于需要在命令行环境下工作的人来说,S3cmd 确实是您从命令行访问和管理 Amazon S3 的绝佳工具。 它不仅易于使用,而且还为高级使用和脚本编写需求提供了大量选项。

订阅我们的新闻!

我们最新的教程直接发送到您的收件箱

注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅