1

Рассмотрим следующую схему каталогов:

/foo
  /ABZE1
     a1.txt
     a2.txt
     ...
     a59682.txt
  /BBSDF
     b1.txt
     b2.txt
     ....
     b42333.txt
  ...

foo является родительской папкой, каждая из ее подкаталогов (ABZE1 , BBSDF , ...) фактически является неизменной в том смысле , что она имеет уникальное имя, что подразумевает ее версию. Это означает, что после создания такого подкаталога он никогда не изменяется. Кроме того, в каждом из этих подкаталогов много файлов (иногда> 100 КБ).

Мне нужно выполнить двухстороннюю синхронизацию foo с foo-remote (монтирование NFS на той же машине).

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

Можем ли мы сказать rsync рассматривать папку как объект для сравнения (а не файлы внутри подпапки)? Есть ли другой инструмент, который может достичь этой синхронизации?

1 ответ1

1

Насколько я знаю, то, что вы просите rsync невозможно. Тем не менее, следующая команда

diff <(ls) <(ssh me@remote "cd /path/to/remote/backup/directory && ls") 

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

Если вы хотите, вы можете сделать это пропустить файлы (следовательно, работать быстрее, по-видимому), изменив его на:

diff <(find . -type d)  <(ssh me@remote "cd /path/to/remote/backup/directory && find . -type d") 

Команда выше только запрашивает каталоги.

Теперь вы можете разобрать его с помощью:

 ...(command above)... | grep "<" | awk '{print $2}'

который будет выдавать только имена каталогов, которые существуют на первом компьютере, но не на втором (потому что я использовал grep "<" вместо grep ">").

Теперь rsync должно быть тривиальным, только каталоги, обнаруженные таким образом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .