У нас есть два сервера Unix, расположенных в двух странах. На этих серверах хранится наш репозиторий программного обеспечения (скрипты, двоичные файлы, документы и т. Д.). Я ищу простой способ поддерживать эти серверы в идеальной синхронизации с помощью сценария. rsync
и nfs
не подходят.
Я хотел бы записать список server1
и server2
(вместе с файлами + папками), а затем сравнить их с помощью сценария, чтобы затем решить, какие файлы копировать.
Если есть третья машина, выступающая в роли посредника, вы можете написать сценарий, в котором вытаскиваете файлы (используя SCP или что-то в этом роде) и вытаскиваете метаданные (удаленно вызывая команду "stat") и принимаете решение, а затем нажимаете, какая из версий более "права" на "проигрышную" машину. Не красиво, но это сделает работу.
Алгоритм rsync
можно выполнить вручную. Библиотека librsync включает в себя инструмент rdiff
CLI (документация), который просто обертывает функции librsync
, чтобы сделать их пригодными для использования вручную.
Эффективно передать файл из A в B можно следующим образом:
В машине B создайте файл "подписи", который описывает то, что уже есть
В машине A используйте файл подписи и оригинальный источник, чтобы создать "патч" файл, содержащий инструкции и данные для преобразования файла в B, чтобы закончить с файлом в C.
Вернитесь в машину B, примените патч, и он преобразует файл, используемый в качестве ссылки, в 'оригинальный' файл, сканируемый на машине A.