[rsync]обнаруживать перемещения и переименования

dangerr

Обычно синхронизируюсь командой
rsync -e ssh -aczl --delete --force $$rhost:$rdir $ldir
Всё прекрасно работает. Однако, недавно переименовал на источнике поддиректорию с парой гигов данных и обнаружил, что вместо того, чтобы также переименовать на приёмнике, rsync удалил и заново скачал эти несколько гигов. Он же синхронизирует согласно контрольной сумме файла, тогда в чём проблема найти файл с такой же контрольной суммой на приёмнике и просто перенести его в нужное место?
man и google уже обрыл, ничего не нашёл. Неужели никак нельзя такое автоматизировать?

tokuchu

Он же синхронизирует согласно контрольной сумме файла
Ну это он проверяет качать-не качать. Ну и при скачивании проверяет какие участки есть. А отслеживать перемещения вроде не умеет, да.

dangerr

Как же тогда быть? Расход траффика немаловажен. rsync вроде как для экономии трафика и сделан. Иначе какой от него прок по сравнению с rm -fr && scp -r ?

serega1604

rsync, насколько я помню, умеет обрабатывать хардлинки.
поэтому надо использовать следующую тактику:
1) копируем структуру каталогов, на файлы делаем хардлинки. (самое простое - cp -al)
2) прогоняем rsync
3) удаляем старый каталог
4) PROFIT
естественно она не сработает, если надо перенести директорию с одного раздела на другой.

dangerr

Вот воистину анальный путь к счастью!
То есть ты хочешь сказать, что если у меня будет file1 в обоих местах, я потом в источнике сделаю file2 -> file1, то rsync таки просечёт и не станет его копировать, проделав то же на приёмнике? Но почему же он тогда не может прочечь перемещения, ведь это гораздо проще и нужнее? :confused: :confused: :confused:

serega1604

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

dangerr

Я думаю коллизия при одинаковом размере и времени изменения слишком маловероятное событие чтобы его учитывать.
насчет того просечет или нет - я рекомендую проверить, ибо я мог и перепутать с чем-нибудь другим, а мог и вообще не так все интерпретировать.
Честно говоря предложенный тобою вариант по-моему настолько неудобен, что удобнее и надёжнее будет повторять такие действия вручную в обеих локациях.

serega1604

>Честно говоря предложенный тобою вариант по-моему настолько неудобен, что удобнее и надёжнее будет повторять такие действия вручную в обеих локациях.
не нравится - не ешь. в случае если локаций больше двух и отсутсвует доступ к некоторым из них - вполне удобен.

dangerr

не нравится - не ешь
Да понятное дело. В любом случае спасибо за совет :)
В моём случае действительно локаций больше двух, но трафик критичен лишь до одной.
Оставить комментарий
Имя или ник:
Комментарий: