Иногда возникает необходимость считать какие либо данные с NTFS раздела. Так же иногда нужно что либо записать на NTFS раздел. Рассмотрим два способа работы с NTFS в FreeBSD обладающими своими достоинствами и недостатками.
Работать будем с USB HDD, на нем два раздела - первый сделан для FreeBSD (это моя переносная загрузочная система на все случаи жизни), а второй раздел отформатирован в NTFS.
Диск разбит след. образом:
/dev/da0s1 /dev/da0s1a /dev/da0s1b /dev/da0s1c /dev/da0s1d /dev/da0s1e /dev/da0s1f /dev/da0s2
Где /dev/da0s2 - NTFSный раздел.
Метод первый. Работаем штатным NTFS модулем.
Затем выполняем:
Файлы "$" это скрытые виндовые файлы, все тайное становится явным. :-)
Пару слов о mount_ntfs, это очень хорошая штука, позволяет принудительно указать кодировку в которую перекодировать имена файловой системы. В моем случае я использовал локаль UTF-8 и указывал ее же. Если указать -C KOI8-R то соответственно все будет в KOI8-R. Особенность такова, что mount_ntfs отрабатывает этот ключ, а вот mount -t ntfs не отрабатывает, почему, я не разбирался. Недостаток этого метода только один, нельзя вести запись на NTFS раздел. Но лично в моем случае это никакого значения не имеет, мне достаточно только чтения.
Метод второй. Собираем порт fusefs-ntfs, собственно это многострадальный ntfs-3g.
NTFS-3G (в портах: /usr/ports/sysutils/fusefs-ntfs) собирается как модуль ядра. Скажу прямо - он несколько недоделанный и с ним возможны всякие странности. К примеру он может показывать давно удаленный файл на NTFS системе. Но он умеет более-менее полноценно вести запись на NTFS раздел. Хотя лично я думаю, что работать из под FreeBSD в файловой системе с закрытыми спецификациями, надеясь на то, как автор модуля расковырял NTFS, несколько рисковано (для NTFS раздела). :-) Но это личное дело каждого.
Итак порт собрался, мы его запустим:
Проверим загрузился ли модуль:
Модуль загрузился нормально. Если хотим в автозапуск, то надо добавить в rc.conf строку fusefs_enable="YES". Теперь монтируем:
Смотрим результат:
Итак - все работает. NTFS-3G скрытые шары не показывает в отличии от штатного ntfs. Ну и проверим запись:
Ну собственно вот и все. Однако, имеется одна особенность ntfs-3g. Я так и не нашел перекодировку имен файлов в нем. Поэтому для работы с русскими именами файлов придется использовать локаль UTF-8, либо перекодировать имена каким то другим методом.