Intereting Posts
Как безопасно разрешить scp, но не ssh есть ли способ получить более новые пакеты при использовании дистрибутива debian? Использовать трекер от поставщика поиска гномов (для поиска в «Деятельности») | GNOME 3.16 Perl: общий способ определения размера блочного устройства (Re-) Создание GPT из существующих разделов на Debian 8 Создать небольшой высококачественный GIF / APNG из набора PNG Как установить последнюю версию Python на Debian отдельно или обновить? Rsync за исключением .svn папок и их содержимого? systemd: запуск сервисов по запросу, таких как postgresql и mysql, которые еще не поддерживают активацию на основе сокетов Ввод пароля отвечает только Ctrl + D, и пароль не может быть прочитан Печать в Debian Jessie Without avahi Преобразовать одну Fedora в другую? Разрешения cd и ls запрещены Значение записей в файле / etc / securetty? Замените несколько строк строкой, когда номера строк хранятся в файле

Однородность файлов Linux

Как это происходит, если вы находитесь в папке с различными файлами — изображениями, бинарными исполняемыми файлами, скриптами, даже каталогами, zip-файлами, почти обо всем – как это происходит, когда вы нажимаете ls -l , вы получаете результат что похоже (для формы) для всех файлов?

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

И как получится, что файлы, которые вы ожидаете, не будут иметь никакого отношения к Unix или Linux, не представляют проблемы? Есть ли как препроцессор файловой системы для работы с файлами из мира Windows? Или файлы, которые кросс-платформенные, что это не нужно? (Это было бы что-то!)

Есть ли способ увидеть этот скрытый (?) Слой? (Даже HTML (не говоря уже о Lisp и т. Д.) Трудно понять, просто прочитав об этом, но когда вы это видите, вы сразу поймете.)

Вы получили почти точно правильные ответы. Вам просто нужны детали.

По большей части (исключение специальных файлов) каждый файл обрабатывается точно так же, и каталоги (например, «папки») могут быть фактически реализованы в виде файлов. Файлы на самом деле всего лишь серия блоков диска. «Метаданные», которые вы пишете, называются «inodes» (см. Раздел « Что такое Superblock, Inode, Dentry, File и What is inode на этом сайте»). Каталоги (или «папки») – это просто способ сопоставления имени файла с inode. Метаданные, кроме имени (тип файла, разрешения, владельцы и т. Д.), Живут в inode. Эти метаданные находятся в двоичной форме, в основном для компактности и скорости доступа: синтаксический анализ XML или даже любого другого текстового формата займет слишком много времени.

Вы можете увидеть текстовое представление метаданных файла с помощью команды stat /bin/cat : stat /bin/cat вас заинтересовать. stat – это команда GNU, поэтому она не будет общедоступной, но большинство дистрибутивов Linux должны иметь ее.

Что касается «чужих» файлов, то концепция файла / inode / directory происходит от времени, когда изменчивость операционных систм была намного больше, чем сегодня. Разработчики Unix и его исходной файловой системы имели большой опыт работы с тем, что сегодня будет считаться очень странными операционными системами и файловыми системами. Концепция file / inode / directory почти наверняка воплощает в себе все их переживания, и поэтому мягкие вариации в «том, что является файлом», который обеспечивают сегодня более однородные ОС, на самом деле не проблема. Для получения этого от 20 лет назад см. «Файловая система» принадлежит в ядре . Немного более свежий пример см. В разделе Hideoous Name . Это сообщение в блоге Russ Cox, также прочитайте статью Роб Пайка в блогах, а также. Вы получите от него просветление.

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

Для каждого файла система также хранит некоторые метаданные . Метаданные не зависят от содержимого файла; на самом деле вы можете сказать, что контент является одним из этих элементов метаданных (но его обычно рассматривают отдельно, потому что контент имеет переменный размер и потенциально может быть очень большим). Какие метаданные хранятся, зависит от типа файловой системы . Файловые системы Unix обычно предоставляют то, что вы видите в ls : разрешениях, времени модификации и т. Д. Имя файла также является частью метаданных со слегка особым статусом: оно уникально, т. Е. Не может быть двух файлов с одинаковым именем (в том же каталоге).

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

Путь к файлу указывает, как найти его, начиная с корневого каталога. Каждому каталогу, который нужно пройти, задается поочередно, переходя от корня вниз, с косой чертой / символами после каждого имени каталога. Например, /usr/bin/env означает запуск в корневом каталоге / , перейдите в поддиректорию usr , перейдите в подкаталог bin и найдите элемент env в этом подкаталоге.

Когда вы указываете содержимое каталога, ядро (включая драйверы файловой системы) выполняет задание чтения байтов, представляющих каталог на диске, и преобразует их в список имен файлов, метаданных и содержимого. Программа ls вызывает функцию opendir для открытия каталога, а затем делает повторные вызовы readdir для чтения каждой записи в каталоге по очереди, то есть для получения списка имен файлов в этом каталоге (включая подкаталоги и другие специальные файлы). В ls -l программе ls требуется больше информации о файле, чем просто имя, поэтому он также вызывает stat для извлечения метаданных каждого файла.

Некоторые операционные системы позволяют просматривать представление на диске на диске с любой программой просмотра текста, такой как cat . Однако Linux не позволяет вам. Вы можете использовать программу debugfs для изучения файловой системы (используйте ее только в режиме только для чтения!).