Есть ли инструмент, который создает различие файловой структуры, возможно, на основе манифеста MD5. Моя цель - отправить по сети пакет, содержащий новые / обновленные файлы и список файлов, которые нужно удалить. Ему нужно скопировать новые / обновленные файлы и удалить файлы, которые были удалены из исходной файловой структуры?





Вы можете попробовать rsync. В зависимости от ваших потребностей команда может быть такой простой:
rsync -az --del /path/to/master dup-site:/path/to/duplicate
Цитата из веб-сайт rsync:
rsync is an open source utility that provides fast incremental file transfer. rsync is freely available under the GNU General Public License and is currently being maintained by Wayne Davison.
Или, если вы предпочитаете википедия:
rsync is a software application for Unix systems which synchronizes files and directories from one location to another while minimizing data transfer using delta encoding when appropriate. An important feature of rsync not found in most similar programs/protocols is that the mirroring takes place with only one transmission in each direction. rsync can copy or display directory contents and copy files, optionally using compression and recursion.
@vfilby Я пытаюсь реализовать нечто подобное.
Некоторое время я использую rsync, но при развертывании на удаленном сервере с изменениями разрешений, которые мне неподконтрольны, становится неприятно. С помощью rsync вы можете не включать разрешения, но они все равно по какой-то причине рассматриваются.
Сейчас я использую git diff. Это очень хорошо работает для текстовых файлов. Diff генерирует патчи, а не МАНИФЕСТ, который вы должны включать в свои файлы. Что хорошо в патчах, так это то, что уже существует устоявшаяся структура для использования и тестирования этих патчей, прежде чем они будут применены.
Например, с помощью утилиты исправления, которая входит в стандартную комплектацию любого устройства * unix, вы можете запустить исправление в режиме пробного запуска. Это скажет вам, действительно ли патч, который вы собираетесь применить, будет применяться, прежде чем вы его запустите. Это поможет вам убедиться, что файлы, которые вы обновляете, не изменились во время подготовки патча.
Если это похоже на то, что вы ищете, я могу подробнее рассказать о своем процессе.
В этот момент я надеялся на что-нибудь оффлайн. Я работаю над онлайн-различиями.