Унисон и расширенные атрибуты файлов
У меня две машины, один Debian, один Ubuntu, оба на ext4 с расширенными атрибутами файлов, включенными в fstab. getfattr и setfattr установлены и работают отлично на обеих машинах локально. Однако unison (версия 2.40.102) по умолчанию не синхронизирует расширенные атрибуты файлов.
Я googled вокруг и нашел это сообщение в блоге с настройками профиля, которые должны включать расширенную синхронизацию атрибутов. Итак, я изменил свой профиль, и теперь он выглядит примерно так:
- Разница между xattr и chattr
- Скажите, скрыта ли папка / файл в Mac OS X
- Автоматически устанавливать атрибуты файлов в заданном каталоге
- Состояние поддержки ZFS xattr во FreeBSD
- Как определяются разрешения по умолчанию (на OS X)?
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, но в моих предварительных тестах они также не замечают расширенные изменения атрибутов файла).
- Не удалось запустить 'sudo chmod + w / etc / hosts'
- Каковы затраты на хранение xattrs в файловых системах ext4, btrfs?
- Сжатие файлов - как реализовать в Linux
- найти файлы с расширенными атрибутами
- Возможности файла Linux теряются при изменении файла. Это ожидаемое поведение?
- Как хранятся и сохраняются расширенные атрибуты?
- Недопустимый аргумент Richacl при попытке установить атрибуты
- Что означает атрибут «a» в lsattr?
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
к файлу в любое время, когда обнаружено изменение.