LINUX.ORG.RU

hardlink


0

0

Вольный перевод english книги про linux+ (comptia)
Файловая система имеет 3 основных секции:
*The superblock
*The inode table
*data blocks

superblock содержит общую инфу(кол-во: inode; data blocks ...)
inode table состоит из кучи inodov, каждый inode описывает файл или дир-ю и содержит:
*уникальный inode id
*размер файла
*размещение data block'ов
*дата последнего изменения
*разрешения и кто владеет

когда файл удаляют, только inode удаляется
дата и имя файла хронятся в data block'ах на которые ссылаются inod'ы

Файлы с hardlink являются копиями друд друга и совместно используют
один и тотже inode и номер inode'а
Файлы имеют один и тот же размер и когда один файл изменяется другие
обновляются
-----------------
Это действительно так?
получается каждый раз когда я создаю hardlink, я будто копирую файл,
в резултате уменьшаю место на диске(судя по книге)?
(был dvd на 4гб стал 8гб)




anonymous

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

не совсем, можете думать о hardlink-ах, как о ссылках в языке программирования с GC. Создание дополнительной ссылки не приводит к копированию объекта. Кроме того, очевидно, при изменении объекта по одной ссылке, он меняется и по другой, т.к. объект суть один и тот же. Как только число ссылок достигает 0 объект съедается GC (файл удаляется)

phoenix ★★★★
()

Читай еще раз, файл физически лежит на винте в одном экземпляре, но на него ссылаются из разных мест дерева файловой системы.

dn2010 ★★★★★
()
Ответ на: комментарий от dn2010

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

хакер спец 47.

niikita
()
Ответ на: комментарий от phoenix

Вы выше писали

> Создание дополнительной ссылки не приводит к копированию объекта

А исходя из статьи получается, что создается копия.

Где правда?

niikita
()
Ответ на: комментарий от niikita

> А исходя из статьи получается, что создается копия.

А вот и нет (: Когда удаляется файл, фактически удаляется одна из ссылок на inode и уменьшается значение reference count для этого inode, поэтому вовсе не обязательно создавать копию файла. Как только число ссылок достигает 0, соотв. inode и связанная с ним область даннах "освобождаются".

На буквальную точность описания не претендую.

Читайте http://www.tldp.org/LDP/tlk/fs/filesystem.html и http://en.wikipedia.org/wiki/Inode до просветления

phoenix ★★★★
()
Ответ на: комментарий от Lockywolf

> HARDLINK - второй INODE для файла. 

Нет. inode у них один.
hardlink - еще одно имя для файла, ссылающееся на тот же самый inode.
$ touch a
$ ln a b
$ ls -i
648495 a
648495 b

bigbit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.