структура каталогів проти файлової системи


10

Чим відрізняється структура каталогу та файлова система ?
Unix / Linux каталоги і файлова система виглядає наступним чином :

Наступні два каталоги, очевидно, нам відомі каталоги.

  /home/abc/xyzdir1 --is a directory
  /home/abc/xyzdir2 -- is a directory

наступні три зразки говорять про файлову систему.

/proc -- is a file system
/ -- is a file system
/bin -- is a file system

Як я можу визначити, яка з них - файлова система та каталог із наведених вище фрагментів коду?


Файлова система містить один або кілька каталогів. Кожен каталог є частиною файлової системи (включаючи /proc, /і /binз ваших прикладів), тому мені не зрозуміло, як ви хочете визначити "різницю".
roaima

@roaima, будь ласка, знайдіть фрагмент коду для зразка
Premraj

Ваше питання все ще неоднозначне. /proc, /і /binце каталоги. Вони не є "файловими системами". Ви, мабуть, маєте на увазі, що хочете визначити, які каталоги також є точкою монтажу (коренем) їх файлової системи?
roaima

Відповіді:


8

Люди не надто ретельно використовують файлову систему . У своїх прикладах я хотів би сказати , що /, /binі /procфайлові системи , так як весь розділ (як /dev/sdb1) монтується на цих каталогах. Моя система Arch Linux не має /binфайлової системи, тому цей приклад не є ідеальним, але ...

% ls -lid /proc /home /boot /
2 drwxr-xr-x  17 root root 4096 Feb 24 12:12 //
2 drwxr-xr-x   4 root root 4096 May 16 14:29 /boot/
2 drwxr-xr-x   5 root root 4096 Mar 14 18:11 /home/
1 dr-xr-xr-x 116 root root    0 May 16 17:18 /proc/

Inode номер 2 традиційно є "кореневою" inode цілої файлової системи на диску (що є іншим використанням фрази). /, /bootі /homeвсі мають inode номер 2, в той час /proc, як ядро ​​представлене повністю і не має присутності на диску, має inode 1. Ці числа inode вказують на те, що ціла файлова система на диску або віртуальна файлова система монтується з використанням цього імені.

Речення " /home/abc/xyzdir1- це каталог", в основному означає, що жодна дискова файлова система не змонтована з цим ім'ям. Якщо ви виконаєте таку ж ls -lidкоманду в каталозі, ви отримаєте щось подібне:

 % ls -lid /home/bediger/src
3670039 drwxr-xr-x 29 bediger bediger 4096 May 17 19:57 /home/bediger/src/

Номер введення 3670039 - це все те, що inode було виділено з дискової файлової системи, встановленої (на моїй машині) в /home.

Ви також можете знайти файлові системи, викликавши mountкоманду. У ньому перераховані всі змонтовані файлові системи та місце їх встановлення.


Номер "магічний вклад" характерний для файлових систем серії ext2. Це не стосується більшості (усіх?) Інших, таких як xfs або btrfs.
psusi

Я б сказав , що /, /binі /procфайлові системи , так як весь розділ ... встановлений на цих каталогах. Це не відповідає дійсності /proc, як випливає з відповіді.
Макс Нанасі

1
@MaxNanasy - враховуючи, що два значення "файлової системи" є загальноприйнятими (1. Назви та розташування каталогів у структурі дерева та 2. Формат на диску та компонування даних, структурованих файлами та каталогами, разом із код для його підтримки та використання), досить важко придумати термін, який є зрозумілим, не визначеним круговим способом, і технічно правильним. Я вирішив піти з зрозумілою і використав "розділ" замість інших термінів. Я пропоную вам запропонувати більш правильні терміни (терміни), я в збитку.
Брюс Едігер

4

Загрожуючи сильним надмірним спрощенням,

  • Файлова система схожа на двигун вашого автомобіля та інші внутрішні системи,
  • Структура каталогу схожа на карту місць, де ви їдете.

Оскільки мене просили на біс,

  • Файлові системи схожі на механіку (деталі реалізації) розподілу / розповсюдження аудіо / відео сигналів: аналоговий радіочастотний радіочастот, цифровий радіочастотний мовлення, кабель, Інтернет, відеокасета, відеодиск тощо.
  • Структура каталогів схожа на зміст телевізійного програмування та його категоризацію, наприклад, на комедії, драми, новини, документальні фільми, ігрові шоу, спорт тощо.

Якщо ви хочете код, див. Першу половину цієї відповіді на тему Як визначити, чи належить файлова система Linux до запущеної системи - тієї частини, на яку перевіряється перевірка root_dir. Це просто те, що сказав Брюс; перевірка того, що це каталог та перевірка того, чи є його номер inode рівним 1 або 2.


1
Добре ELI5, але чи можете ви додати фрагмент коду, відповідаючи. Як я можу визначити, яка з них - файлова система та каталог?
користувач1717828

4

Як я бачу, файлова система, в сенсі UNIX, - це спосіб реалізації дерева каталогів (структури каталогів), а точніше, способу реалізації API файлової системи UNIX. Коренева файлова система підтримується однією конкретною реалізацією, і кожного разу, коли ви входите в каталог монтажу, ви вводите піддерево, яке підтримується чимось іншим.

Інтерфейс завжди однаковий, але в одному випадку у вас є певний розділ диска на задньому кінці, в іншому випадку буде програма, яка ніколи навіть не записує на запам'ятовуючий пристрій. procФайлова система буде підтримана програмним забезпеченням , який надає Kernel нутрощів; tmpfsбуде підкріплено програмним забезпеченням , яке пише в оперативну пам'ять, і інші файлових системи можуть написати в мережу або в інших місцях.

У не-UNIXy сенсі цього слова файлова система - це спосіб організації зберігання даних. ext4, btrfs, fatІ ntfsфайлові системи в цьому сенсі, але і в UNIXy чуттєві вони реалізують API файлової системи. procне класифікується як файлова система у цій більш обмеженій парадигмі, оскільки вона не організовує зберігання даних.

TL; DR:

  • структура каталогу / дерево = передній кінець
  • файлова система = зворотній кінець

2

Хоча прийом каталогів однозначний, коли йдеться про файлові системи, файлова система може означати різні речі залежно від того, про що ви говорите.

У ваших прикладах усі перелічені шляхи - це каталоги, але лише деякі з них є також точками монтування файлових систем.

Ви можете скористатися dfкомандою для відомого, у якій файловій системі є даний файл або каталог, а також mountкоманда в більшості реалізацій Unix і Linux, щоб визначити, які файлові системи є на вашому комп'ютері, їх тип та точки монтажу. наприклад:

$ df /proc
Filesystem     1K-blocks  Used Available Use% Mounted on
proc                   0     0         0    - /proc
$ mount | grep -w /proc
/proc is a file system of type proc

Заява /bin- файлова система сумнівна, /binмайже завжди встановлена ​​на /.

$ df -k /bin
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda5      206292664 180687360  15103212  93% /
$ mount | grep -w /
/dev/sda5 on / type ext4 (rw,errors=remount-ro)

1

Спочатку виправлення ваших припущень щодо файлової системи та каталогу. Файлова система містить один або кілька каталогів. Використання ваших прикладів /proc, /і /binкаталоги. Вони самі по собі не є "файловими системами", але можуть бути коренем їх відповідної файлової системи.

Якщо ви хочете визначити, які каталоги також є точкою монтажу (коренем) їх файлової системи, ви можете використовувати щось подібне:

F="$PWD"    # The directory to be tested
if test -d "$F"
then
    echo "$F is a directory"
    test "X$(stat --format '%m' "$F")" = "X$PWD" && echo "$F is a mountpoint"
fi

1

Файлова система - це методологія логічної організації та зберігання великої кількості даних таким чином, щоб системою було легко керувати. файлова система складається з файлів, відносин до інших файлів, а також атрибутів (тип файлу, назва файлу, розмір файлу, власник файлу, часова мітка файлу) кожного файлу.

Довідники : наприклад, файлова система Unix по суті складається з файлів і каталогів. Каталоги - це спеціальні файли, які можуть містити інші файли. найпопулярніший каталог /(слэш), каталоги прямо під ним - системні каталоги. введіть тут опис зображення

/ Корінь файлової системи Linux

/bin Бінарні файли, що виконуються, зберігаються тут

/boot Тут пов'язані файли завантаження

/dev Тут зберігаються файли пристроїв

/etc Тут зберігаються файли конфігурації для всієї системи

/home Місце для домашніх каталогів постійних користувачів

/lib64 Тут зберігаються бібліотеки бінарних виконуваних файлів

/mnt Тимчасова точка кріплення для DVD-Rom, флешки.

/optТут встановлені додаткові програми, як файли програм у Windows

/proc Файлова система псевдо ядра

/root Домашній каталог суперкористувацького коріння

/sbin Тут зберігаються файли системних бінарних файлів, що виконуються

/tmp Тут зберігаються тимчасові файли

/usr Файлова система користувача

/var Тут зберігаються файли змінних

/srv - це папка, що обслуговується, містить дані про сайти, які обслуговуються цією системою.

src та ін

Наступні два каталоги - це визначені користувачем каталоги:

 /home/abc/xyzdir1 --is a directory
 /home/abc/xyzdir2 -- is a directory

Ця діаграма жахливо застаріла. FHS 3.0 був випущений у червні 2015 року. Слід також зазначити, що FHS застосовується лише до дистрибутивів Linux.
fpmurphy

1

Якщо вам просто потрібна команда, яка повідомляє вам, чи шлях - це каталог, чи не використовується точка монтування (1) .

Для мене це друкує

$ mountpoint /
/ is a mountpoint
$ mountpoint /bin
/bin is not a mountpoint
$ mountpoint some-file
some-file is not a mountpoint

Хороша річ, що статус виходу знову вказує те саме, щоб ви могли використовувати його у своїх сценаріях так:

if mountpoint "$foo" >/dev/null; then
  : do mountpoint stuff
elif [ -d "$foo" ]; then
  : do directory stuff
elif [ -e "$foo" ]; then
  : do file stuff 
else
  echo "$foo does not exist!" >/2
fi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.