rsync
эффективно обрабатывает относительно небольшие изменения и частичные загрузки в файл.В этом направлении были предприняты значительные усилия в алгоритме rsync .
Проблема заключается в том, что WAR-файлы представляют собой «расширенные» JAR-файлы, которые по сути являются архивами ZIP и, следовательно, сжаты.
Небольшое изменение в несжатом файле изменит весь сжатый сегмент, к которому принадлежит этот файл, и, что наиболее важно, также может значительно изменить его размер.Это может преодолеть способность rsync
обнаруживать и обрабатывать изменения в конечном сжатом файле.
В архивах ZIP каждый несжатый файл имеет свой собственный сжатый сегмент.Поэтому порядок , в котором файлы помещаются в архив, также важен для достижения степени сходства с предыдущей версией.В зависимости от того, как создается файл WAR, простое добавление нового файла или его переименование может привести к перемещению сегментов, что по существу делает файл WAR неузнаваемым.Другими словами:
Небольшое изменение в вашем приложении обычно означает довольно большое изменение в вашем файле WAR.
rsync
не предназначено для обработки изменений в сжатом видефайлы.Тем не менее, он может обрабатывать изменения в вашем приложении.Одним из решений было бы использовать его для загрузки файлов вашего приложения, а затем создать файл WAR на удаленном хосте.
Несколько иной подход - не требующий инструментов разработки на удаленном хосте - состоял бы в распаковке(например, распакуйте) файл WAR локально, загрузите его содержимое, а затем снова упакуйте (т.е. заархивируйте) его на удаленном хосте.Это решение требует только реализации zip
или jar
на удаленном хосте.