аддон (прочтите внимательно :D)
Позвольте уже и мне поучаствовать в дискуссии..
При всех высказанных вариантах реализации, вариант spectre мне кажется более приемлемым, однако его использование нужно более серьёзно обезопасить! Заметьте:
Ни какое crc области отношений файлов и директорий не даёт никакой гарантии того, что эти данные верны!!! И уж тем более это утверждение верно для преложенной здесь системы с "магическим числом" Подумайте сами: ведь эти данные хранятся в том секторе, данные которого программами просто не изменяются (я имею в виду именно ту область, в которой хранятся данные о принадлежности), следовательно и подпортить их сложновато и crc почти всегда принимает верное значение!!! То есть нужен какой-то другой способ проверки а не упала ли система?
Я так понимаю у всех возможных надстроек над файловой системой трдос есть весьма уязвимые места:
- уплотнение диска программой, которая об надстройке не знает приводит к тому, что все файлы, которые находятся после первого стёртого файла с огромной вероятностью переместятся в другой каталог;
- вероятно, удаление подобными программами последнего (или последних) файлов на диске. Само по себе правда удаление ничего особенного не делает, но если на диске создать новый файл, он автоматически попадает в директорию, в которой находился стёртый до него файл
Поэтому предлагаю считать систему упавшей, если количество директорий в каталоге диска не равно завиксированному количесва директорий в системном секторе.. хотя есть вероятность, что кто-то попытался сосздать директорию, но сделал это не совсем корректно
Также предлагаю отвести ещё один сектор для указания проверочных данных (не обязательно crc) на каждый описатель существующего в системе файла, если быть точным, я предлагаю вписывать туда данные длины файла, как самые статичные (2 байта на каждый существующий файл = 256 байт = сектор), ибо таким образом можно защитить систему при move..
Объясняю на примере:
Допустим мы имеем уплотнённый диск, операция move была выполнена из какого-то левого командера..Таким образом, нужно востановить данные на целостность системы..
- Если была удалена хотя бы одна директория, вероятно что структура востановлению не подлежит..
- Если все директории остались на месте, стоит произвести проверку всех файлов на длину, и в том месте где длины файлов не совпали (произошло удаление с сопутствующим уплотнением) уплотняем и таблицу принадлежности файлов директориям.. Ну и добавочный сектор нужно уплотнять..
- Ну а если вы проверили уже то количество файлов, что было зафиксировано в системном секторе, а файлы ещё остались, вероятно это новые файлы, созданные левыми программами.
Про подобные файлы хочу сказать следующее: лучше их в корень поместить по принуждению, а не пользоваться методом предложенным CityAceE
Цитата:
Сообщение от CityAceE
1. У меня есть таблица принадлежности к каталогам всех 128 файлов, то есть даже тех файлов которые еще не существуют.
2. Если перед запуском, скажем, Alasm'а заполнить содержимое ячеек не существующих файлов принадлежностью, например, к каталогу SOURCES, то любой записанный на диск файл окажется в нужном нам каталоге. Или, например, перед запуском программы можно заполнять указанную область номером текущего каталога, таким образом запущенная, например, ArtSudio будет выгружать картинки в каталог где живет сама ArtStudio.
Ведь в эту же директорию потом будут сохранять файлы и те программы, которые запускались с других дисков (это раз) и даже программы с этого же диска, но запущенные непосредственно из trdos или другой программы непонимающей систему директорий (это два)
Итог: в формат системного сектора нужно внести 2 байта (зафиксированное количество директорий и зафиксированное количество файлов) для возможности восстановления системы, и один дополнительный сектор на диске для тех же целей..
пс. Алгоритм правда не без подвоха: если к примеру, на диске была коллекция непакованных scr файлов размещённых по директориям и вы что-то стёрли и уплотнили не пойми откуда ;) ... поплывёт ваша коллекция :D
Ну а в действительности, каждый юзер сам для себя решит пользоваться ему системой каталогов или нет, но, если в пзу будет прошит коммандер с их поддержкой...