anyconvertfs [--tmpdir directory] [--blocksize blocksize] [-f] [--dry] [--inodetable inodetable] [--color|--no-color] [--label label] [--debug] [--dont-delete-it] [--success-delete-it] [--dontstop] [--pause seconds] [--use-anyfs|--use-anyfuse] [--] device [source_fs] destination_fs
Этот скрипт вас напоит, накормит и спать уложит.. Да, о чём это я?
На самом деле этот скрипт постарается сделать всё от него зависящее, чтобы вам не пришлось читать эту страницу руководства (и другие) до конца.
Я вам скажу как его можно запустить:
$ anyconvertfs /dev/hda1 xfs
Где /dev/hda1 -- ваше устройство, а xfs -- файловая система, в которую нужно сконвертировать текущую ФС устройства. Всё. Остальное вам расскажет скрипт. Дальше можете не читать, если вам это не интересно.
anyconvertfs сконвертирует файловую систему устройства за 5 шагов, причём 2 из них в большинстве случаев будут пропущены. Опишем эти шаги последовательно.
Шаг 1. Построение внешней таблицы инф.узлов (при помощи build_it).
Этот шаг может быть пропущен только в том случае, если вы конвертируете из anyfs используя существующую таблицу инф.узлов.
Шаг 1a. Спасение (копирование) файлов невыровненных по границам блоков.
Этот шаг выполняется при конвертировании из ФС
ntfs-3g
для
копирования сжатых/шифрованных файлов на уровне ФС.
Шаг 2. Без операционное (проверка свободного места) изменение размера блока anyfs (при помощи reblock).
Этот шаг будет выполнен, если размер блока для новой ФС не равен размеру блока старой ФС.
reblock
при этом может сообщить о нехватке места на диске. В этом случае скрипт предложит освободить место для новой файловой системы.
Шаг 3. Изменение размера блока anyfs (при помощи reblock).
Этот шаг также будет выполнен лишь при необходимости. При этом при увеличении размера блока это первый шаг, на котором старая файловая система может быть уничтожена, о чём предупредит скрипт и предложит нажать Ctrl+C, если вы вдруг передумали.
Шаг 4. Без операционное (проверка свободного места) построение новой файловой системы (при помощи build_e2fs/build_xfs).
Этот и следующий шаг будет пропущен при конвертировании в anyfs (для которой нужна лишь внешняя таблица инф.узлов). На этом шаге утилита построения ФС также может сообщить о нехватке места на устройстве, и скрипт предложит его освободить в этом случае.
Шаг 5. Построение новой файловой системы (при помощи build_e2fs/build_xfs).
Это шаг на котором старая файловая система уничтожается наверняка, поэтому (если она не была уже уничтожена на пятом шаге), скрипт может предложить вам нажать Ctrl+C, если вы вдруг передумали.
Шаг 5a. Перемещение спасённых файлов на новую файловую систему.
Этот шаг также как и 1a выполняется только при конвертировании из
ntfs-3g.
anyconvertfs не обязательно, чтобы файловая система была размонтирована -- он всё равно будет её монтировать. Если ФС уже смонтирована он воспользуется этим (за исключением случая конвертирования из ntfs-3g), а заодно будет знать какие опции монтирования использовать.
Кроме того, если файловая система была смонтирована, то anyconvertfs также смонтирует и новую файловую систему в ту же точку монтирования.
+1. Открытость. Вы наверняка знаете что она делает.
+2. Вы знаете что делать, если что-то пойдёт не так. Во всяком случае при применении утилит из anyfs-tools должен остаться файл внешней таблицы инф.узлов с помощью которого и драйвера anyfs можно считать файлы, даже при повреждении файловой системы. В конце концов anysurrect -- тут, рядом.
+3. Конвертирование из ISO9660 :-). На самом деле это скорее побочный эффект, но anyconvertfs не будет долго думать даже, если в качестве входящей файловой системы вы ему подсунете ISO-образ.
Недостатки в сравнении с другими закрытыми утилитами:
-1. Пока ещё узкий список файловых систем назначения.
-2. Может быть скорость. Так как в целом метод для каждого конвертирования остаётся одним и тем же, мы не можем использовать какие-либо возможные похожести структур файловых систем.
Преимущества перед открытой convertfs (http://tzukanov.narod.ru/convertfs/):
+1. Более широкий список исходных файловых систем. convertfs при всей гениальности реализуемой идеи имеет один существенный недостаток -- драйвер исходной файловой системы не может быть только для чтения, нужна возможность записи(!), более того записи с поддержкой sparse-файлов. Таким образом convertfs не сможет сконвертировать даже из vfat.
+2. Скорость. В сравнении с convertfs anyconvertfs должен быть быстрее (в разЫ), т.к. ему не требуется копировать всё дерево файловой системы.
+3. Документация. Документация у convertfs оставляет желать лучшего.
Кроме того проведя один простой тест (конвертирование образа в 607 Мб), я обнаружил что convertfs покоцал два файла. Автору был отправлен баг-репорт, но он так и не ответил.
Недостатки перед открытой convertfs:
-1. Пока ещё узкий список файловых систем назначения.
-2. Размер convertfs действительно мал!
?3. Идея у anyfs-tools несколько более простая и очевидная.
Преимущества перед вседоступным cp && mkfs && cp:
+1. Размер дополнительно используемого пространства. У пользователя редко находится место чтобы спокойно скопировать целый раздел..
+2. Скорость. cp && mkfs && cp -- это медленнее чем даже convertfs -- двойное копирование!
Недостатки перед вседоступным cp && mkfs && cp:
-1. Пока ещё узкий список файловых систем назначения.
-2. cp && mkfs && cp не требует поддержки драйвером исходной файловой системы даже вызова ioctl FIBMAP. Достаточно только чтения!
-3. Надёжность cp && mkfs && cp не знает границ.. Если только не битый промежуточный раздел.
Скорее всего следующей реализуемой файловой системой назначения станет JFS.
Для конвертирования образа /path/image в ext3fs:
# anyconvertfs -f /path/image ext3
Конвертирование /dev/sda1 в ext2fs с размером блока 2048:
# anyconvertfs --blocksize 2048 /dev/sda1 ext2
Конвертирование /dev/hdb2 в xfs с меткой "Белая метка":
# anyconvertfs --label "Белая метка" /dev/hdb2 xfs