1

Допустим, у меня есть сервер, который предоставляет критически важные сервисы, эти сервисы зависят от данных, которые синхронизируются с другого сервера. Вопрос в том, когда я могу обеспечить избыточность данных на сервере, если для синхронизации данных я буду использовать RSYNC?

Предоставляет ли RSYNC способы проверки после завершения синхронизации без какого-либо повреждения данных (по какой-либо причине)?

Есть ли надежный способ возобновить синхронизацию файла (с момента, когда он был прерван) в случае пропущенной строки или аналогичного? Возможно, есть лучшая альтернатива RSYNC, которую следует использовать в сценариях, где избыточность данных имеет решающее значение?

1 ответ1

1

Ваш вопрос несколько смущает меня. Если под "избыточностью" вы подразумеваете "целостность" --ie ", если я что-то пересылаю на свой сервер, могу ли я быть уверен, что он по битам идентичен исходному материалу?«Ответ: вероятно, но проверка целостности является такой же хорошей, как и методы контрольного суммирования / сравнения, используемые Rsync. Для получения дополнительной информации о них, я бы направил вас на страницу руководства для Rsync (проверьте параметры -c и -B ) и на страницу вики для Rsync, где обсуждаются алгоритмы сравнения, используемые Rsync.

Что касается прерванных Rsyncs: в дополнение к проверке кода возврата Rsync, чтобы определить, правильно ли он завершился (список кодов выхода Rsync, можно найти здесь), повторный запуск Rsync - лучший способ проверить, завершился ли он без повреждения или прерывания. время. Rsync будет сравнивать и пропускать любые файлы, которые он уже успешно скопировал, и будет копировать все новое или отличное от исходного (это выполняет то же самое, что и "возобновление" прерванной передачи). Если исходный материал изменяется так быстро, что вы не можете гарантировать согласованность между двумя прогонами, Rsync, возможно, не лучший инструмент для обеспечения синхронизации.

Если под "избыточностью" вы действительно подразумеваете "избыточность": то есть «я хочу перезаписать на целевом сервере только в том случае, если я уверен, что у меня есть неповрежденная копия данных для использования, даже если моя передача прекращается», тогда Решение было бы сделать несколько Rsyncs, как это:

  1. Повторно синхронизируйте старую копию данных из локального расположения 1 в локальное расположение 2 - как на том же сервере, так и во внутренних сетевых расположениях, которые имеют низкий риск сбоя соединения.
  2. Снова выполните шаг 1 и проверьте наличие ошибок. Это подтверждает, что у вас есть две копии существующего набора данных, которые идентичны.
  3. Повторно синхронизируйте удаленную (новую) копию данных до местоположения 1.
  4. Снова выполните шаг 3, чтобы убедиться, что в местоположении 1 содержится неповрежденная копия новых данных.

Если шаги 4 или 5 прерваны, вы можете a) попытаться снова выполнить Rsync из удаленного источника или b) просто изменить направление Rsync на шаге 1 и запустить его снова, заменив (предположительно поврежденную) копию удаленных данных. с самой последней "известной исправной" копией из резервной копии на локальном компьютере. Это будет гарантировать, что у вас есть "избыточность", так как вы никогда не рискуете получить только поврежденную копию ваших данных без возврата к целому набору данных.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .