Папка Documents имеет 7 жестких ссылок

При попытке команда

me@me:~$ ls -hl | head -5                                                                 
total 60M
-rw-r--r-- 1 me me  250 Jan 16 11:43 $tty
-rw-r--r-- 1 me me    0 Jan 16 11:41 1
drwxr-xr-x 2 me me 4.0K Jan 16 15:28 Desktop
drwxr-xr-x 7 me me 4.0K Jan 13 14:33 Documents

Найденный этим Documents каталог имеет 7 жестких ссылок, какова причина такого дублирования?

6
задан 17 January 2019 в 04:52

2 ответа

Если каталог Documents имеет семь жестких ссылок, это означает что:

  • Одна жесткая ссылка с имени Documents в его родительском каталоге.

  • Одна жесткая ссылка от записи . в Documents самостоятельно.

  • Пять жестких ссылок от записей .. в пяти подкаталогах.

11
ответ дан 23 November 2019 в 07:21

Столбец № 2 в выводе ls -l показывает количество жестких ссылок (?)

Каталоги псевдонима папок не могут быть трудно связаны (но они могут быть связаны с с символьными ссылками). Число в том же месте как количество жестких ссылок для файлов означает что-то еще, связанное с тем, в каком количестве пространства папка нуждается в 'таблице' файловой системы, потому что число растет с количеством подпапок.

Жесткие ссылки означают, что на данные в определенном inode указывает больше чем одно имя файла (таким образом, трудно связанные имена совместно используют то же inode число).

Существует подробное объяснение Sergiy Kolodyazhnyy в этой ссылке и этом комментарии его,

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

Столбец № 5 в выводе ls-l показывает размер файла (?)

Но что относительно папок - большинство папок занимает 4 кибибита, но когда существует много файлов (и подпапки), имена не могут быть сжаты в 4 кибибита, и больше места будет выделено, 8 кибибитов, 12 кибибитов и т.д. Мой 'худший' случай является папкой кэша Firefox с 'размером' 4 012 кибибитов. Это содержит 58 971 файл, и эти файлы занимают 2,2 гибибайта. Это напоминает мне, что получает время ясное кэш Firefox ;-)


Можно проверить, что inode число папки Documents уникально, никакой другой файл или папка не совместно используют его. Можно проверить другие папки также.

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

  • Определите inode число (Вы получите другое число, чем I),

    $ls -lid ~/Documents/
    3017032 drwxr-xr-x 2 sudodus sudodus 4096 feb 28  2016 /home/sudodus/Documents/
    
  • Поиск файлов/папок с этим inode число (и стараются избегать слишком многих выводов предупреждения/ошибки),

    $ sudo find / -path /proc -prune -o -ls | grep ' 3017032 '
    [sudo] password for sudodus: 
      3017032  4 drwxr-xr-x 2 sudodus  sudodus  4096 feb 28  2016 /home/sudodus/Documents
    find: ‘/run/user/1000/gvfs’: Permission denied
    

    или

    $ sudo find / -inum 3017032  -ls
      3017032  4 drwxr-xr-x  2 sudodus  sudodus  4096 feb 28 2016 /home/sudodus/Documents
    find: '/proc/1643/task/1643/net': Invalid argument
    find: '/proc/1643/net': Invalid argument
    find: '/proc/1741/task/1741/net': Invalid argument
    find: '/proc/1741/net': Invalid argument
    find: '/proc/4021': No such file or directory
    find: '/proc/4038': No such file or directory
    find: '/proc/4039': No such file or directory
    find: '/run/user/1000/gvfs': Permission denied
    

Следующий пример показывает соответствующий случай с тремя трудно связанными именами файлов.

  • Определите inode число

    $ ls -il owned\ by\ root
    56492055 -rw-r--r-- 3 root root 1048576 jan 16 23:41 'owned by root'
    
  • Поиск в файловой системе (в этом случае мой data раздел)

    $ sudo find /media/multimed-2/ -inum 56492055
    [sudo] password for sudodus: 
    /media/multimed-2/test/test0/owned by root hard-linked
    /media/multimed-2/test/test0/owned by root
    /media/multimed-2/test/test0/sub/owned by root
    
3
ответ дан 23 November 2019 в 07:21

Другие вопросы по тегам:

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