Как устроены файлы

Hackware.ru

Отслеживание ошибок

При правильном создании всех ссылок никогда не возникают, так называемые,
«битые ссылки», когда ссылка ведет на файл, путь к которому или
его имя указано неверно. Однако данная ошибка с номером 404 может возникнуть
и просто, когда неправильно пишут адрес страницы. В этом случае, хорошо бы
подсунуть пользователю сообщение об ошибке, чтобы не беспокоился и верил,
что все можно поправить. Для этого создают отдельную веб-страницу, которая
будет показана как раз при возникновении подобной ошибки. Связать воедино
процесс возникновения ошибки и наш файл можно опять же с помощью корневого
.htaccess. В него добавляется следующая строка.

ErrorDocument 404 /err404.html

Файл называется err404.html и размещается в корне сайта, слэш (символ /) перед именем файла пишется обязательно.

Дополнительные файлы

На любом сайте не обойтись и без дополнительных файлов, обычно размещаемых
в корне сайта. Сюда входят файлы, предназначенные для выполнения определенных
задач и имеющие обязательное имя, а также файлы, имя которых определяется
разработчиками.

Обязательные имена

index.html — название главной страницы,
а также веб-страниц, размещаемых в папках, которые должны открываться при их
указании в адресе. Это имя, как уже упоминалось, может меняться в зависимости
от типа веб-сервера и его настроек. Но обычно оно именно такое.

.htaccess — конфигурационный файл веб-сервера
Apache. Указанный сервер является наиболее популярным и распространенным в
мире, поэтому и данный файл можно встретить повсеместно. Бывают, конечно,
исключения.

robots.txt — файл, предназначенный для
поисковых систем. При индексировании сайта, в первую очередь ищется он. Пример
запрета для всех поисковых систем посещать папки сайта cgi-bin и images.

User-agent: *
Disallow: /cgi-bin/
Disallow: /images/

favicon.ico — иконка сайта, она появляется
возле адреса сайта при занесении его в раздел «Избранное» браузера.
Это рисунок размером 16 на 16 пикселов формата ICO.

Необязательные имена

Таблица стилей — ни один сайт уже не обходится без стилей, обычно размещаемых
в отдельном файле. Такое размещение дает несколько преимуществ — легко
изменять вид элементов на всех страницах, меняя параметры лишь в одном месте,
файл кэшируется и загружается быстрее, уменьшается общий объем всех документов.
Файл со стилем обычно имеет расширение css.

Файловая структура диска и ее виды

Видов логических структур существует несколько. Предназначены они для различных архитектур дисковых хранилищ. Среди них:

  1. Одноуровневая (линейная) – это обычая последовательность имен файлов. Часто она используется для небольших по объему дисков, на которых может располагаться совсем малое количество элементов. Доступ к информации на таких носителях осуществляется через простое обращение по имени, поскольку никаких вложенных папок, где могли находиться данные – нет.
  2. Многоуровневая (иерархическая) – многоуровневая последовательность папок и файлов. Используется на дисковых хранилищах, на которых хранятся сотни или тысячи элементов. Она имеет древовидное построение. Начальный или корневой каталог содержит вложенные каталоги первого уровня, которые в свою очередь могут содержать папки второго уровня и так далее. В каталоге любого уровня предусмотрено хранение файлов.

Для доступа к данным  в многоуровневый каталогах следует указывать их адрес (путь к данным), который записывается через обратный слеш («\»). Например, если корневой каталог имеет наименование «С», а папка второго уровня, в которой хранится файл 1.txt, называется «Новая папка», то путь к нему будет таким : С:\Новая папка\1.txt.

В Windows, с точки зрения ФС, во главе всех каталогов «стоит» папка «Рабочий стол», далее идут «Мой компьютер», «Корзина», «Сеть».  «Мой компьютер» же состоит из дисков, установленных в персональном компьютере.

Файловая структура сайта

Вернемся теперь к сайту, файловую структуру которого следует создать. Здесь
существует два различных подхода. В первом случае, каждому разделу соответствует
html-документ, находящийся в корне сайта. Путь к нему будет выглядеть как www.mysite.ru/optimize.html.
Альтернативный вариант — создание папок, которые будут соответствовать
определенным разделам. В каждой папке размещается файл index.html. Поскольку
этот файл указывать в адресе не обязательно, то путь будет выглядеть как www.mysite.ru/optimize.
На рис. 1 и рис. 2 показаны два набора организации файлов на сайте.

Рис. 1. Организация документов по файлам Рис. 2. Организация файлов по каталогам

Какую структуру предпочесть зависит лишь от воли создателей сайта.

Файловая система. Папки и файлы. Имя, тип, путь доступа к файлу.

Файл. 

Все программы и данные хранятся в долговременной (внешней) памяти компьютера в виде файлов. 

Файл — это определенное количество информации (программа или данные), имеющее имя и хранящееся в долговременной (внешней) памяти.

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

Тип файла Расширение
Исполняемые программы exe, com
Текстовые файлы txt, rtf,
Графические файлы bmp, gif, jpg, png, pds
Web-страницы htm, html
Звуковые файлы wav, mp3, midi, kar, ogg
Видеофайлы avi, mpeg
Код (текст) программы на языках
программирования
bas, pas, cpp

В различных операционных системах существуют различные форматы имен файлов. В операционной системе MS-DOS собственно имя файла должно содержать не более восьми букв латинского алфавита и цифр, а расширение состоит из трех латинских букв, например:
proba.txt

В операционной системе Windows имя файла может иметь до 255 символов, причем допускается использование русского алфавита, например:Единицы измерения информации.doc

Файловая система. 

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

Файловая система — это система хранения
файлов и организации каталогов.

Для дисков с небольшим количеством файлов (до нескольких десятков) удобно применять одноуровневую файловую систему, когда каталог (оглавление диска) представляет собой линейную последовательность имен файлов. 

Если на диске хранятся сотни и тысячи файлов, то для удобства поиска файлы организуются в много уровневую иерархическую файловую систему, которая имеет «древовидную» структуру.

Начальный, корневой, каталог содержит вложенные каталоги 1-го уровня, в свою очередь, в каждом из них бывают вложенные каталоги 2-го уровня и т. д. Необходимо отметить, что в каталогах всех уровней могут храниться и файлы.

Путь к файлу.

Для того чтобы найти файл в иерархической
файловой структуре необходимо указать путь
к файлу. В путь к файлу входят записываемые
через разделитель «\» логическое имя
диска и последовательность имен вложенных
друг в друга каталогов, в последнем из
которых находится данный нужный файл.

Например, путь к файлам на рисунке можно
записать так:

C:\basic\

C:\Музыка\Пикник\

Полное имя файла.

Путь к файлу вместе с именем файла
называют полным именем файла.

Пример полного имени файлов:

C:\basic\prog123.bas

C:\Музыка\Пикник\Иероглиф.mp3

Операции над файлами. 

В процессе работы на компьютере над файлами чаще всего производятся следующие операции: копирование (копия файла помещается в другой каталог); перемещение (сам файл перемещается в другой каталог); удаление (запись о файле удаляется из каталога); переименование (изменяется имя файла).

Графическое представление файловой системы. 

Иерархическая файловая система MS-DOS, содержащая каталоги и файлы, представлена в операционной системе Windows с помощью графического интерфейса в форме иерархической системы папок и документов. Папка в Windows является аналогом каталога MS-DOS. Однако иерархические структуры этих систем несколько различаются. В иерархической файловой системе MS-DOS вершиной иерархии объектов является корневой каталог диска, который можно сравнить со стволом дерева — на нем растут ветки (подкаталоги), а на ветках располагаются листья (файлы).

В Windows на вершине иерархии папок находится папка Рабочий стол. (Следующий уровень представлен папками Мой компьютер, Корзина и Сетевое окружение (если компьютер подключен к локальной сети).

Что такое файловая система

Обычно вся информация записывается, хранится и обрабатывается на различных цифровых носителях в виде файлов. Далее, в зависимости от типа файла, кодируется в виде знакомых расширений – *exe, *doc, *pdf и т.д., происходит их открытие и обработка в соответствующем программном обеспечении. Мало кто задумывается, каким образом происходит хранение и обработка цифрового массива в целом на соответствующем носителе. 

Операционная система воспринимает физический диск хранения информации как набор кластеров размером 512 байт и больше. Драйверы файловой системы организуют кластеры в файлы и каталоги, которые также являются файлами, содержащими список других файлов в этом каталоге. Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.

Запись файлов большого объема приводит к необходимости фрагментации, когда файлы не сохраняются как целые единицы, а делятся на фрагменты. Каждый фрагмент записывается в отдельные кластеры, состоящие из ячеек (размер ячейки составляет один байт). Информация о всех фрагментах, как части одного файла, хранится в файловой системе.

Файловая система связывает носитель информации (хранилище) с прикладным программным обеспечением, организуя доступ к конкретным файлам при помощи функционала взаимодействия программ API. Программа, при обращении к файлу, располагает данными только о его имени, размере и атрибутах. Всю остальную информацию, касающуюся типа носителя, на котором записан файл, и структуры хранения данных, она получает от драйвера файловой системы.

На физическом уровне драйверы ФС оптимизируют запись и считывание отдельных частей файлов для ускоренной обработки запросов, фрагментации и «склеивания» хранящейся в ячейках информации. Данный алгоритм получил распространение в большинстве популярных файловых систем на концептуальном уровне в виде иерархической структуры представления метаданных (B-trees). Технология снижает количество самых длительных дисковых операций – позиционирования головок при чтении произвольных блоков. Это позволяет не только ускорить обработку запросов, но и продлить срок службы HDD. В случае с твердотельными накопителями, где принцип записи, хранения и считывания информации отличается от применяемого в жестких дисках, ситуация с выбором оптимальной файловой системы имеет свои нюансы.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Структура файла

WAV-файл использует стандартную RIFF-структуру, которая группирует содержимое файла из отдельных секций (chunks) – формат выборок аудиоданных, аудиоданные, и т.п. Каждая секция имеет свой отдельный заголовок и отдельные данные. Заголовок секции указывает на тип секции и количество содержащихся в секции байт. Такой принцип организации позволяет программам анализировать только необходимые секции, пропуская остальные, которые неизвестны, или которые не требуют обработки. Некоторые секции могут иметь в своем составе подсекции (sub-chunks). Например, как можно увидеть на рисунке ниже, описывающем формат простейшего WAV-файла, секции «» и «» являются подсекциями секции «».

Рисунок 1 – Формат простейшего WAV-файла

Еще одна особенность, связанная с секциями файла RIFF, – адреса начала секций должны быть выровнены на размер слова (2 байта). Это означает, что общий размер секции должен быть кратен 2. Если секция содержит нечетное число байт данных, то в конец данных секции добавляется дополнительный нулевой байт данных. Этот дополнительный байт не учитывается в размере секции в заголовке, таким образом, программа всегда должна учитывать выравнивание для расчета смещения начала следующей секции.

Логические «файлы»

Я упоминал, что термин «файл» я приберегу до лучших времен. Эти времена настали :)

Вся конфигурация хранится в контейнере в виде файлов. Если мы вспомним школьный курс информатики, то вспомним, что «файл», говорили нам – это именованный документ.

Файл отличается от «документа» тем, что у него есть имя, и по этому имени к нему можно обращаться. Если мы будем разбирать содержимое конфигурации и строить дерево метаданных, то найдем внутри файлов очень много упоминаний других файлов. Процедура чтения конфигурации оперирует именами файлов и ссылается на них по имени.

Если подвести итоги, то можно сказать следующее: в контейнере лежат разные документы, но некоторые из них имеют имя. Такие документы называются «файлы» и они носят не служебный, а непосредственно прикладной характер. Именно файлы хранят информацию о метаданных конфигурации.

Компоненты файла

Каждый файл состоит из двух документов:

  1. Документ атрибутов, который содержит имя файла и даты создания/изменения
  2. Документ содержимого, который содержит собственно тело файла

Как решить проблему

Поскольку при обращении к файлу система воспринимает путь к нему как имя, его не получится убрать из глубокой папки и сохранить на рабочем столе для легкого доступа. Всегда будет возникать эта ошибка, поэтому решение проблемы кроется в изменении длины пути. Сделать это можно несколькими способами.

Переименование

Помня об ограничении длины в 255 символов, нужно сократить названия некоторых папок, через которые пролегает путь к файлу. Самый простой вариант – задать им числовые имена вместо слов. Например: «1», «2», «3».

Если в этих папках хранится другая важная информация, а не один файл, нужны понятные имена, по которым вы сможете ориентироваться в будущем.

Попробуйте сократить названия, используя несколько букв, а не целые слова. Например: вместо «фотографии» – «фото», вместо «оборудование» – «оборуд». Задайте и конечному файлу более короткое имя. После этого повторите попытку открытия или удаления.

Выключение ограничения

Ограничение в 255 символов можно просто отключить в реестре ОС, если не планируется взаимодействие в другими компьютерами по общей сети. Для этого проделайте следующее:

  1. Введите команду WIN+R.
  2. В открывшейся строке напишите regedit и нажмите Enter.
  3. Запустится окно с реестром. Выберите папку HKEY_LOCAL_MACHINE.
  4. В ней пройдите по пути, указанному на фото до файла Long Paths Enable.
  5. Задайте ему значение «1».

После этого можно создавать хоть 20 папок, вложенных друг в друга – все файлы будут откликаться адекватно, поскольку исчезнет ограничение.

Unlocker

Это бесплатное приложение, при помощи которого можно работать с файлами, заблокированными ОС. Программа позволяет напрямую удалить или скопировать и переместить файл, не учитывая размер разрешенного имени.

Total Commander

Программа имеет закрытый исходный код и выполняет роль файлового менеджера. Она создает собственную «среду» внутри операционной системы и предоставляет путь к файлам, закрытый для штатных средств Windows. Скачайте программу, ознакомьтесь со структурным деревом каталога, найдите свой файл в привычном месте или через поиск.

Архиватор 7-Zip

Программа 7-Zip предназначена для архивирования файлов, но у нее есть встроенный менеджер. Он не учитывает длину пути к конечному файлу, поэтому открывает доступ к работе с теми данными, которые не поддерживаются штатной файловой системой.

Скачайте архиватор, запустите менеджер. В открывшемся окне удаляйте, копируйте файлы с длинным путем или создавайте новые папки и помещайте туда нужные фото, музыку, видео. В директории это будет отображаться корректно.

Сокращение пути через ссылку

У каждой папки в свойствах есть указатель расположения в разделе «Общее». При обращении к папке задействуется этот путь. Сократить его можно, заменив укороченной ссылкой.

Для этого:

  1. В поле поиска на панели задач введите «Командная строка».
  2. В черном окне введите mklink /D «C:\короткий путь».
  3. Далее скопируйте полный путь из свойств папки и вставьте его сюда же.

Система создаст короткую ссылку и будет обращаться к ней, а не к длинному полному названию. После этого можно создавать новые файлы – короткий путь будет автоматически привязываться к ним.

Структура файловой системы

Ubuntu поддерживает стандарт FHS, описывающий какая информация должна находится в том или ином месте «дерева». Ниже приведена таблица с кратким описанием основных директорий.

Директория Описание
Корневая директория, содержащая всю файловую иерархию.
/bin/ Основные системные утилиты, необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (например: cat, ls, cp).
/boot/ Загрузочные файлы (в том числе файлы загрузчика, ядро и т.д.). Часто выносится на отдельный раздел.
/dev/ Основные файлы устройств системы (например физические устройства sata винчестеры /dev/sda, видео камеры или TV-тюнеры /dev/video или псевдоустройства, например «чёрные дыры» /dev/null, /dev/zero ).
/etc/ Общесистемные конфигурационные файлы, лежат в корне директории и файлы конфигурации установленных программ (имя происходит от et cetera).
/etc/X11/ Файлы конфигурации X Window System версии 11.
/etc/apt/ Файлы конфигурации пакетного менеджера Apt.
/etc/samba/ Файлы конфигурации сервера Samba, расшаривающего файлы по сети с windows машинами.
/home/ Содержит домашние директории пользователей, которые в свою очередь содержат персональные настройки и данные пользователя. Часто размещается на отдельном разделе.
/lib/ Основные библиотеки, необходимые для работы программ из /bin/ и /sbin/.
/media/ Точки монтирования для сменных носителей, таких как CD-ROM, DVD-ROM, flash дисков.
/opt/ Дополнительное программное обеспечение.
/proc/ Виртуальная файловая система, представляющая состояние ядра операционной системы и запущенных процессов в виде каталогов файлов.
/root/ Домашняя директория пользователя root.
/sbin/
/srv/ Данные, специфичные для окружения системы.
/tmp/ Временные файлы (см. также /var/tmp).
/usr/ Вторичная иерархия для данных пользователя; содержит большинство пользовательских приложений и утилит, используемых в многопользовательском режиме. Может быть смонтирована по сети только для чтения и быть общей для нескольких машин.
/usr/bin/ Дополнительные программы для всех пользователей, не являющиеся необходимыми в однопользовательском режиме.
/usr/include/ Стандартные заголовочные файлы.
/usr/lib/ Библиотеки для программ, находящихся в /usr/bin/ и /usr/sbin/.
/usr/sbin/ Дополнительные системные программы (такие как демоны различных сетевых сервисов).
/usr/share/ Архитектурно-независимые общие данные.
/usr/src/ Исходные коды (например, здесь располагаются исходные коды ядра).
/usr/local/ Третичная иерархия для данных, специфичных для данного хоста. Обычно содержит такие поддиректории, как bin/, lib/, share/. Она пригодится, когда /usr/ используется по сети.
/var/ Изменяемые файлы, такие как файлы регистрации (log-файлы), временные почтовые файлы, файлы спулеров.
/var/cache/ Данные кэша приложений. Сюда скачиваются пакеты перед их установкой в систему, здесь же они какое-то время и хранятся
/var/lib/ Информация о состоянии. Постоянные данные, изменяемые программами в процессе работы (например, базы данных, метаданные пакетного менеджера и др.).
/var/lock/ Lock-файлы, указывающие на занятость некоторого ресурса.
/var/log/ Различные файлы регистрации (log-файлы).
/var/mail/ Почтовые ящики пользователей.
/var/run/ Информация о запущенных программах (в основном, о демонах).
/var/spool/ Задачи, ожидающие обработки (например, очереди печати, непрочитанные или неотправленные письма).
/var/tmp/ Временные файлы, которые должны быть сохранены между перезагрузками.
/var/www/ Директория веб-сервера Apache, всё что находится внутри транслируется им в интернет (конфигурация по-умолчанию)

Структура блока

Блок состоит из заголовка и тела. В заголовке указывается общий размер всего документа, размер текущего блока и адрес (позиция в файле) следующего блока. Сразу за заголовком идет тело блока – собственно, те данные, которые нам нужны. Тело блока имеет ровно ту длину (в байтах), которая указана в заголовке.

Внутри контейнера тут и там встречается волшебная константа, обозначающая некую «пустоту» – это число 0x7fffffff.

Когда мы собираем документ из блоков, то смотрим в заголовке на адрес следующего блока. Если он равен 0x7fffffff, то «следующего» блока нет, этот – последний.

Константа 0x7fffffff — это значение INT_MAX, т.е. максимальное значение 4-байтового целого числа со знаком.

Какой файл загружать первым

DirectoryIndex index.ШТМЛ index.htm

Где через пробел указываются имена файлов, которые следует просматривать на
предмет наличия и запускать автоматически. После этого, при указании пути к
разным файлам и папками, в браузере будут открываться файлы, как показано
в таблице (указание протокола http:// для краткости
опущено).

Путь Что запускается
www.mysite.ru www.mysite.ru/index.ШТМЛ
www.mysite.ru/16.ШТМЛ www.mysite.ru/16.ШТМЛ
www.mysite.ru/16/ www.mysite.ru/16/index.ШТМЛ
www.mysite.ru/1/6 www.mysite.ru/1/6/index.ШТМЛ

Как видно из таблицы, даже если путь к файлу указан не полностью, web-сервер
сам подставит недостающие значения. Этим можно применить, создавая ссылки
на разные файлы, на их работоспособность это не скажется.

Замечания

файл .htaccess пишется без всякого расширения с обязательной
точкой в начале имени;
.htaccess может не работать на некоторых серверах;
неполные пути, как показано в таблице, работают только под управлением web-сервера,
на локальном компьютере этот фокус не пройдет;
если файл index.ШТМЛ отсутствует в указанной папке, браузер покажет
список файлов, которые в ней содержатся.

Зачем нужно монтирование

С помощью такого подхода — когда любой диск может быть любой папкой в системе, можно делать очень гибкую настройку. Самый частый пример, встречающийся на практике: файлы пользователя хранятся в папке /home/имя_пользователя/, например, у меня это папка /home/mial/. При установке операционной системы я могу сделать так, что мой второй или третий диск (а не системный) будет смонтирован в точку /home/mial/. То есть вся операционная система будет располагаться на одном диске, а все мои пользовательские файлы — на другом. Что это даёт? В случае переустановки системы, я вновь настрою монтирование диска с моими файлами в папку /home/mial/ и в результате в новой, только что установленной системе, уже будут на месте все мои документы, фотографии и прочее!

Поскольку часто узким местом в мощных компьютерах является скорость чтения с диска, то на на серверах с высокой нагрузкой практикуется перенос файлов баз данных (например, /var/lib/mysql/ на другой диск), возможен перенос файлов сервера (/srv/http/) на третий диск, файлов логов (/var/log/httpd/) на ещё один диск и т. д. Это позволяет добиться того, что данные из баз данных считываются независимо от записи журналов, то есть пока выполняются операции чтения-записи для одного процесса, другому процессу не нужно ждать своей очереди — всё выполняется одновременно.

Ещё монтирование позволяет выбрать различные режимы, например, диск можно смонтировать в режиме «только чтение» — в результате с него можно будет просматривать файлы, но испортить этот диск невозможно.

В общем, несмотря на то, что монтирование является чем-то непривычным для пользователей Windows, это потрясающая функция! Причём ничего сложного в этом нет, если понять суть.

Краткий итог по теоретической части

  1. Файл CF(EPF/ERF) записан в формате «контейнера»
  2. Контейнер начинается с заголовка
  3. Все содержимое контейнера, за исключением заголовка, записано в виде «документов»
  4. Документ может быть разбит на блоки
  5. Документ начинается с заголовка блока, по которому можно узнать, как прочитать весь документ целиком
  6. Сразу за заголовком контейнера идет документ оглавления
  7. Оглавление, это набор записей, которые указывают на «файлы» внутри контейнера
  8. Каждый файл состоит из двух документов – документа атрибутов, где указано имя этого файла и документа содержимого, где, собственно, расположены данные файла.
  9. Каждая запись оглавления содержит 2 адреса. Первый – адрес документа атрибутов файла, второй – адрес документа содержимого.
  10. Контейнер может содержать вложенные контейнеры (как бы, вложенные папки)
  11. Файлы внутри корневого контейнера сжаты по алгоритму Deflate, файлы внутри вложенных контейнеров записаны без сжатия.
Понравилась статья? Поделиться с друзьями:
Setup Pro
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: