Почему tar и gzip файлы обычно имеют расширение файла?

Позади Ваших вопросов существуют неправильные представления.

  1. Подкачка не смонтирована.
  2. Монтирование не ограничено разделами.

Разделы

Раздел является частью ¹ дискового пространства, это посвящено конкретной цели. Вот некоторые общие цели для разделов.

  • Файловая система, т.е. файлы, организованные как дерево каталогов и сохраненные в формате, такие как ext2, ext3, FFS, FAT, NTFS, …
  • Область подкачки, т.е. дисковое пространство, используемое для подкачки страницизображения спящего режима хранения).
  • Прямой доступ к приложению. Некоторые базы данных хранят свои данные непосредственно на разделе, а не в файловой системе для получения небольшой производительности. (Файловая система является своего рода базой данных так или иначе.)
  • Контейнер для других разделов. Например, расширенный раздел ПК или раздел диска, содержащий разделы BSD или физический том LVM (содержащий в конечном счете логические тома, которые можно самостоятельно считать разделами), …

Файловые системы

Файловые системы представляют информацию в иерархической структуре. Вот некоторые общие виды файловых систем:

  • Поддержанные диском файловые системы, такие как ext2, ext3, FFS, FAT, NTFS, …
    • Отступающий не должен быть непосредственно на разделе диска, как замечено выше. Например, это могло быть логическим томом LVM, или цикл монтируется.
  • Поддержанные памятью файловые системы, такие как Солярис и tmpfs Linux.
  • Файловые системы, которые представляют информацию от ядра, такой как proc и sysfs на Linux.
  • Сетевые файловые системы, такие как NFS, Samba, …
  • Поддержанные приложением файловые системы, из которых FUSE имеет большое количество. Поддержанные приложением файловые системы могут сделать примерно что-либо: заставьте FTP-сервер появиться как файловая система, высказать альтернативное мнение файловой системы, где имена файлов нечувствительны к регистру или преобразованы в другое кодирование, покажите содержание архива, как будто они были каталогами, …

Монтирование

Unix представляет файлы в единственной иерархии, обычно называемой “файловая система” (но в этом ответе я не буду использовать слово “файловая система” в этом смысле для подавления беспорядка). Отдельные файловые системы должны быть привиты на ту иерархию для доступа к ним. ³

Вы делаете файловую систему доступной путем монтирования его. Монтирующиеся партнеры корневой каталог файловой системы Вы монтируетесь с существующим каталогом в файловой иерархии. Каталог, который имеет такую ассоциацию, известен как точка монтирования.

  • Например, корневая файловая система смонтирована во время начальной загрузки (прежде чем ядро запустит любой процесс ²) к / каталог.
  • proc файловая система, по которой некоторые варианты Unix, такие как Солярис и Linux выставляют информацию о процессах, смонтирована на /proc, так, чтобы /proc/42/environ определяет файл /42/environ в proc файловой системе, которая (на Linux, по крайней мере) содержит представление только для чтения среды процесса номер 42.
  • Если у Вас есть отдельная файловая система, например, для /home, затем /home/john/myfile.txt определяет файл, путь которого /john/myfile.txt от корня домашней файловой системы.

В соответствии с Linux, для той же файловой системы возможно быть доступным больше чем через один путь, благодаря связывают, монтируется.

Типичный Linux файловые системы имеет много смонтированных файловых систем. (Это - пример; различные дистрибутивы, версии и установки приведут к различным смонтированным файловым системам.)

  • /: корневая файловая система, смонтированная перед ядром, загружает первый процесс. Загрузчик говорит ядро, что использовать в качестве корневой файловой системы (это обычно - раздел диска, но могло быть чем-то еще, таким как экспорт NFS).
  • /proc: proc filessytem, с процессом и информацией о ядре.
  • /sys: sysfs файловая система, с информацией об устройствах.
  • /dev: файловая система в оперативной памяти, где файлы устройств автоматически создаются udev на основе доступных аппаратных средств.
  • /dev/pts: файловая система специального назначения, содержащая файлы устройств для выполнения эмуляторов терминала.
  • /dev/shm: файловая система в оперативной памяти используется во внутренних целях стандартной библиотекой системы.
  • В зависимости от того, какие компоненты системы у Вас есть выполнение, можно видеть другие файловые системы специального назначения такой как binfmt_misc (используемый внешней подсистемой ядра формата исполняемого файла), fusectl (используемый FUSE), nfsd (используемый ядром сервер NFS), …
  • Любая файловая система, явно упомянутая в /etc/fstab (и не отмеченный noauto) смонтирован как часть процесса начальной загрузки.
  • Любая файловая система автоматически смонтирована HAL (или эквивалентная функциональность) после вставки съемного устройства, такого как флеш-карта.
  • Любая файловая система, явно смонтированная с mount команда.

¹ Неофициально говорящий здесь.
² Initrd и такой выходят за рамки этого ответа.
³ Это непохоже на Windows, который имеет отдельную иерархию для каждой файловой системы, например. c: или \\hostname\sharename.

8
17.11.2010, 20:17
3 ответа

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

  • Только регулярные файлы имеют расширение, не каталоги или имена устройств. Простой факт того, чтобы быть каталогом или устройством является достаточным признаком типа файла.
  • Исполняемые файлы, которые предназначены, чтобы быть вызванными непосредственно, не имеют расширения. Простой факт того, чтобы быть исполняемым файлом является достаточной информацией для пользователя, и ядро не заботится об именах файлов.
  • Файлы, начинающиеся со слова всеми заглавными буквами, часто являются текстовыми файлами, например. README, TODO. Иногда существует дополнительная часть, которые указывают на подкатегорию, например. INSTALL.linux, INSTALL.solaris.
  • Файлы, имя которых начинается с точки, являются конфигурацией или указывают файлы конкретного приложения и часто не имеют расширения, например. .bashrc, .profile, .emacs.
  • Существует несколько традиционных случаев, например. Makefile.

(Это общие падежи, не твердые правила.)

Большинство форматов двоичного файла также содержит некоторый заголовок, который описывает свойства файла и обычно позволяет формату файла быть определенным через магические числа. file управляйте смотрит на эту информацию и показывает Вам ее предположения.

Иногда расширение файла дает больше информации, чем формат файла, иногда это наоборот. Например, много форматов файлов состоят из архива zip: библиотеки Java (.jar), документы OpenOffice (.odt, …), документ Microsoft Office (.docx, …), и т.д. Другим примером являются файлы исходного кода, где расширение указывает на язык программирования, который может быть трудным для компьютера предположить автоматически от содержания файла. С другой стороны некоторые расширения дико неоднозначны, например .o используется для файлов скомпилированного кода (объектные файлы), но контроль содержания файла обычно легко показывает, для какой системы типов машины и операционной системы объектный файл.

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

Иногда изменение расширения файла может позволить Вам говорить, как файл должен быть интерпретирован, когда два форматов файлов почти, но не совершенно идентичны. Например, веб-сервер мог бы рассматривать .shtml и .html по-другому, первый подвергающийся некоторой предварительной обработке серверной стороны, последний, обслуживаемый как есть.

В случае архивов gzip, gzip не повторно сожмет файлы, имя которых заканчивается в .gz, .tgz и несколько других расширений. Тем путем можно работать gzip * для сжатия каждого файла в каталоге, и уже сжатые файлы не изменяются.

17
27.01.2020, 20:08
  • 1
    , содержащему сценарии демона, также иногда дают.d расширение, например, init.d, cron.d, и т.д. –  Lie Ryan 16.08.2014, 13:06

Им, возможно, не понадобится расширение, но оно уверенный делает идентификацию их легче в выводе ls.

8
27.01.2020, 20:08
  • 1
    Точно. Обычно нет, "содержат мою руку" флаг к tar, таким образом, необходимо сказать это, какой архив Вы имеете. –  Kevin Cantu 17.11.2010, 22:17

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

Если я дал Вам названный файл file, Вы не могли бы знать, как открыть этот файл. Однако, если я дал Вам названный файл file.tar.gz или file.tar Вы могли быстро и легко понять это.

3
27.01.2020, 20:08
  • 1
    использует больше, чем просто расширение файла для определения типа файла. tar.gz файл без расширения будет все еще обычно получать необычный символ. –  Steven D 17.11.2010, 21:03

Теги

Похожие вопросы