Назад | Перейти на главную страницу

несогласованное поведение файлов, созданных командой archive / ssh / tar

Работая над сценарием развертывания, я столкнулся с проблемами, которые не могу объяснить. У нас есть производственный сервер (Ubuntu server 10.04), репозиторий (Gitlab) и сервер разработки (Ubuntu 14.04). Я работаю на сервере разработки и оттуда запускаю сценарий развертывания, который после удаления всего остального делает только следующее:

git архив --format = tgz $ MASTER | ssh $ HOST "mkdir $ NEW && tar xzf - -C $ NEW || echo Не удалось создать папку"

Папка создается правильно. Файлы кажутся правильными. Но Apache выдает различные ошибки, обычно относящиеся к необъявленным классам или переменным, но разные при каждой попытке. Перемещение новой папки в сторону и перемещение старой папки на место работает нормально. Перемещение старой папки в сторону и перемещение новой папки на место приводит к прерыванию. Между двумя папками нет заметной разницы.

Тогда все становится интересно: - Если я использую новую папку, она ломается. Если я перемещаю различные подпапки из старой папки в новую, в конечном итоге все работает. Но одной папки недостаточно, и то, какие папки помогают, не согласовано. Вроде какая-то «критическая масса» - когда старых файлов достаточно, все работает. Запуск ls -la показывает те же файлы с одинаковыми размерами / владениями / разрешениями. Запуск команды diff -r не показывает разницы между папками / файлами. - Если я использую старую папку, она работает. Если я затем переместу некоторые подпапки / файлы из новой папки в старую, она в конечном итоге сломается. Поведение аналогично предыдущему пункту. - Если я уберу и старую, и новую и использую cp -a для создания точной копии папки, все будет нормально. (РЕДАКТИРОВАТЬ: Не всегда. Я только что сделал тест, оригинал не удался, копия не удалась по-другому, копия сработала.)

Так что файлы идентичны, но как-то плохие. Если вы также видели случаи, когда использование vi для сохранения файла изменяло поведение, то есть, казалось бы, «очищало» файл. Я не понимаю, что может быть не так с файлами, но невидимо для глаза - и прекрасно работает со всем программным обеспечением, кроме Apache / PHP.

Что может быть не так с файлами, которые может забрать только Apache? Какие команды могли их выявить?