【发布时间】:2018-02-12 08:02:02
【问题描述】:
在使用 aws cli cp 命令递归复制文件时,有一个错误会创建一些未定义的文件。
aws s3 cp --recursive $HOME/$MYHOST-$MYTIMESTAMP/$MYHOST-$MYTIMESTAMP-*.xml s3://mybucket/$MYHOST-$MYTIMESTAMP/
程序运行良好并上传到指定的存储桶。但它也会在根文件夹的存储桶之外创建一些未定义的文件。这种情况一直在发生,我必须 rm (删除)那些烦人的未定义文件。
我认为这是一个错误,然后尝试单独上传文件而不是使用通配符,结果与递归相同,它仍然在根文件夹中的存储桶之外再次创建额外的未定义文件。只有当我在 bash 脚本中运行一堆相同的 cp 命令时才会发生这种情况。在这种情况下,问题会间歇性地出现。
aws s3 cp $HOME/$MYHOST-$MYTIMESTAMP/$MYHOST-$MYTIMESTAMP-hello.xml s3://mybucket/$MYHOST-$MYTIMESTAMP/
但是,仅对单个文件执行此操作时,它不会显示。 我的 Cli 版本 -
aws-cli/1.14.34 Python/2.7.14+ Linux/4.4.104-39-default botocore/1.8.38
【问题讨论】:
-
$MYTIMESTAMP 解析为什么?它会从命令更改为命令吗?它可以为空,还是 $MYHOST-$MYTIMESTAMP 无法解析为有效的文件名?
-
我已经将这些变量自定义设置为时间和主机——结果都很好。这些文件也正在上传到 s3 上的相关文件夹。谢谢提问
-
为您的问题添加了屏幕截图。
-
当你说to time时,你能详细说明一下吗?它看起来像时间戳,至少在未定义的文件上,从运行到运行的变化。如果使用实际值怎么办?也就是说,如果你运行
aws s3 cp --recursive /home/magnus/server1-2018-02-12T01:03:16-*.xml s3://mybucket/server1-2018-02-12T01:03:16/,它会起作用吗? -
是的,它是时间戳的修改版本,如上图所示,我使用过 - 以保持文件和文件夹的唯一性。命名有限制,不能使用冒号和其他几个字符。请注意,我在 uniq 文件夹中上传文件。不在根目录中(那些未定义的文件是 aws 滋扰的副产品)
标签: amazon-web-services amazon-s3