Централизованные наборы распределения/синхронизации больших файлов через локальную сеть

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

У меня есть много наборов многих файлов (некоторые файлы являются маленькими, но некоторые являются большими, как, ~10-20GB). У меня есть несколько серверов, каждый может разместить один или несколько из тех наборов файлов. Конечно, один сервер может разместить 50% общего количества наборов, и другие 50% могут разместить другое количество наборов.

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

Сервер может обновить свою копию набора в любом моменте времени (или путем замены файлов в наборе с абсолютно новыми файлами, или путем применения патчей к некоторым файлам, которые привели бы к наличию почти тех же файлов только с незначительными различиями).

С другой стороны у меня есть многие клиенты, которые должны смочь получить любой данный набор (или несколько наборов) с серверов, и сохранить их копии наборов актуальными (синхронизировался) с наборами на сервере, каждый раз, когда каждый хочет использовать набор.

Инструменты, которые я рассмотрел, следуют:

  • rsync - Это является большим для синхронизации многих малых и средних файлов, но не столь идеальным при синхронизации больших файлов, как это использует алгоритм, который читает весь файл в обеих сторонах, чтобы определить, должен ли файл быть скопирован или нет. Это хорошо, когда файл должен быть скопирован впервые, или когда файл полностью изменяется, но not-so-okay, когда, скажем, только 1% файла на 10 ГБ изменяется.
  • SVN - Это является большим когда дело доходит до нахождения различий и передачи только те дельты вокруг, но я не так уверен, насколько оптимальный это когда дело доходит до использования диска (весь набор будет дважды хорошо разбираться в обоих клиентах и серверах, должный однажды установить хранится в репозитории?).
  • Поток - Этот мог быть выполнимым, мудрым распределением. Например, создайте поток для каждого набора на сервере, запустите отбор он там, и клиенты, которые получают те наборы также, продолжают отбирать другим клиентам, таким образом распределяя загрузку через каждый компьютер, который содержит копию набора. Однако я не уверен, смогло ли это так или иначе распределить различия, когда-то установить на сервере, изменяется... Это потребовало бы создания нового потока для каждого изменения? Кроме того, я не знаю, как поток вел бы себя в локальной сети, мудрый скоростью (мог это смочь передать файлы между одним сервером и одним клиентом на максимальной, ограниченной сетью скорости. или это добавляет некоторый серьезный протокол наверху? Как насчет перегрузки сети?)
  • Настраиваемое решение. Ну, не очень для добавления здесь, но что это, скорее всего, изобрело бы велосипед, и что некоторое существующее решение, скорее всего, соответствовало бы моим потребностям, если бы я только знал о нем.

Так, вопрос: какой метод распределения/синхронизации (утилиты, подход) подошел бы лучше всего для моей ситуации?

1
задан 22.10.2010, 00:34

1 ответ

Из решений Вы перечислили, SVN смотрит самое многообещающее. Необходимо будет сохранить по крайней мере 1 копию набора в репозитории, таким образом, Вы будете использовать до 2x пространство (или 3x, если у Вас будет 2 рабочих копии).

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

Можно также хотеть изучить Платформу Синхронизации MS, которая используется SyncToy.

1
ответ дан 17.12.2019, 00:32

Теги

Похожие вопросы