Существует ли файловая система копирования при записи для Mac OS X?
Я на снежном барсе. У меня установлены MacFUSE и fuse4x. Можно ли установить файловую систему для копирования при записи?
Я попытался собрать UnionFS-FUSE 0.25 с использованием include и библиотек fuse4x, но я получаю эту ошибку:
error: ‘AT_SYMLINK_NOFOLLOW’ undeclared
Кажется, что OS X не определяет эту константу (я извлек все /usr/include, и он не был найден).
Я также попытался использовать встроенные в OS X монтирования (mount -o union
) но он не вел себя как ожидалось. Я смонтировал 2 файловые системы (используя файлы dmg) с опцией объединения в одну точку монтирования. Первый был только для чтения, и имел каталог под названием d1
содержащий несколько файлов. У второго не было каталога с таким именем. Когда я пытался создать файл в d1
в монтированном соединении я получил ошибку fs только для чтения. Я ожидал, что он автоматически создаст каталог и файл под ним, как в fs #2. Затем я попытался создать d1
в фс № 2, но затем содержимое d1
в fs #1 были полностью скрыты (каталог оказался пустым). По сути, объединяющее поведение происходило только на корневом уровне файловых систем и не было рекурсивным.
Если кто-то хочет попробовать воспроизвести встроенное поведение монтирования объединения, я воспользовался этим руководством.
Я не знаком с файловыми системами копирования при записи - совпадает ли мое ожидание с тем, как должны работать файловые системы копирования при записи?
1 ответ
После небольшого исследования мне, возможно, придется отказаться от заранее написанного решения и просто написать свое собственное.
PyFilesystem выглядит так, как будто у нее есть потенциал, особенно тип MultiFS fs. Его FUSE-коду нужен патч для работы с fuse4x.
В документации MultiFS не ясно, будет ли она создавать каталог на доступном для записи fs, но я попробую.
ОБНОВИТЬ
Патч представил ошибку, когда он перемещал эту строку перед загрузкой iconv CDLL:
_libfuse = CDLL(_libfuse_path)
Просто переместите его сразу после, и он должен работать на OS X. (Для общего исправления необходимо также добавить строку после if _system in
Блок.)
Поэтому я попробовал MultiFS, и он не создает отсутствующие каталоги на записываемой FS. Но я предполагаю, что это легко добавить (хотя я не эксперт по питону). Кроме того, попытка перезаписать или добавить файл в одну из файлов только для чтения не всегда создает соответствующий путь для записи. Я получаю много ошибок и зависаний (процесс предохранителя затем начинает использовать много процессора). Это решение все еще выглядит очень многообещающим.