Введение
Компьютерный ресурс для записи данных на устройстве хранения – компьютерные файлы и файловые системы в целом.
computer files and file systems in general terms
В информатике компьютерный файл – это ресурс для записи данных на устройстве хранения, идентифицируемый прежде всего по имени файла. Подобно тому, как слова можно записать на бумаге, данные можно записать в компьютерный файл. Файлами можно обмениваться и передавать между компьютерами и мобильными устройствами с помощью съемных носителей, сетей или Интернета. Различные типы компьютерных файлов предназначены для разных целей. Файл может хранить изображение, текстовое сообщение, видео, программу или широкий спектр других типов данных. Некоторые файлы могут хранить несколько типов данных одновременно. С помощью компьютерных программ пользователь может открывать, читать, изменять, сохранять и закрывать файлы. Компьютерные файлы можно многократно открывать, изменять и копировать. Файлы обычно организованы в файловой системе, которая отслеживает их местоположение на диске и обеспечивает доступ пользователя.
Этимология
Слово "файл" происходит от латинского filum ("нить, нить"). Термин "файл" использовался в контексте компьютерного хранения уже в январе 1940 года. В книге "Методы перфокарт в научных вычислениях" У. Дж. Эккерт отметил: "Первое масштабное использование раннего табулятора Холлерита в астрономии было осуществлено Комри. Он использовал его для построения таблицы на основе последовательных разностей и для суммирования большого количества гармонических членов". "Таблицы функций эффективно строятся из их разностей, либо в виде печатных таблиц, либо в виде файла перфокарт". В феврале 1950 года в рекламе корпорации RCA в журнале Popular Science, описывающей новую вакуумную лампу с функцией "памяти", RCA заявила: "Результаты бесчисленных вычислений могут храниться 'в файле' и извлекаться повторно. Такой 'файл' теперь существует в 'памяти' лампы, разработанной в лабораториях RCA. Он электронно сохраняет цифры, вводимые в вычислительные машины, удерживает их в хранилище, одновременно запоминая новые – ускоряя решение сложных математических задач". В 1952 году "файл" обозначал, среди прочего, информацию, хранящуюся на перфокартах. На ранних этапах использования под "файлом" подразумевалось само аппаратное обеспечение, а не содержащиеся в нем данные. Например, дисковые устройства IBM 350 назывались "дисковыми файлами". Введение концепции "файловой системы", разработанной в 1961 году компаниями Burroughs MCP и MIT Compatible Time Sharing System, которая управляла несколькими виртуальными "файлами" на одном устройстве хранения, является источником современного значения этого слова. Хотя современный "регистровый файл" демонстрирует раннюю концепцию файлов, его использование значительно уменьшилось.
Содержание файла
В большинстве современных операционных систем файлы организованы в виде одномерных массивов байтов. Формат файла определяется его содержимым, поскольку файл является лишь контейнером для данных. На некоторых платформах формат указывается расширением имени файла, определяющим правила организации и осмысленной интерпретации байтов. Например, байты обычного текстового файла (в Windows) соответствуют символам ASCII или UTF-8, а байты файлов изображений, видео и аудио интерпретируются по-другому. Большинство типов файлов также выделяют несколько байтов для метаданных, позволяя файлу хранить основную информацию о себе. Некоторые файловые системы могут хранить произвольные (не интерпретируемые файловой системой) данные, относящиеся к файлу, вне формата файла, но связанные с ним, например, в виде расширенных атрибутов или форков. В других файловых системах это можно реализовать с помощью дополнительных файлов или баз данных, специфичных для программного обеспечения. Однако все эти методы более уязвимы к потере метаданных, чем форматы контейнеров и архивов.
Размер файла
В любой момент времени файл имеет определенный размер, обычно выражаемый в байтах, который указывает, сколько места на носителе он занимает. В большинстве современных операционных систем размер может быть любым неотрицательным целым числом байтов в пределах системного ограничения. Многие старые операционные системы учитывали только количество блоков или дорожек, занятых файлом на физическом устройстве хранения. В таких системах программное обеспечение использовало другие методы для отслеживания точного количества байтов (например, CP/M использовал специальный управляющий символ Ctrl+Z для обозначения конца текстового файла). Само по себе определение файла не требует, чтобы его размер имел какой-либо смысл, если только данные внутри файла не соответствуют данным в пуле постоянной памяти. Особым случаем является файл нулевого размера; такие файлы могут быть недавно созданными файлами, в которые еще не записаны данные, использоваться как флаги в файловой системе или являться результатом прерванных дисковых операций. Например, файл, на который указывает символическая ссылка в типичной Unix-подобной системе, скорее всего, имеет определенный размер, который редко меняется. Это следует сравнить с , который также является файлом, но как символьное устройство, его размер не имеет значения.
Организация данных в файле
Информация в компьютерном файле может состоять из небольших пакетов информации (часто называемых "записями" или "строками"), которые индивидуально различны, но имеют некоторые общие признаки. Например, файл с данными о заработной плате может содержать информацию обо всех сотрудниках компании и их сведения о выплатах; каждая запись в таком файле относится только к одному сотруднику, и все записи объединены тем, что связаны с заработной платой. Это очень похоже на то, как если бы вся информация о заработной плате хранилась в определенном шкафу в офисе без компьютера. Текстовый файл может содержать строки текста, соответствующие строкам на распечатанном листе. В качестве альтернативы, файл может содержать произвольное двоичное изображение (объект) или исполняемый файл. Способ группировки информации в файле полностью определяется его структурой. Это привело к появлению множества более или менее стандартизированных структур файлов для самых разных целей – от простых до сложных. Большинство компьютерных файлов используются компьютерными программами, которые создают, изменяют или удаляют их по мере необходимости для своих нужд. Программисты, разрабатывающие эти программы, определяют, какие файлы нужны, как они должны использоваться и (часто) их имена. В некоторых случаях компьютерные программы работают с файлами, которые становятся видимыми для пользователя. Например, в текстовом редакторе пользователь работает с файлами документов, которые он сам называет. Хотя содержимое файла документа организовано в формате, понятном текстовому редактору, пользователь может выбрать имя и местоположение файла, а также предоставить основную часть информации (например, слова и текст), которая будет в нем храниться. Многие приложения объединяют все свои файлы данных в один файл, называемый архивным файлом, используя внутренние маркеры для идентификации различных типов информации, содержащейся в нем. Преимущества архивного файла заключаются в упрощении передачи данных за счет уменьшения их количества, экономии места на диске или просто организации устаревших файлов. Часто архивный файл необходимо распаковать перед дальнейшим использованием.
Методы перемещения
Существует две различные реализации перемещения файлов. При переносе файлов между устройствами или разделами некоторые программы для управления файлами удаляют каждый выбранный файл из исходного каталога индивидуально после переноса, в то время как другие программы удаляют все файлы сразу только после того, как все файлы были перенесены. Например, команда `mv` использует первый метод при выборе файлов по отдельности, возможно, с использованием подстановочных знаков (пример: `mv n sourcePath/* targetPath`), а второй метод – при выборе целых каталогов (пример: `mv n sourcePath targetPath`). Microsoft Windows Explorer использует первый метод для перемещения файлов на устройствах хранения, но второй метод – при использовании протокола передачи медиа, как описано в [здесь]. Первый метод (индивидуальное удаление из источника) имеет преимущество в том, что пространство на исходном устройстве или разделе освобождается практически сразу после начала передачи, то есть после завершения переноса первого файла. При использовании второго метода пространство освобождается только после завершения передачи всех выбранных файлов. Если неполная передача файлов вторым методом неожиданно прерывается, например, из-за внезапного отключения питания, сбоя системы или отключения устройства, на исходном устройстве или разделе пространство не будет освобождено. Пользователю потребуется объединить оставшиеся файлы из источника, включая последний неполностью записанный (усеченный) файл. При использовании метода индивидуального удаления программному обеспечению для перемещения файлов также не требуется отслеживать все успешно перенесенные файлы на случай, если пользователь вручную прервет передачу. Файловый менеджер, использующий второй метод (удаление после переноса), должен удалять только те файлы из исходного каталога, которые уже были успешно перенесены.
The former method (individual deletion from source) has the benefit that space is released from the source device or partition imminently after the transfer has begun, meaning after the first file is finished. With the latter method, space is only freed after the transfer of the entire selection has finished. If an incomplete file transfer with the latter method is aborted unexpectedly, perhaps due to an unexpected power off, system halt or disconnection of a device, no space will have been freed up on the source device or partition. The user would need to merge the remaining files from the source, including the incompletely written (truncated) last file. With the individual deletion method, the file moving software also does not need to cumulatively keep track of all files finished transferring for the case that a user manually aborts the file transfer. A file manager using the latter (afterwards deletion) method will have to only delete the files from the source directory that have already finished transferring.
Определение и организация
В современных компьютерных системах файлы обычно доступны по именам (именам файлов). В некоторых операционных системах имя связано с самим файлом. В других файл является анонимным, и на него указывают ссылки, имеющие имена. В последнем случае пользователь может воспринимать имя ссылки как имя самого файла, но это ошибочное отождествление, особенно если существует несколько ссылок на один и тот же файл. Файлы (или ссылки на файлы) могут находиться в каталогах. Однако, в более общем смысле, каталог может содержать либо список файлов, либо список ссылок на файлы. В рамках этого определения принципиально важно, чтобы термин "файл" включал в себя и каталоги. Это позволяет создавать иерархии каталогов, то есть каталоги, содержащие подкаталоги. Имя, относящееся к файлу в каталоге, как правило, должно быть уникальным. Иными словами, в каталоге не должно быть идентичных имен. Однако в некоторых операционных системах имя может включать указание типа, что означает, что каталог может содержать одинаковое имя для объектов разных типов, например, для каталога и файла. В средах, где файл имеет имя, имя файла и путь к каталогу файла должны однозначно идентифицировать его среди всех остальных файлов в компьютерной системе — два файла не могут иметь одинаковое имя и путь. Если файл анонимный, именованные ссылки на него будут существовать в пространстве имен. В большинстве случаев любое имя в пространстве имен будет ссылаться на ноль или один файл. Однако любой файл может быть представлен в любом пространстве имен нулем, одним или несколькими именами. Любая последовательность символов может быть допустимым именем для файла или ссылки, в зависимости от контекста применения. Соответствие имени требованиям зависит от типа используемой компьютерной системы. Ранние компьютеры разрешали использовать в имени файла лишь несколько букв или цифр, но современные компьютеры допускают длинные имена (некоторые до 255 символов), содержащие практически любую комбинацию букв Unicode или цифр Unicode, что облегчает понимание назначения файла с первого взгляда. Некоторые компьютерные системы разрешают использовать пробелы в именах файлов, другие — нет. Чувствительность к регистру в именах файлов определяется файловой системой. Файловые системы Unix обычно чувствительны к регистру и позволяют пользовательским приложениям создавать файлы, имена которых различаются только регистром символов. Microsoft Windows поддерживает несколько файловых систем, каждая из которых имеет свою политику в отношении чувствительности к регистру. В распространенной файловой системе FAT может быть несколько файлов, имена которых различаются только регистром, если пользователь использует редактор дисков для изменения имен файлов в записях каталога. Однако пользовательские приложения обычно не позволяют пользователю создавать несколько файлов с одинаковым именем, но различающихся регистром. Большинство компьютеров организуют файлы в иерархии, используя папки, каталоги или справочники. Концепция остается неизменной независимо от используемой терминологии. Каждая папка может содержать произвольное количество файлов, а также другие папки. Эти другие папки называются подпапками. Подпапки могут содержать еще больше файлов и папок и так далее, формируя древовидную структуру, в которой одна "главная папка" (или "корневая папка" — название варьируется в зависимости от операционной системы) может содержать любое количество уровней других папок и файлов. Папки могут быть названы так же, как и файлы (за исключением корневой папки, которая часто не имеет имени). Использование папок облегчает логическую организацию файлов. Когда компьютер поддерживает использование папок, каждый файл и папка имеет не только собственное имя, но и путь, который определяет папку или папки, в которых находится файл или папка. В пути для разделения имен файлов и папок используется специальный символ, например, косая черта. Например, на иллюстрации, представленной в этой статье, путь однозначно идентифицирует файл с именем в папке с именем , которая, в свою очередь, находится в папке с именем . В этом примере имена папок и файлов разделены косыми чертами; верхняя или корневая папка не имеет имени, поэтому путь начинается с косой черты (если бы у корневой папки было имя, оно стояло бы перед этой первой косой чертой). Многие компьютерные системы используют расширения в именах файлов для определения их содержимого, также известного как тип файла. В компьютерах под управлением Windows расширения состоят из точки (периода) в конце имени файла, за которой следуют несколько букв, определяющих тип файла. Расширение идентифицирует текстовый файл; расширение идентифицирует любой тип документа или документации, обычно в формате Microsoft Word и так далее. Даже если в компьютерной системе используются расширения, степень, в которой система их распознает и учитывает, может варьироваться: в некоторых системах они обязательны, а в других — полностью игнорируются, если они присутствуют.
Защита
Многие современные компьютерные системы предоставляют средства защиты файлов от случайных и преднамеренных повреждений. Компьютеры, поддерживающие работу нескольких пользователей, используют права доступа для контроля над тем, кто может изменять, удалять или создавать файлы и папки. Например, пользователю может быть предоставлено только право на чтение файла или папки, но не на их изменение или удаление; либо пользователю может быть предоставлено право на чтение и изменение файлов или папок, но не на их выполнение. Права доступа также могут использоваться для того, чтобы только определенные пользователи могли просматривать содержимое файла или папки. Права доступа защищают от несанкционированного изменения или уничтожения информации в файлах и обеспечивают конфиденциальность информации для неавторизованных пользователей. Другим механизмом защиты, реализованным во многих компьютерах, является атрибут "только для чтения". Когда этот атрибут установлен для файла (что может быть сделано компьютерной программой или пользователем), файл можно просмотреть, но нельзя изменить. Этот атрибут полезен для критически важной информации, которую нельзя изменять или удалять, например, для специальных файлов, используемых только внутренними компонентами компьютерной системы. Некоторые системы также включают атрибут "скрытый", чтобы сделать определенные файлы невидимыми; этот атрибут используется компьютерной системой для скрытия важных системных файлов, которые пользователи не должны изменять.
Хранение
Любой файл, имеющий какое-либо полезное назначение, должен иметь некоторое физическое воплощение. То есть, файл (абстрактное понятие) в реальной компьютерной системе должен иметь реальный физический аналог, чтобы вообще существовать. В физическом плане большинство компьютерных файлов хранятся на каком-либо устройстве хранения данных. Например, большинство операционных систем хранят файлы на жестком диске. Жесткие диски были повсеместной формой энергонезависимой памяти с начала 1960-х годов. Если файлы содержат только временную информацию, они могут храниться в оперативной памяти (RAM). В некоторых случаях компьютерные файлы могут также храниться на других носителях, таких как магнитные ленты, компакт-диски, DVD (Digital Versatile Discs), диски Zip, USB-флеш-накопители и т.д. Использование твердотельных накопителей (SSD) также начинает соперничать с жесткими дисками. В Unix-подобных операционных системах многие файлы не связаны с каким-либо физическим устройством хранения. Примеры включают большинство файлов в каталогах , и . Это виртуальные файлы: они существуют как объекты в ядре операционной системы. С точки зрения работающей пользовательской программы, файлы обычно представляются либо блоком управления файлом (FCB), либо дескриптором файла. Блок управления файлом (FCB) – это область памяти, которая используется для задания имени файла и т.п., а затем передается в операционную систему в качестве параметра; он использовался в более старых операционных системах IBM и ранних операционных системах для ПК, включая CP/M и ранние версии MS-DOS. Дескриптор файла обычно представляет собой непрозрачный тип данных или целое число; он был введен примерно в 1961 году в Burroughs MCP на базе ALGOL, работающем на Burroughs B5000, но теперь широко распространен.
Поддержка
Когда компьютерные файлы содержат крайне важную информацию, для защиты от возможных катастроф, способных уничтожить эти файлы, используется процесс резервного копирования. Резервное копирование файлов означает просто создание копий файлов в отдельном месте, чтобы их можно было восстановить в случае неисправности компьютера или случайного удаления. Существует множество способов резервного копирования. Большинство компьютерных систем предоставляют служебные программы для помощи в этом процессе, который может быть очень трудоемким, если необходимо защитить большое количество файлов. Файлы часто копируются на съемные носители, такие как CD-R или магнитные ленты. Копирование файлов на другой жесткий диск в том же компьютере защищает от выхода из строя одного диска, но если требуется защита от выхода из строя или уничтожения всего компьютера, то копии файлов необходимо создавать на других носителях, которые можно вынести из помещения и хранить в безопасном, удаленном месте. Метод резервного копирования "дедушка-отец-сын" автоматически создает три резервные копии: файл "дедушка" – самая старая копия, а файл "сын" – текущая копия.
Файловые системы и файловые менеджеры
Способ организации, именования, хранения и обработки файлов компьютером в глобальном масштабе называется его файловой системой. Большинство компьютеров имеют как минимум одну файловую систему. Некоторые компьютеры позволяют использовать несколько различных файловых систем. Например, на современных компьютерах MS Windows поддерживаются более старые файловые системы типа FAT, использовавшиеся в MS DOS и старых версиях Windows, в дополнение к файловой системе NTFS, которая является стандартной для последних версий Windows. Каждая система имеет свои преимущества и недостатки. Стандартный FAT позволяет использовать только имена файлов, состоящие из восьми символов (плюс трехсимвольное расширение), без пробелов, например, в то время как NTFS позволяет использовать гораздо более длинные имена, которые могут содержать пробелы. В NTFS вы можете назвать файл "", а в FAT вы были бы ограничены чем-то вроде (если бы не использовали VFAT – расширение FAT, поддерживающее длинные имена файлов). Программы файловых менеджеров – это служебные программы, позволяющие пользователям напрямую управлять файлами. Они позволяют перемещать, создавать, удалять и переименовывать файлы и папки, хотя они не позволяют читать содержимое файла или сохранять в него информацию. Каждая компьютерная система предоставляет как минимум одну программу файлового менеджера для своей собственной файловой системы. Например, File Explorer (ранее Windows Explorer) обычно используется в операционных системах Microsoft Windows, а Nautilus – в различных дистрибутивах Linux.