Если у вас нет старых и новых версий файлов на одном компьютере, тогда rsync-подобные алгоритмы - это путь вперед (см. Предыдущие ответы). Если у вас есть и старая, и новая версии файлов на одном компьютере, вы можете сделать это лучше, чем rsync: создавать сжатые файлы различий и отправлять их по сети.
Для создания эффективных различий взгляните на двоичное дельта-сжатие VCDIFF (RFC 3284). Хорошей реализацией является xdelta (www.xdelta.org). Реализовать декодер / декомпрессор довольно легко, если вы хотите избежать использования xdelta на принимающей стороне из-за проблем с лицензией. Написание собственного генератора различий VCDIFF, который будет генерировать компактные разности, намного сложнее (например, поиск перемещенных блоков).
В VCDIFF различия также могут быть без исходного кода, то есть они распаковываются в целевой файл без исходного файла (файла, к которому применяется diff) - в VCDIFF сжатие файла - это особый случай создания сжатого файла. дельта между двумя файлами. Это полезно, потому что вы можете использовать один и тот же формат независимо от того, имеет ли место назначения версию вашего файла.