Apache Ant, резервное копирование и длинные пути файлов в Zend Framework
Очень часто перед очередным развертыванием веб-приложения встает задача по резервному копированию старой версии (на случай падения), чтобы если что, можно было бы откатиться до неё. Если для развертывания вы используете Apache Ant, то можно создать для него цель (target) и для резервирования данных.
В примерах чаще всего предлагают следующий код:
<target name=”prepare”>
<tstamp>
<format property=”timestamp” pattern=”dd-MM-yyy-HH-mm”/>
</tstamp>
</target>
<target name=”backup” depends=”prepare”>
<tar destfile=”/opt/teamcity/backups/${timestamp}.tar.gz” compression=”gzip”>
<tarfileset dir=”/opt/teamcity/projects/myproject”>
</tarfileset>
</tar>
</target>
Однако, если вы попробуете сделать бекап проекта на ZendFramework таким образом, вы словите много ошибок, типа вот этих:
[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Request/ConferenceCall/AddConferenceTemplateParticipantRequest.php longer than 100 characters.[20:47:02]: [tar] Resulting tar file can only be processed successfully by GNU compatible tar commands[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Request/ConferenceCall/GetConferenceTemplateParticipantRequest.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Request/ConferenceCall/RemoveConferenceTemplateParticipantRequest.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Request/ConferenceCall/UpdateConferenceTemplateParticipantRequest.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/AddConferenceTemplateParticipantResponse.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/AddConferenceTemplateParticipantResponseType.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/CreateConferenceTemplateResponseType.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateListResponseType.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateParticipantResponse.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateParticipantResponseType.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/RemoveConferenceTemplateParticipantResponse.php longer than 100 characters.[20:47:02]: [tar] Entry: vendors/Zend/Service/DeveloperGarden/Response/ConferenceCall/UpdateConferenceTemplateParticipantResponse.php longer than 100 characters.
<target name=”prepare”>
<tstamp>
<format property=”timestamp” pattern=”dd-MM-yyy-HH-mm”/>
</tstamp>
</target><target name=”backup” depends=”prepare”>
<zip destfile=”/opt/teamcity/backups/${timestamp}.zip” update=”true”>
<zipfileset dir=”/opt/teamcity/projects/myproject”>
</zipfileset>
</zip>
</target>