Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Что нужно знать о файловой системе Linux




Linux позволяет работать с великим множеством файловых систем, как локальных, так и сетевых. Однако у него есть и своя, родная, файловая система, носящая название ext2fs. Построена она предельно просто и логично: все в ней является файлами - данные, программы, каталоги, устройства (для примера - последовательные или параллельные порты). И потому файлы разделяются на типы:

· обычные файлы;

· каталоги;

· файлы устройств;

· ссылки.

Обычные файлы - это, во-первых, исполнимые двоичные файлы (типа файлов *.exe или *.com, но не привязанные к какому-либо расширению);во-вторых, ASCII-файлы, содержащие простой текст (не обязательно романического содержания - сюда относится и подавляющее большинство системных конфигурационных файлов); в третьих, файлы данных, созданные какой-либо программой (текстовым процессором, графическим редактором или электронной таблицей, например) в собственном формате. Впрочем, все это пользователю DOS/Windows понятно.

Каталоги - это тоже файлы, содержащие информацию о каталогах: рекурсия - широко распространенный и любимый прием в мире Unix-систем (достаточно вспомнить расшифровку аббревиатуры проекта GNU - GNU's Not Unix). Каталоги объединяются в иерархическое дерево, начинающееся, как и положено, с корня (/ - root, корневой каталог) и растущее ввысь и вширь; любые накопители, как монтируемые при загрузке (жесткие диски, скажем, и их логические разделы), так и подключаемые в процессе работы (CD ROM, Zip, дискеты) - не более чем ветви дерева каталогов.

Файлы устройств - понятие для Windows-мигранта непривычное. Это нужно просто запомнить: все физические устройства, присутствующие в системы (порты ввода/вывода, накопители разного рода, звуковые устройства и прочие), с точки зрения ext2fs являются файлами. Устройства эти могут быть блочными (например, накопители) или символьными (порты ввода/вывода), но это - уже подробности.

Наконец, ссылки (links) - это некий аналог "ярлыков" в Windows или "теней" в OS/2. Ссылка может быть прямой, или жесткой (hardlink, или, часто, link просто) и символической (symlink). Первые могут указывать на любой файл в файловой системы, тогда как вторые обязаны находиться в одном дисковом разделе.

Чтобы лучше понять, что такое ссылки, давайте попробуем разобраться, что же такое с точки зрения ext2fs файл (не могу не отметить, что для себя я окончательно понял это после прочтения упомянутой статьи Виктора Хименко).

Так вот, файл состоит как бы из двух частей. Первая - это нумерованная в шестнадцатеричном исчислении запись - inode (адекватного перевода мне обнаружить не удалось, иногда переводится как "узел"). В ней содержится информация о размере файла, его формате, правах доступа и т.д. Вторая часть - это имя файла, связанное с inode посредством прямой ссылки.

Каковы следствия этого для конечного пользователя? Первое - имя файла, включая и расширение, не играет в Linux такой сакральной роли, как в DOS/Windows. Если в последней сменить расширение в файле, скажем, *.psd на любое иное - считать его Photoshop уже не удастся. В Linux же в общем случае файлу данных любого типа может быть приписано любое расширение (или его может не быть вовсе): на понимание его породившей программой это никак не отразится. Более того, файл может иметь несколько расширений (то есть групп знаков, разделенных точками): типичный пример - архивный компрессированный файл *.tar.gz.

Правда, некоторые программы (скажем, графические редакторы или офисные пакеты) все же требуют, чтобы файл формата TIFF имел расширение *.tif, и т.д. Но это - извращение генеральной линии. И вызывается тем, что имя файла неявно передается программе, то есть запускающей ее команде, в качестве одного из аргументов.

Следствие второе - теоретически (да и практически) с одним и тем же inode может быть несколько сколько угодно ссылок, причем - не обязательно идентичных. То есть один и тот же физический файл как бы выступает под разными именами. Это играет важную роль при использовании библиотек, шрифтов и в ряде других случае.

Следствие третье - удаление файлов в Linux происходит совершенно иначе, чем в DOS/Windows. Где, как известно, удаленный обычными средствами файл продолжает физически существовать до тех пор, пока на его место не записана новая информация. На чем и основаны программы восстановления ошибочно удаленных данных, вроде прославившей Нортона unerase.

В Linux файл (то есть inode) удаляется автоматически, когда становится недоступным для системы. Это происходит тогда, когда удалена последняя ссылка на него (а имя файла, удаляемое средствами командной строки или файлового менеджера - и есть такая ссылка) и закрыта последняя обращающаяся к нему программа.

То есть: если мы удалим все файлы во всех каталогах всех уровней вложенности (а средства командной строки дают возможность сделать это играючи, и даже подтверждения не запросят) - мы будем по-прежнему существовать в работающей системе. И все открытые файлы данных будут существовать, могут быть изменены, записаны, переименованы и т.д. Все это исчезнет только после перезагрузки системы. Но зато - безвозвратно: никаких unerase, undelete и прочих либеральностей в Linux не возможно в принципе.

Правда, такая графическая среда, как KDE, имеет аналог мусорной корзины Windows. Но это - просто отдельный каталог, куда помещаются файлы, полагаемые ненужными, чтобы глаза не мозолили. И откуда их можно даже не восстановить в смысле DOS, а просто скопировать обратно.

Возвращаясь к имени файла. Поскольку оно в Linux не столь свято, как в DOS/Windows, и ограничений на него много меньше. Так, абсолютно запрещенные к использованию символы - только / и \. Правда, некоторые другие специальные символы, такие, как!, @ и прочие из верхнего ряда клавиатуры, за исключением _, всякого рода скобки и кавычки, также не рекомендуются к использованию в именах файлов, особенно - в начальной позиции, но это, обычно, требование оболочки командной строки, а не системы. максимальная

Максимальная длина имени файла (включая и любое количество "расширений") - 255 знаков. А максимально возможная длина пути - 4096, что практически можно считать бесконечным. В отличие от Windows, где при стремлении программ инсталлироваться глубоко в недра директории Programs Files, ограничение на длину пути в 256 знаков становится реальностью.

А вот структура каталогов в Linux, напротив, жестко фиксирована, хотя в деталях и может разниться от дистрибутива к дистрибутиву. Конечно, обладая правами суперпользователя, ее можно изменить. Но - делать это ни в коем случае не следует - в результате система может просто утратить работоспособность.




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 330; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.