Назад | Перейти на главную страницу

Способ ускорить rsync в двухфазном процессе

Вот что я делаю:

rsync everything
enter maintenance
rsync changes since first rsync
leave maintenance

Первый rsync синхронизирует изменения мэра без блокировки системы. Он может работать долго, и это нормально.

Но второй rsync должен завершиться как можно быстрее и обычно не находит изменений или обнаруживает только несколько изменений. Но поскольку файлов очень много, это занимает довольно много времени.

Есть ли уловка, которую я могу использовать, потому что знаю, что синхронизировал ее только что?

Вот используемые мной флаги rsync:

rsync --partial --progress --delete --archive --verbose --compress --links --times

Несколько советов:

  • при синхронизации большого количества файлов процесс сопоставления uid-to-username может занять значительное время; Итак, попробуйте добавить --numeric-ids вариант для вашего rsync призыв
  • с обеих сторон, запланируйте find <path> > /dev/null за некоторое время до обслуживания rsync; это предварительно загрузит кеши метаданных на обоих узлах, что значительно ускорит rsync казнь

Ускорение rsync по ssh

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

Взгляни на Rsync через SFTP с использованием клиента LFTP и его зеркальной подсистемы

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

Я использую это в нескольких системах, которые ежечасно реплицируют резервные копии базы данных и журналы в удаленные места назначения. Это очень быстро. Единственными ограничениями будут пропускная способность и максимальное количество подключений, разрешенных для одновременной авторизации на удаленном конце, максимальное количество файлов, которые могут быть открыты одновременно.

Этот метод также может быть более безопасным, чем rsync + ssh, поскольку поддерживается Chroot SFTP. При желании клиенту не нужно предоставлять оболочку.

Я предпочитаю добавить второй шаг rsync bre перед тем, как ставить систему на обслуживание. Если первый шаг занимает много времени, второй может занять несколько минут / часов, прежде чем поставить систему на обслуживание. Тогда последний занимает секунды / минуты, а не часы.