У меня есть следующее как часть сценария оболочки для копирования файлов сайта в CDN S3:
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» (13551 байт за 0,1 секунды, 168,22 КБ/с) [1 из 0]
... а затем операция удаленного копирования для второй папки:
удаленная копия: два/script.js -> script.js
Что он делает? Почему?? Эти файлы даже не похожи. Разное время модификации, разные контрольные суммы. Нет связи.
И я получаю ведро s3 с двумя неправильными файлами. Файл в /two/, который должен был быть обновлен, не обновился. И файл в /one/, который не должен был изменяться, теперь перезаписывается содержимым /two/script.js.
Очевидно, я делаю что-то причудливо глупое, потому что я не вижу никого, у кого была бы такая же проблема. Но я понятия не имею, что??