Почему Nautilus показывает файл и его жесткую ссылку больше, чем просто файл?

Когда я создаю жесткую ссылку на файл размером 2 КБ (называемый fun), Наутилус показывает эту жесткую ссылку (называемую fun-hard) как файл с таким же размером. Эти два файла указывают на один и тот же индекс , поэтому их объединенные свойства также должны отображать только 2 КБ. Но вместо этого Наутилус говорит, что их общий размер составляет 4 КБ. Почему?

2
задан 4 October 2014 в 11:18

1 ответ

Конечно, при создании жесткой ссылки на файл тогда и исходный файл и жесткая ссылка указывают на тот же inode. На самом деле оба эквивалентны - для системы нет такой вещи как "оригинал" и "ссылка". Они - просто две точки доступа к тому же inode. Следовательно, они не поднимают больше пространства вместе, чем если бы у Вас была только одна точка доступа (за исключением самого крошечного бита информации в файловой системе, где два указателя на некоторый inode хранятся вместо только одного).

можно легко подтвердить это при использовании утилиты файловой системы низкого уровня такой как, например, du. Например, здесь у меня есть каталог с единственной песней ( FOSS Yeaaaah! , потрясающая песня о Ubuntu Ben Kerensa) приблизительно 2,1 МБ:

$ ls -li 
total 2124
6424897 -rw-rw-r-- 1 malte malte 2162937 Aug  7 12:53 FOSS Yeaaaah!.mp3
$ du -ch * # display size of all files, and total size
2.1M    FOSS Yeaaaah!.mp3
2.1M    total
$ du -h . # display size of current directory
2.1M    .

, Когда я создаю жесткую ссылку, скажите Link.mp3 в файл, du на самом деле распознает, что оба имен файлов указывают на тот же файл, и только отображает одного из обоих:

$ ln FOSS\ Yeaaaah\!.mp3 Link.mp3
$ ls -li
total 4248
6424897 -rw-rw-r-- 2 malte malte 2162937 Aug  7 12:53 FOSS Yeaaaah!.mp3
6424897 -rw-rw-r-- 2 malte malte 2162937 Aug  7 12:53 Link.mp3
$ du -ch *
2.1M    FOSS Yeaaaah!.mp3
2.1M    total
$ du -h .
2.1M    .

(Это отображает только тот, который на первом месте в алфавитном порядке - имел, я назвал hardlink A.mp3, тогда du отобразит тот один).

поведение, которое Вы испытываете, является по всей вероятности ошибкой или погрешностью в любом программном обеспечении, которое Вы используете для размеров дисплейного файла. Если это - Nautilus (стандартный файловый браузер в типичной установке Ubuntu), то я могу подтвердить то поведение. См. этот отчет об ошибках:

https://bugs.launchpad.net/ubuntu / + источник/наутилус / + ошибка/644403

Это может просто быть "функция, не ошибка" - поскольку Nautilus пытается сохранить вещи простыми для среднего пользователя, это просто игнорирует жесткие ссылки. Который не может всегда быть лучшей идеей. Заключение в кавычки из отчета об ошибках:

Nautilus пытается сохранить вещи простыми. Вот почему это не предлагает способ сделать hardlinks. Но если вещи являются уже сложными - если hardlinks уже присутствуют - просто игнорирование их может привести к собственным проблемам.

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

5
ответ дан 4 October 2014 в 11:18

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

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