从 Linux 命令行上传文件到 S3 帐户

从 Linux 命令行上传文件到 S3 帐户

我的 Linux 托管帐户中有几个大文件需要上传到我的 S3 帐户。我不想先下载它们,然后再将它们上传到 S3。

有什么方法可以通过 Linux 命令行“上传”它吗?或者我可以通过与 Lynx 合作的网站访问它吗?

答案1

S3命令做你想做的事。上传和下载文件、同步目录和创建存储桶。

S3cmd 是一款免费的命令行工具和客户端,用于上传、检索和管理 Amazon S3 和其他使用 S3 协议的云存储服务提供商(如 Google Cloud Storage 或 DreamHost DreamObjects)中的数据。它最适合熟悉命令行程序的高级用户。它也是批处理脚本和自动备份到 S3(由 cron 触发)等的理想选择。

答案2

亚马逊现在也提供他们自己的 CLI 工具。

http://aws.amazon.com/cli/

使用熟悉的语法,您可以在基于目录的列表中查看 S3 存储桶的内容。

$ aws s3 ls s3://mybucket
      LastWriteTime     Length Name
      -------------     ------ ----
                           PRE myfolder/
2013-09-03 10:00:00       1234 myfile.txt
...

您可以在单个文件夹级命令中执行多个文件的递归上传和下载。AWS CLI 将并行运行这些传输以提高性能。

$ aws s3 cp myfolder s3://mybucket/myfolder --recursive
upload: myfolder/file1.txt to s3://mybucket/myfolder/file1.txt
upload: myfolder/subfolder/file1.txt to s3://mybucket/myfolder/subfolder/file1.txt
...

同步命令可以轻松地将本地文件夹的内容与 S3 存储桶中的副本同步。

$ aws s3 sync myfolder s3://mybucket/myfolder --exclude *.tmp
upload: myfolder/newfile.txt to s3://mybucket/myfolder/newfile.txt
...

文档文件相关命令在这里

答案3

如果您不能(也许您在共享主机上)或者不想安装额外的工具,那么可以只使用 bash、curl 和 openssl。

http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash

file=/path/to/file/to/upload.tar.gz
bucket=your-bucket
resource="/${bucket}/${file}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
s3Key=xxxxxxxxxxxxxxxxxxxx
s3Secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
curl -L -X PUT -T "${file}" \
  -H "Host: ${bucket}.s3.amazonaws.com" \
  -H "Date: ${dateValue}" \
  -H "Content-Type: ${contentType}" \
  -H "Authorization: AWS ${s3Key}:${signature}" \
  https://${bucket}.s3.amazonaws.com/${file}

请注意,我修改了上面链接中的脚本。我添加了该-L选项,因为 AWS 可能会在其中插入重定向。该-L选项将为您遵循重定向。

还有一点需要注意。这不适用于大于 5GB 的文件。这些文件需要分段上传,而这需要更复杂的脚本。

答案4

或者你可以尝试https://github.com/minio/mc

mc提供与 Amazon S3 兼容的云存储和文件系统配合使用的最少工具。它具有可恢复上传、进度条、并行复制等功能。mc使用 Golang 编写并根据 Apache 许可证 v2 发布。

参考用于配置(设置)和命令

相关内容