LINUX.ORG.RU
ФорумTalks

хардлинк на симлинк


0

1

Классно, оно работает! Можно создать жёсткую ссылку на символьную ссылку и потом это использовать в каких-нибудь своих целях. Осталось только научиться редактировать симлинки и можно показывать фокусы типа «я меняю этот симлинк и второй симлинк тоже меняется». Это почти как распилить ассистентку в чёрном ящике!

★★

Мы все за тебя рады.

Deleted
()

Смотрите в следующем треде: name_no открывает для себя именованные каналы

nu11 ★★★★★
()

да, чего в этом удивительного?

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

почему не должно было работать?

Оно должно было работать, но могло не работать по любой причине. Сам знаешь, в этих ваших линуксах...

Вот иллюстрация из соляры, почему оно могло не работать: [смеялся всем офисом] SunOS например

name_no ★★
() автор топика

name_no

хардлинк на симлинк Классно, оно работает!

работает конечно, но ЗАЧЕМ?

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

name_no

Оно должно было работать, но могло не работать по любой причине. Сам знаешь, в этих ваших линуксах...

что? если нихрена не понимаешь, как это работает, то результат будет хрен-знает-какой. Это очевидно.

name_no

Вот иллюстрация из соляры, почему оно могло не работать: [смеялся всем офисом] SunOS например

не понял, причём тут?

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

true_admin

симлинки на симлинки тоже работают и это гораздо более прозрачная схема.

а вот симлинк1 на симлинк2 на симлинк1 не работает, топикстартер в печали... за то хардлинк1 на хардлинк2 на хардлинк1 работает, ТС радуецо как дитя!

drBatty ★★
()

По моему календарю до пятницы еще далеко.

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

Для коротких симлинков можно было не занимать отдельный айнод, а писать в айнод объемлющей директории.

tiandrey ★★★★★
()
Ответ на: КО объясняет от tiandrey

поэтому хардлинка на хардлинк по сути не бывает.

тсс, не порти праздник

true_admin ★★★★★
()
Ответ на: КО объясняет от tiandrey

tiandrey

Хардлинк указывает на айнод, поэтому хардлинка на хардлинк по сути не бывает.

имя файла - точно такой-же хардлинк. Вообще хардлинки - другие имена файлов. А т.к. имена не имеют имён, то я высказал бред. Может ТСа это чему-то научит...

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

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

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

Через debugfs, что ли?

при чём тут оно? Оно просто работает. Цикличность и корректость симлинков не проверяется.

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

true_admin

с папками работало...

что, вправду что-ли? ой, а в правду. но дело тут не в мистических «папки», а в том, что вы создаёте битую ссылку dir/l2 -> l2, т.е. саму на себя. file пишет symbolic link in a loop.

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

но дело тут не в мистических «папки», а в том, что вы создаёте битую ссылку dir/l2 -> l2, т.е. саму на себя.

дело тут в том что ядро и файлухе по-барабану на корректность симлинков.

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

tiandrey

Имя файла != номер айнода. Симлинк указывает на имя файла, хардлинк - на номер айнода.

да не указывает оно никуда. Хардлинк == имя файла число имён/хардлинков можете посмотреть командой ls -l. У каталога всегда 2 или больше хардлинка. (в каждом подкаталоге есть другое имя родителя две точки)

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

tiandrey

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

эх... хардлинк/имя действительно ссылается номером inode на сам инод. Любое имя, сколько-бы их не было. Таблица соответствия и есть «папка» по вашему.

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

true_admin

дело тут в том что ядро и файлухе по-барабану на корректность симлинков.

дело тут в том, что вы сделали совсем не то, что ожидалось. вместо создания симлинка1 на симлинк2 вы создали симлинк3, который внутри каталога, и ссылается сам на себя. Загляните, и убедитесь. называется он симлинк2

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

да не указывает оно никуда.
эх... хардлинк/имя действительно ссылается номером inode на сам инод.

Ну ты таки определись уже, ссылается или нет :3

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

подумаешь, я недавно открыл для себя арифметические операции в баш-скриптах

darkshvein ☆☆
()
Ответ на: комментарий от tiandrey

tiandrey

Ну ты таки определись уже, ссылается или нет :3

каталог == таблица. В нём множество строчек (2 как минимум), и ровно 2 столбца.В первом столбце записано имя, во втором столбце записан номер инода.этот номер можно считать ссылкой на сам инод (сам инод это структура из 256и или 512и байтов, где-то на диске). Очевидно, что в таблице могут быть имена, с одним и тем-же номером инода. Кроме того, в разных таблицах могут быть одни и те-же номера. Ну и наконец, есть такие иноды, которых нет ни в одной таблице.

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

Не надо мне сочинений на сто слов, ты ответь «да» или «нет» на вопрос «ссылается ли хардлинк на инод?». Я прекрасно представляю, как устроены каталоги в никсовых ФС.

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

tiandrey

Не надо мне сочинений на сто слов, ты ответь «да» или «нет» на вопрос «ссылается ли хардлинк на инод?». Я прекрасно представляю, как устроены каталоги в никсовых ФС.

если представляешь, зачем спрашиваешь? конечно да, ибо хардлинк == имя, а в таблице(каталоге) хранятся не сами иноды, а только ссылки(номера) на иноды.

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

Спрашиваю, чтобы услышать твой окончательный ответ. Я весь сыр-бор начал из-за того, что «за то хардлинк1 на хардлинк2 на хардлинк1 работает» - бред, не бывает хардлинков на хардлинки.

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

совсем не то, что ожидалось

ну я хз что ты ожидал :). Естесно симлинк внутри симлинка низзя т.к. симлинк это простой текстовой файл с аттрибутом «я симлинк» в теле которого просто путь до другой сущности.

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

tiandrey

Спрашиваю, чтобы услышать твой окончательный ответ. Я весь сыр-бор начал из-за того, что «за то хардлинк1 на хардлинк2 на хардлинк1 работает» - бред, не бывает хардлинков на хардлинки.

дык потому-что самих хардлинков не бывает. Что такое переменная например в C? Это какая-то именованная область памяти. А что такое ссылка (в си это указатель)? А это именованный номер некоторой области памяти. Т.е. переменная в С это на самом деле ссылка, а указатель в С это на самом деле указатель на указатель.

С ФС точно такая-же беда: «файл» это вовсе не «именованная область на диске», как пишут википедики, а на самом деле, это именованная ссылка, на область на диске. Если понять простую вещь, что само по себе понятие «файл» - ссылка, то всё станет логичным: хардлинки - суть ссылки на «файлы», а именно на занятые inode. «хардлинк на хардлинк» действительно бред, и тем не менее, его можно сотворить. Правда получится не хардлинк на хардлинк, а ещё один хардлинк на тот же файл. Потому и написал «работает». Т.е. ТС может провернуть такую операцию, и получить желаемый результат. (хотя на самом деле, произошло совсем другое).

В принципе, ТС прав - „достаточно научится редактировать симлинки, что-бы показывать фокусы“. Жаль, что он не написал, в каком цирке за такую клоунаду заплатят.

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

true_admin

ну я хз что ты ожидал :)

симлинк1 на симлинк2 на симлинк1 я ожидал. Получил симлинк2 на симлинк1 на каталог, и в нагрузку внутри этого каталога симлинк3, который указывает сам на себя.

true_admin

Естесно симлинк внутри симлинка низзя т.к. симлинк это простой текстовой файл с аттрибутом «я симлинк» в теле которого просто путь до другой сущности.

не такой уж и простой - большинство симлинков занимают 0 байтов, ибо ссылка лежит в самом inode, а не в областях с данными. Но ты таки прав - это файл, который содержит в себе одну ASCIIZ строку.

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