Я использую rsync для передачи файлов журнала приложений с одного сервера на другой. Он работает нормально, за исключением того, что сканирование каталогов занимает вечность. У меня около 160 000 файлов журналов и несколько тысяч каталогов, поэтому я могу понять, почему сканирование занимает так много времени. Однако только некоторые из этих файлов изменяются при любой данной синхронизации, поэтому мне интересно, есть ли более эффективный способ или опция rsync, которые могут ускорить это? Сами файлы журналов крошечные (всего несколько килобайт каждый).
Спасибо!
Начиная с rsync 3.0.0, рекурсивный алгоритм теперь представляет собой инкрементное сканирование, которое использует гораздо меньше памяти, чем раньше, и начинает передачу после того, как сканирование первых нескольких каталогов было завершено. Это инкрементное сканирование влияет только на наш алгоритм рекурсии и не меняет нерекурсивную передачу. Это также возможно только тогда, когда оба конца передачи имеют версию не ниже 3.0.0.
Некоторые параметры требуют, чтобы rsync знал полный список файлов, поэтому эти параметры отключают режим инкрементной рекурсии. Это включает:
--delete-before
,--delete-after
,--prune-empty-dirs
, и--delay-updates
. Из-за этого режим удаления по умолчанию при указании --delete теперь--delete-during
когда оба конца соединения не ниже 3.0.0 (используйте--del
или--delete-during
чтобы явно запросить этот улучшенный режим удаления). См. Также--delete-delay
вариант, который лучше, чем использование--delete-after
.
Если вы используете какие-либо из упомянутых опций или более старые версии rsync, возможно, вы отключили улучшенный режим инкрементной рекурсии. В противном случае единственный другой вариант - предоставить rsync меньше файлов для рассмотрения.