【问题标题】:Parallel uploads to the same s3 bucket directory with s3cmd使用 s3cmd 并行上传到同一个 s3 存储桶目录
【发布时间】:2018-03-20 15:43:03
【问题描述】:

我尝试运行以下代码,但结果 index.js 已损坏。

知道为什么吗?

gzip dist/production/index.js
mv dist/production/index.js.gz dist/production/index.js

s3cmd --access_key="$S3_ACCESS_KEY" --secret_key="$S3_SECRET_KEY" \
      --acl-public --no-mime-magic --progress --recursive         \
      --exclude "dist/production/index.js" \
      put dist/production/ 
      "s3://${BUCKET}/something/${BUILD_IDENTIFIER}/production/" &

s3cmd --access_key="$S3_ACCESS_KEY" --secret_key="$S3_SECRET_KEY" \
      --acl-public --no-mime-magic --progress --recursive         \
      --add-header="Content-Encoding:gzip" \
      put dist/production/index.js 
      "s3://${BUCKET}/something/${BUILD_IDENTIFIER}/production/" &

wait

请注意两个命令末尾的&,它可以将两个并行上传到同一位置。

编辑:

它可以很好地工作,而不会使进程并行化并使它们在后台运行。我想让这个过程更快,所以我在上传其他文件的同时上传了沉重的 gzip 压缩 index.js

编辑2:

我在上传的 index.js 中得到的是这样的乱码:

��;mS�H���W �7�i"���k��8̪

编辑3:

看起来问题在于我如何使用排除。它相对于上传的文件夹而不是工作目录排除。

--exclude "dist/production/index.js" ==> --exclude index.js

修复它。

【问题讨论】:

  • 如果你不把这两个调用放在后台,这会做你想要的吗?
  • 是的。它工作正常。我试图让它更快但并行化它们。用这个信息编辑了我的问题。
  • 我不使用 s3cmd,但似乎人们努力并行运行它的一个原因是因为它很慢。解决方案通常很简单,不使用 s3cmd,而是使用 awscli 或 s3-cli。也相关:stackoverflow.com/questions/26934506/…
  • 如果您使用扩展名.js 命名压缩文件,您会招来麻烦 - 请不要这样做。
  • @VitalikZaidman 看起来--exclude "dist/production/index.js" 并没有达到你的预期。以相反的顺序执行这两个命令,而不是并行执行,您应该会发现相同的“损坏”行为。也许正确的论点是--exclude index.js,因为上传植根于./dist/production/

标签: bash amazon-web-services amazon-s3 parallel-processing


【解决方案1】:

是不是你的问题出在线路上?

cp dist/production/index.js.gz dist/production/index.js

您正在复制 gzip 文件,而不是普通的 index.js 文本文件。

希望对您有所帮助。

EDIT1:

如果您是故意这样做的,为什么不维护 gz 扩展。当您使用浏览器处理时,扩展程序会做很多事情。

cp dist/production/index.js.gz dist/production/index.js.gz

如果您使用普通 s3 下载并验证哈希,它们应该是同一个文件。我确实验证过了。

【讨论】:

  • 没关系。我故意将它作为 gzip 上传。当两个进程不并行运行时,它可以工作。
猜你喜欢
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 2018-06-02
相关资源
最近更新 更多