The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск утилиты для синхронизации файлов Rsync 3.3.0, opennews (??), 06-Апр-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


9. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +3 +/
Сообщение от Аноним (9), 07-Апр-24, 01:12 
>можно рассказать про свой сценарий использования

Синхронизируется каталог с кучей файлов. В какой-то момент каталог переименовывается без изменения содержимого. Так вот rsync в этом случае на целевой машине создаст новый каталог и будет заново качать все его содержимое. Ни какие --fuzzy и, тем более, btrfs/zfs ситуацию не исправляют.

>надо залезать на уровень кода файловых систем

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

20 лет назад описан этот кейс и даже предложен патч detect-renamed. Упрямство не имеет логического объяснения.

Ответить | Правка | Наверх | Cообщить модератору

14. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +4 +/
Сообщение от Аноним (14), 07-Апр-24, 09:03 
Напомни почему ты за 20 лет не сделал форк с данным патчем хотябы для себя? Может потому что даже у тебя данный кейс ниразу не случился за 20 лет?
Ответить | Правка | Наверх | Cообщить модератору

17. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +1 +/
Сообщение от Ю.Т. (?), 07-Апр-24, 09:14 
> В какой-то момент каталог переименовывается без изменения содержимого.
> Всего-то надо проверить

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

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

20. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +/
Сообщение от Аноним (20), 07-Апр-24, 09:55 
Unison вроде умеет такое обрабатывать.
Ответить | Правка | Наверх | Cообщить модератору

23. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +/
Сообщение от Ю.Т. (?), 07-Апр-24, 10:30 
> Unison вроде умеет такое обрабатывать.

Я говорю о том, что даже если мы на 101% имеем идентичные файлы, то (для западного универсанта) из этого не следует однозначно возможность считать сущность с другим названием тождественной этой.

Ответить | Правка | Наверх | Cообщить модератору

50. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +/
Сообщение от Аноним (9), 07-Апр-24, 20:16 
>Мало ли что файлы с одинаковыми размерами, или даже одинаковые хэши

Для любого, западного или восточного, реального практика (в смысле "не теоретика") равенство хэшей sha1 означает, что файлы идентичные.
>не та семантическая разница

Сферический конь в вакууме.

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

52. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +1 +/
Сообщение от Ю.Т. (?), 07-Апр-24, 22:58 
>>Мало ли что файлы с одинаковыми размерами, или даже одинаковые хэши
> Сферический конь в вакууме.

Вот потому у них и многое, а нас не очень, что они к подробностям внимательны, а не отмахиваются.

Ответить | Правка | Наверх | Cообщить модератору

25. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +/
Сообщение от Аноним (25), 07-Апр-24, 10:47 
Сомнительная идея и антифича. Для типичных применений сабжа, это могут быть разные файлы, принадлежащие разным владельцам, и они будут дописываться в нескольких местах одновременно, т.е. хардлинк тут не канает.
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

40. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +1 +/
Сообщение от Аноним (-), 07-Апр-24, 13:20 
> Упрямство не имеет логического объяснения.

Если тебя это так тревожит, то первое что тебе следует сделать -- связаться с авторами и узнать их объяснение. У них есть irc-канал или что-то в этом роде? Если есть, то это самое правильное место обсуждать такого рода идеи. Если нет, то значит надо выбрать из активных разработчиков кого-то, и написать ему письмо, с объяснением мотивации, метода решения, ссылкой на патчи, и прямо поставить вопрос: что не так и почему это не принимается в дерево.

Выше описан самый правильный способ искать объяснения, почему патчи не приняты, но можно поспекулировать. Этот метод, во-первых, требует выбора хеш-алгоритма. Это не самый очевидный выбор (коллизии, скорость вычисления хеша...), но при этом важный выбор, который надо делать осознанно, потому что сменить хеш-алгоритм потом может быть затруднительно из-за беквард-совместимости. Во-вторых, этот метод мне лично выглядит недоделанным костылём. Почему сравниваются директории, а не индивидуальные файлы? При чём тут mtime? По-хорошему ведь, напрашивается сравнивать (size, hash) индивидуальных файлов и если они совпадают, то скопировать mtime, права, атрибуты файла и прочее, что копируется, оставив содержимое нетронутым. А если одеть поверх ещё одну "оптимизацию" и сравнивать не только пары (size, hash), но и вектора (size, hash, mtime, user:group, ... всё остальное что заявлено для копирования), и видеть что вектора равны, то пропускать соответствующий файл.

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

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

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

51. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +/
Сообщение от n80 (?), 07-Апр-24, 21:17 
> Абсолютно не требуется. Всего-то надо проверить size, mtime и хэш вложенных файлов
> (на случай если в переименованном каталоге изменились какие-то файлы) и качать только измененные.

Так это ни разу не всего-то, считать хеши всех подряд (ведь мы не знаем, что и куда было перемещено) файлов и держать даже сами хеши (всех-всех файлов в синхронизируемом каталоге и его подкаталогах) в памяти удовольствие совсем не бесплатное и экономия канала тут может вообще не оправдаться. Если какая-то редко нужная функциональность ухудшит жизнь тем кому она не нужна — нехорошо получится всё же.

Лезть на уровень ФС можно чтобы получить информацию о том что такой-то inode был отлинкован от одного каталога и прилинкован к другому (или что вообще тупо каталог был переименован), при этом данные самого файла не менялись. У rsync между запусками не хранится информация об обрабатывавшихся inode, поэтому ему неоткуда об этом узнать. Патч detect-renamed в каких-то ситуациях проблему решает, но не во всех и в комментарии к патчу прямо есть TODO с планами по доработке. В целом, он здраво выглядит, конечно, так что думаю что доделают то что в TODO (если это будет в приоритете, разработчиков-то мало) и замёржат. Но всегда можно наложить локально, если действительно так надо.

В любом случае, спасибо за информацию и пинок подробнее изучить код патчей из rsync-patches.

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

53. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +/
Сообщение от Аноним (9), 08-Апр-24, 01:40 
>экономия канала тут может вообще не оправдаться

Речь идет совсем не об экономии трафика. Время!
Поясню:
На небольшом сервачке каждую ночь AIDE проверяет неизменность объектов ФС (файлы, линки, директории) одновременно по следующим признакам: permissions, link, user, group, size, mtime, acl, md5
Вот вчерашний лог проверки:
Number of entries:      20891
End timestamp: 2024-04-07 02:12:06 +0300 (run time: 0m 5s)

5 (пять!) секунд на 20 тысяч объектов ФС. Суммарный объем этих файлов - 2,8 Гбайт. Если качать их по 100 Мбит линку, то это займет > 280 сек. Даже на скромной виртуалке считать хэши быстрее полной повторной закачки ~ в 50 раз.

Ответить | Правка | Наверх | Cообщить модератору

58. "Выпуск утилиты для синхронизации файлов Rsync 3.3.0"  +/
Сообщение от nailts (ok), 18-Апр-24, 16:31 
а если я не переименовывал, а создал новый каталог (или два, три) и скопировал туда файлы?
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру