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