s3cmd sync是将错误文件远程复制到错误的位置

Win*_*ute 9 bash amazon-s3 s3cmd

我将以下内容作为shell脚本的一部分,将站点文件复制到S3 CDN:

for i in "${S3_ASSET_FOLDERS[@]}"; do
    s3cmd sync -c /path/to/.s3cfg --recursive --acl-public --no-check-md5 --guess-mime-type --verbose --exclude-from=sync_ignore.txt /path/to/local/${i} s3://my.cdn/path/to/remote/${i}
done
Run Code Online (Sandbox Code Playgroud)

说S3_ASSET_FOLDERS是:

("一二/")

并说这两个文件夹都包含一个名为..."script.js"的文件

并说我已经对两个/ script.js进行了更改- 但没有触及一个/ script.js

运行上面的命令将首先将文件从/ one /复制到正确的位置,虽然我不知道为什么它认为它需要:

信息:发送文件'/path/to/local/one/script.js',请稍候...文件'/path/to/local/one/script.js'存储为's3://my.cdn/ path/to/remote/one/script.js'(在0.1秒内为13551字节,168.22 kB/s)[1 of 0]

...然后是第二个文件夹的远程复制操作:

remote copy:two/script.js - > script.js

它在做什么?为什么??那些文件甚至都不相似.不同的修改时间,不同的校验和.没关系.

我最终得到一个带有两个不正确文件的s3存储桶./ two /中应该更新的文件没有.并且/ one /中不应该更改的文件现在被/two/script.js的内容覆盖

很明显,我做了一些奇怪的事,因为我没有看到其他人有同样的问题.但我不知道是什么?

use*_*686 3

首先,尝试在没有--no-check-md5选项的情况下运行它。
\n其次,我建议您注意目录名称,特别是尾部斜杠。
\n s3cmd 文档说:

\n\n
\n

对于目录,需要注意 \xe2\x80\x93 的一件事,您可以上传目录及其内容或仅上传内容。这完全取决于您如何指定源。\n 要上传目录并在远程端保留其名称,请指定不带尾部斜杠的源\n 另一方面,若仅上传内容,请指定带有尾部斜杠的目录削减

\n
\n