Являются ли жесткие ссылки эквивалентными ярлыкам Windows?

Wikipedia определяет жесткую ссылку как:

запись в каталоге, которая связывает имя с файлом в файловой системе. (Каталог сам по себе является особым видом файла, который содержит список таких записей.) Этот термин используется в файловых системах, которые позволяют создавать несколько жестких ссылок для одного и того же файла.

Мне интересно, эквивалентно ли понятие жесткой ссылки концепции Windows Shortcut.

Если жесткие ссылки не эквивалентны ярлыкам, то какая самая близкая функция Windows к жестким ссылкам ?

1
задан 11 March 2014 в 22:05

4 ответа

Хорошее объяснение того, какие мягкие и жесткие ссылки есть, но нужно уточнить одну вещь.

Ярлыки Windows эквивалентны или не похожи ни на мягкие ссылки, ни на жесткие ссылки. На уровне файловой системы это всего лишь файлы. Это оболочка, которая понимает их структуру и интерпретирует их как ссылки. Ярлыки Windows также могут указывать на объекты в пространствах имен оболочек, которые не связаны с файловой системой (принтеры, элементы панели управления, виртуальные папки).

Ярлыки Windows, в дополнение к имени объекта файловой системы , содержат следующую информацию: PIDL (непрозрачный двоичный «путь» в пространстве имен оболочки), описание, горячая клавиша, значок, рабочий каталог. Windows также добавляет идентификаторы объектов NTFS, если используется файловая система NTFS, для исправления сломанных ярлыков.

Грубым эквивалентом ярлыка Windows является файл ни . См. Этот вопрос в SuperUser: есть ли в Linux эквивалент .lnk?

18
ответ дан 24 May 2018 в 10:56
Нет. В Linux все работает по-другому.

Каждый файл представлен объектом с именем 'inode'. У каждого inode есть число (ID), связанное с ним.

Как известно, люди не умеют запоминать цифры, но имена. (Так развивались телефонные книги)

Поэтому на картинке появилось имя файла, чтобы дать каждому иноду человеку доступное для чтения имя. В основном, hardlink связывает имя файла с inode. Индед может иметь несколько жестких ссылок. Если для конкретного индексного дескриптора нет жестких ссылок, дисковое пространство, используемое inode, может быть перераспределено для новых файлов. Это означает, что для каждого файла должна быть хотя бы одна жесткая ссылка. Имя файла (визуализированное как имя файла / значок, которое вы видите в файловом браузере) само по себе является жесткой ссылкой.

В Windows ярлык представляет собой отдельный файл (* .lnk-файл). Он содержит информацию об исходном файле (понятно, путь к файлу). В восприятии Linux ярлык Windows будет другим inode, привязанным к имени файла, заканчивающегося на .lnk.

6
ответ дан 24 May 2018 в 10:56
  • 1
    NTFS действительно работает очень так. Файл - это запись в MFT, а записи в каталоге просто сопоставляют имена файлов с идентификаторами файлов. Он поддерживает hardlinks и, с 2008/7 / Vista (?), Даже символические ссылки. На данный момент самая большая разница - культурная. – cHao 12 March 2014 в 00:51

В Windows вы также можете создавать жесткие ссылки, если у вас есть файловая система NTFS.

fsutil hardlink create target_file source_file

Файлы должны быть на одном логическом диске.

2
ответ дан 24 May 2018 в 10:56
  • 1
    Это верно - NTFS поддерживает также hardlinks. Часто инструменты требуют, чтобы у вас были привилегии администратора для их создания. Об «том же логическом диске» - точнее сказать, они должны быть в одной файловой системе. Логический диск может быть любым, включая букву диска, созданную командой subst. Инструмент может не знать / заботиться об этом и, таким образом, отказаться от создать жесткую ссылку. Очень полезной является Link Shell Extension , которая позволяет проводнику создавать их. – Tobias 25 March 2014 в 14:36

Большая разница, жесткая ссылка не может быть создана для папок, но для файлов.

Ярлык может быть создан для папок, поэтому вы не можете сказать, что они эквивалентны.

В вашем вопросе должна быть разница между символической ссылкой или софт-ссылкой и ярлыком.

в соответствии с этим:

Ярлык можно создать для папок , поэтому вы не можете сказать, что они эквивалентны.

«Ярлык» - это обычный файл, который имеет ссылку на целевой файл или каталог.

Символьная ссылка - это уровень файловой системы, и все видит ее как исходный файл. Приложение не нуждается в специальной поддержке для использования символической ссылки.

Поэтому, когда вы нажимаете ярлык, вы меняете свой каталог на фактический файл, а soft-link будет ссылаться на его местоположение, как если бы его фактический файл, для этого в Linux вы можете использовать терминалы и cd для символических ссылок, в то время как вы не можете использовать cd для ярлыков.

1
ответ дан 24 May 2018 в 10:56
  • 1
    Какие? Softlinks - это просто файлы, хотя и странные, но они также занимают inodes, например. Они НЕ рассматриваются как оригинальные (это жесткие ссылки). Хотя верно, что жесткие ссылки не разрешены для каталогов в большинстве ОС, это всего лишь функция безопасности, а есть исключения к этому (например, к машине времени OSX). И, конечно, вы можете использовать компакт-диски (я предполагаю, что вы имеете в виду быстрые клавиши Windows, поскольку, как вы говорите, вы можете использовать cd для soflinks). – terdon♦ 10 March 2014 в 21:40
  • 2
    вы уверены, что можете использовать cmd для cd для ярлыка. – nux 10 March 2014 в 21:43
  • 3
    Я просто активировал свою виртуальную машину Windows и создал ярлык для папки на моем рабочем столе, ярлыки Windows очень похожи (если не идентичны) на символические ссылки. Пока вы не можете использовать cd с помощью cmd.exe по какой-то причине, вы можете создать .lnk в каталог и использовать его через explorer. – terdon♦ 10 March 2014 в 21:44
  • 4
    вниз избиратели должны дать основание для downvoting – nux 10 March 2014 в 21:55
  • 5
    Извините, все еще не правильно. Символы - это файлы, содержащие их цель как обычный текст (см. здесь ), символические ссылки not рассматриваются как оригинальные, то есть вся разница между символическими ссылками и hardlinks. Linux-пусковые установки (я предполагаю, что вы имеете в виду файлы .desktop) не имеют ничего общего с этим, они совершенно разные. Как вы сами говорите, ярлыки Windows могут указывать на файлы (в том числе программы) и папки (у Mac и Windows есть папки, у Linux есть каталоги). Файлы desdes просто позволяют запускать программу. Они нигде не связаны. – terdon♦ 10 March 2014 в 22:28

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

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