我将以下内容作为 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
说 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]
...然后对第二个文件夹进行远程复制操作:
远程复制:两个/script.js -> script.js
它在做什么?为什么??这些文件甚至都不相似。不同的修改时间,不同的校验和。没有关系。
我最终得到了一个 s3 存储桶,其中包含两个不正确的文件。 /two/ 中应该更新的文件没有。并且 /one/ 中不应该更改的文件现在被 /two/script.js 的内容覆盖
显然我正在做一些非常愚蠢的事情,因为我没有看到其他人有同样的问题。但是我不知道是什么??