Для синхронізації величезних файлів або блокових пристроїв з низькими та помірними різницями ви можете зробити звичайну копію або використовувати bdsync , rsync абсолютно не підходить для цього конкретного випадку *.
bdsync
працював для мене, здається досить зрілим, історія помилок підбадьорює (мало питань, швидке вирішення). У моїх тестах ця швидкість була близькою до теоретичного максимуму, який ви могли отримати ** (тобто ви можете синхронізувати приблизно час, який вам потрібно прочитати файл). Нарешті, це відкритий код і нічого не коштує.
bdsync
читає файли з обох хостів та обміняє контрольні суми, щоб порівняти їх та виявити відмінності. Все це одночасно . Нарешті створюється стислий патч-файл на вихідному хості. Потім ви переміщаєте цей файл до цільового хосту і запускаєте bdsync вдруге, щоб виправити файл призначення.
Використовуючи його через досить швидке посилання (наприклад, 100 Мбіт Ethernet) і для файлів з невеликими різницями (як це найчастіше відбувається на дисках VM), це скорочує час синхронізації до часу, який потрібно прочитати файл. За повільним посиланням вам потрібно трохи більше часу, оскільки вам доведеться скопіювати стислі зміни з одного хоста на інший (схоже, ви можете заощадити час, використовуючи приємний трюк, але не пройшли тестування).
*: rsync дуже неефективний з величезними файлами. Навіть з --inplace, він спочатку прочитає весь файл на хості призначення, AFTERWARDS починає читати файл на вихідному хості та, нарешті, переносить відмінності (просто запустіть dstat або подібне під час роботи rsync та спостерігайте). Результат полягає в тому, що навіть для файлів з невеликими різницями для читання файлу потрібно подвоїти час, який вам потрібно прочитати, щоб синхронізувати його.
**: За припущенням, що у вас немає іншого способу сказати, які частини файлів змінилися. Знімки LVM використовують растрові карти для запису змінених блоків, щоб вони були надзвичайно швидкими (у readme lvmsync є більше інформації).