inotify и rsync для большого количества файлов

Я использую inotify для просмотра каталога и синхронизации файлов между серверами с помощью rsync. Синхронизация работает отлично, а использование памяти в основном не является проблемой. Однако недавно было добавлено большое количество файлов (350 тыс.), Что сказалось на производительности, особенно на процессоре. Теперь, когда rsync запускается, загрузка процессора достигает 90% / 100%, а rsync занимает много времени, есть файлы 650k, которые просматриваются / синхронизируются.

Есть ли способ ускорить rsync и только rsync каталог, который был изменен? Или, альтернативно, настроить несколько inotifywaits в отдельных каталогах. Используемый сценарий ниже.

UPDATE: я добавил флаг –update, и использование кажется, в основном, неизменным

#! /bin/bash EVENTS="CREATE,DELETE,MODIFY,MOVED_FROM,MOVED_TO" inotifywait -e "$EVENTS" -m -r --format '%:e %f' /var/www/ --exclude '/var/www/.*cache.*' | ( WAITING=""; while true; do LINE=""; read -t 1 LINE; if test -z "$LINE"; then if test ! -z "$WAITING"; then echo "CHANGE"; WAITING=""; rsync --update -alvzr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/ fi; else WAITING=1; fi; done) 

2 Solutions collect form web for “inotify и rsync для большого количества файлов”

Если сервер имеет медленный процессор, избегайте контрольных сумм и сжатия с помощью rsync. Я бы удалил параметр ht "-z" в команде rsync.

 rsync --update -alvr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/ 

Обратите внимание, что это не позволит избежать rsync для сравнения файлов 650k. Вы можете rsync подкаталоги / var / www поочередно, чтобы уменьшить количество файлов, проверенных за один раз.

Спасибо, что опубликовали свой ответ – это действительно помогло мне. Я думаю, вы можете упростить цикл:

 EVENTS="CREATE,DELETE,MODIFY,MOVED_FROM,MOVED_TO" sync() { rsync --update -alvzr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/ } watch() { inotifywait -e "$EVENTS" -m -r --format '%:e %f' /var/www/ --exclude '/var/www/.*cache.*' } watch | ( while true ; do read -t 1 LINE && sync done ) 

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

  • Причины для rsync НЕ переносить все файлы?
  • Использовать sudo для упрощения rsync?
  • Как передать аргумент с char (в удаленном пути?
  • Rsync зависает во время передачи файла на USB-диск
  • rsync и резервное копирование и изменение часового пояса
  • Делать ссылки в резервной копии?
  • Помогите с использованием rsync или cpio для создания инкрементной резервной копии
  • Как смонтировать зашифрованную папку через SSH в NAS Synology?
  • перемещение Linux на другое устройство
  • Команда Linux для копирования как жесткие ссылки при удалении нежелательных файлов?
  • rsync: не удалось установить разрешения на «/path/to/file.txt»: операция не разрешена (1)
  • Interesting Posts

    Как изменить раскладку клавиатуры с помощью игрового контроллера

    Как увеличить нет. потоков nfsd в WD моем облаке (nfs server)? для лучшей производительности

    Заменить или изменить содержимое файла одним выстрелом

    OpenBSD pf: отключить доступ к сети для данного пользователя, кроме ssh.

    Найдите файл в папке1 и выполните сценарий, если этот файл не находится в папке2

    Crontab не срабатывает

    Crontab не может связаться с несколькими Mac?

    Почему Linux Firewall GUI Gufw не в поиске оконного ключа Debian?

    Поддержка 802.11ac USB-ключа в Linux

    Не удалось отключить / home во время отключения arch linux

    Ошибка жесткого диска при загрузке

    Один вкладыш для заполнения колонок (аналогично printf) вывода из предыдущей команды трубы?

    Как запустить демон keyring после сбоя gnome-shell?

    Как вы получаете первый файл в каждом подкаталоге, соответствующем списку расширений файлов?

    Объедините в PDF первую страницу нескольких файлов odt в алфавитном порядке

    Linux и Unix - лучшая ОС в мире.