Как избежать рекурсивного обхода каталога для синхронизации двух каталогов?

Я вижу много бесполезного рекурсивного обхода каталога в:

  • Rsync
  • унисон
  • OwnCloud

Все вышеприведенное приложение (и многие другие) повторяют рекурсивный обход каталога. Поскольку приложение не знает, изменился ли файл (глубоко внутри структуры каталогов).

Inotify существует, но AFAIK не масштабируется до нескольких тысяч каталогов.

Наверное, решения нет. Но, может быть, я что-то упустил.

Например, возьмите этот файл:

a/b/c/d.txt 

И два сервера A и B.

Если у вас есть миллион (или более) файлов и каталогов, все вышеприведенные приложения должны проверить, изменилось ли время m файла.

Разве нет более быстрого пути?

Если бы mtime-изменение файла исказилось до родительских каталогов, было бы достаточно проверить mtime верхних каталогов на обоих серверах. Таким образом, приложение может пропустить бесполезный поиск изменений.

Вопрос: Как избежать рекурсивного обхода каталога для синхронизации двух каталогов?

Пожалуйста, оставляйте комментарии, если у вас есть вопросы или вам нужна дополнительная информация. Спасибо.

One Solution collect form web for “Как избежать рекурсивного обхода каталога для синхронизации двух каталогов?”

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

Inotify существует, но AFAIK не масштабируется до нескольких тысяч каталогов.

Не только это, но вы должны постоянно слушать (скажем, как демон), и если вы пропустите одно обновление, вам придется перепроверить все.

Разве нет более быстрого пути?

Нет извините.

Если у вас есть отличная идея, пожалуйста, опубликуйте ее (но сайт Q & A не является местом)!

  • Я не могу получить rsync -exclude-from для работы с файлом
  • Получение сбоев rsync в случайном порядке
  • rsync непостоянно не работает с жесткой связью
  • Копирование быстрее, чем cp?
  • Rsync через Rsync через cronjob
  • Различия между rsync на удаленном и rsync локальном на смонтированных sshfs?
  • scp без замены существующих файлов в месте назначения
  • rsync приводит к почти всем поврежденным файлам
  • rsync --del или --delete
  • Сравнение исходной и резервной папки, а затем удаление несуществующих файлов
  • rsync --link-dest не работает, как ожидалось, с символическими ссылками
  • Interesting Posts

    Как получить различные типы ICMP

    Удалить значения дубликатов в поле

    Как найти, какой последовательный порт используется?

    / root / bin / ffmpeg: ошибка при загрузке разделяемых библиотек: libtheoraenc.so.1: невозможно открыть файл общих объектов: нет такого файла или каталога

    Предоставляет ли флаг O_DIRECT обход кеша страницы Linux при доступе к блочным устройствам?

    Почему systemd-nspawn не подходит для производственных развертываний?

    Построить Хром из источника

    Автозагрузка Debian VirtualBox завершилась неудачно при запуске, но работает после входа в систему: установка завершилась с ошибкой: нет такого устройства

    zsh !! и! $ auto выполняется так же, как и в bash

    создание двоичного файла sysupgrade из существующей установки

    Как переименовать все файлы со специальными символами и пробелами в каталоге?

    Ubuntu Trusty Preseed Error

    Awk / grep / sed получает разделенный запятыми список чисел из строк текста

    Неудовлетворенные зависимости при установке Git на Debian

    Выполнить команду внутри другой команды

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