Унисон и расширенные атрибуты файлов

У меня две машины, один Debian, один Ubuntu, оба на ext4 с расширенными атрибутами файлов, включенными в fstab. getfattr и setfattr установлены и работают отлично на обеих машинах локально. Однако unison (версия 2.40.102) по умолчанию не синхронизирует расширенные атрибуты файлов.

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

root=/path/to/dir root=ssh://user@example.com//path/to/dir2 auto=true batch=true perms=0 rsync=true maxthreads=1 retry=3 confirmbigdeletes=false copythreshold=0 copyprog = rsync -aX --rsh='ssh -p 22' --inplace --compress copyprogrest = rsync -aX --rsh='ssh -p 22' --partial --inplace --compress copyquoterem = true copymax = 1 

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

 Nothing to do: replicas have not changed since last sync. 

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

Я просмотрел официальное руководство, но в нем упоминаются расширенные атрибуты файлов. Поэтому мой вопрос таков: можно ли это сделать с унисон? Я что-то пропустил здесь? Кроме того, есть ли другие инструменты с открытым исходным кодом, которые могут это сделать? (Я знаю bsync и bitpocket, но в моих предварительных тестах они также не замечают расширенные изменения атрибутов файла).

2 Solutions collect form web for “Унисон и расширенные атрибуты файлов”

В случае, если кто-то столкнется с тем же вопросом, что и в будущем, – унисон не работает с расширенными атрибутами файлов. Один из способов обойти это – copyprog + copythreshold = 0 hack (см. Профиль в исходном вопросе), но это не решает проблему унисон, не замечая изменений в xattr's. Как я уже упоминал в одном из комментариев, даже изменение времени модификации файла не приведет к изменению унифицированной синхронизации xattr. Не только это, но и даже стирает их в следующий раз, когда файл изменит свой контент.

Единственный способ получить двунаправленную синхронизацию с расширенными файловыми атрибутами для работы – использовать bsync , изменить его, добавив флаг -X в аргументы rsync И изменить время изменения файла.

Это далеко не идеальное решение: изменение времени модификации файла, отсутствие поддержки Windows, зависимость Python 3, последняя фиксация в прошлом году и т. Д., Но это единственное программное обеспечение, которое я нашел, которое выполняет эту работу.

Это, вероятно, то, что вы уже видели в руководстве, но в изменениях с 2.27 говорится:

Unison иногда не может передать файл, предоставляя бесполезное сообщение «Destination updated во время синхронизации», даже если файл не был изменен. Это может быть вызвано программами, которые изменяют … расширенные атрибуты файла без изменения времени его модификации. Непонятно, для чего это лучше всего – это не ошибка Unison, но это делает поведение Unison загадочным – …

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

Я думаю, что он мог бы использовать что-то в inotifytools для обнаружения изменений в расширенных атрибутах файлов. Вы можете написать скрипт, который использует inotifytoos для просмотра всех файлов, которые вы хотели бы синхронизировать Unison, а затем touch к файлу в любое время, когда обнаружено изменение.

  • что делает «а» в chattr + ia?
  • Не понимаю, почему getfattr -d ничего не показывает
  • Нормально ли, что мне нужно u + w для установки расширенных атрибутов файловой системы?
  • Невозможно установить атрибут файла
  • Невозможно установить расширенные атрибуты на ext4 на Fedora 22 - операция не поддерживается
  • сохранение расширенных атрибутов cp / rsync
  • Могу ли я установить общий ресурс и включить опцию mount_ user_xattr?
  • Каков эффект «chattr + a» в каталоге
  • Сделать каталог немодифицированным или невосстанавливаемым, кроме как root
  • Samba 3 в Arch Linux, поведение streams_xattr
  • Что это, по-видимому, base64 набор данных setfattr?
  • Linux и Unix - лучшая ОС в мире.