вторник, 20 ноября 2007 г.

Работа с NTFS (файловая система Windows)

Многие пользователи, использующие на своих компьютерах одновременно Windows и Linux, сталкиваются с проблемой доступа к разделам NTFS из Linux. Сейчас для решения этой проблемы обычно используют популярный драйвер ntfs3g, работающий в пространстве пользователя через fuse. Однако есть ещё утилита ntfsmount из пакета ntfsprogs, разработанного в рамках проекта linux-ntfs.

Основным преимуществом ntfsmount перед ntfs3g является поддержка чтения зашифрованных и сжатых файлов. В остальном эти два драйвера очень схожи. Но в пакете ntfsprogs кроме собственно ntfsmount есть ещё ряд полезных утилит, таких как ntfsresize, ntfsundelete, ntfslabel, ntfsfix и других.

Теперь мы можем легко подмонтировать ntfs раздел:
ntfsmount /dev/sda1 /mnt/windows

Если мы хотим чтобы раздел автоматически монтировался при загрузке, то нужно дописать в /etc/fstab строку:

/dev/hda1 /mnt/windows ntfs-fuse umask=0,rw,force 0 0

Для получения метки раздела нужно ввести команду:

ntfslabel /dev/sda1

Для смены метки используется команда:

ntfslabel /dev/sda1 Windows

Нужно помнить что ntfslabel работает только с отмонтированными разделами. Если у вас появились какие-то ошибки на файловой системе, то раздел можно проверить с помощью команды ntfsfix:

ntfsfix /dev/sda1

Если вы ошибочно удалили какой-то файл, то расстраиваться не надо. Положение может спасти команда ntfsundelete. Для получения списка доступных для восстановления файлов воспользуйтесь командой:

ntfsundelete -f /dev/sda1

Она выведет примерно вот такой список:

WARNING: Dirty volume mount was forced by the 'force' mount option.
Inode Flags %age Date Size Filename
---------------------------------------------------------------
16 F..! 0% 1970-01-01 0
17 F..! 0% 1970-01-01 0
18 F..! 0% 1970-01-01 0
19 F..! 0% 1970-01-01 0
20 F..! 0% 1970-01-01 0
21 F..! 0% 1970-01-01 0
22 F..! 0% 1970-01-01 0
23 F..! 0% 1970-01-01 0
12249 FR.. 100% 2007-11-19 9
15741 FN.. 100% 2007-03-19 1056768 tmp.edb
16208 FN.. 100% 2007-03-19 1048576 edb.log
16210 FN.. 100% 2007-03-19 1048576 res2.log
16211 FN.. 100% 2007-03-19 1048576 res1.log
16213 FN.. 100% 2007-03-19 8192 edb.chk
16305 FR.. 100% 2007-03-19 512 ~DFEDD9.tmp
16307 FR.. 100% 2007-03-19 166 h2r21.tmp
16327 FN.. 100% 2007-03-19 5253 h2r22.tmp
16328 FR.. 100% 2007-03-19 0 ms2159.tmp
16329 F..! 0% 1970-01-01 0
16330 F..! 0% 1970-01-01 0
16331 F..! 0% 1970-01-01 0
16332 F..! 0% 1970-01-01 0
16333 F..! 0% 1970-01-01 0
16334 F..! 0% 1970-01-01 0
16335 F..! 0% 1970-01-01 0

Далее находим в первом столбике Inode нужного файла (например если нам нужен файл edb.log то это 16208) и выполняем команду:

ntfsundelete -f -u -i 16208 /dev/sda1

Всё. Файл восстановлен.

Более подробно узнать об утилитах из пакета ntfsprogs можно на официальном сайте проекта linux-ntfs



1 комментарий:

virens комментирует...

Ух ты, а я и не знал, что ntfs-ные файлы можно восстанавливать! БОльшое спасибо за пост, унёс к себе в избранное.