Ответ 1
Вы пробовали Unison?
У меня были хорошие результаты. Это в основном более разумный rsync, который, возможно, является тем, что вы хотите. Существует список, сравнивающий инструменты синхронизации файлов здесь.
У меня есть много данных, чтобы синхронизировать более 4 или 5 сайтов по всему миру, примерно на половину терабайта на каждом сайте. Это изменяется (добавляется или изменяется) примерно на 1,4 гигабайта в день, и данные могут меняться на любом из четырех сайтов.
Большой процент (30%) данных - это дублированные пакеты (возможно, упакованные JDK), поэтому решение должно включать способ поднять тот факт, что на локальной машине есть такие вещи, захватить их вместо загрузки с другого сайта.
Контроль версий - это не проблема, это не кодовая база.
Мне просто интересно, есть ли там какие-либо решения (желательно с открытым исходным кодом), которые приближаются к такому веществу?
My baby script с помощью rsync больше не режет горчицу, я бы хотел сделать более сложную интеллектуальную синхронизацию.
Спасибо
Изменить: это должно быть основано на UNIX:)
Вы пробовали Unison?
У меня были хорошие результаты. Это в основном более разумный rsync, который, возможно, является тем, что вы хотите. Существует список, сравнивающий инструменты синхронизации файлов здесь.
Звучит как работа для BitTorrent.
Для каждого нового файла на каждом сайте создайте файл семпла bittorrent и поместите его в централизованный доступный в Интернете каталог.
Каждый сайт затем загружает (через bittorrent) все файлы. Это приведет к совместному использованию полосы частот и автоматическому повторному использованию локальной копии.
Фактический рецепт будет зависеть от ваших потребностей. Например, вы можете создать одно семя bittorrent для каждого файла на каждом хосте и установить время модификации семенного файла таким же, как время модификации самого файла. Поскольку вы будете делать это ежедневно (ежечасно?), Лучше использовать что-то вроде "make" для (повторного) создания файлов семян только для новых или обновленных файлов.
Затем вы копируете все файлы семян со всех хостов в централизованное местоположение ( "tracker dir" ) с опцией "переписывать только если новый". Это дает вам набор семян торрента для всех новейших копий всех файлов.
Затем каждый хост загружает все файлы семян (опять же, с "перезаписывать, если новая настройка" ) и запускает загрузку bittorrent на всех из них. Это загрузит/перезагрузит все новые/обновленные файлы.
Ринс и повторяй, ежедневно.
Кстати, не будет "загрузки от себя", как вы сказали в комментарии. Если файл уже присутствует на локальном хосте, его контрольная сумма будет проверена, и загрузка не будет выполнена.
Как насчет чего-то вроде Red Hat Глобальная файловая система, так что вся структура разбивается на каждый сайт на несколько устройств, а чем все это реплицируется в каждом месте?
Или, возможно, коммерческая сетевая система хранения, такая как LeftHand Networks (отказ от ответственности - я понятия не имею о стоимости и не использовал их).
У вас есть много вариантов:
Посмотрите на супер гибкие... это довольно круто, не использовали его в крупномасштабной среде, но в системе 3 node он работал отлично.
Звучит как работа для Foldershare
Вы пробовали патч detect-renamed
для rsync (http://samba.anu.edu.au/ftp/rsync/dev/patches/detect-renamed.diff)? Я сам не пробовал, но задаюсь вопросом, обнаружит ли он не только переименованные, но и дублированные файлы. Если он не обнаружит дублированные файлы, то, я думаю, можно было бы изменить патч, чтобы сделать это.