2013-07-08 15 views
1

Я пишу сценарий оболочки в bash, где я делаю некоторые ссылки между файлами, но я не уверен, какую ссылку использовать (физическую или символическую). Проводя некоторые исследования, я заметил, что чаще использовать символические ссылки вместо физических. Мой вопрос заключается в том, почему использовать символические ссылки, когда они требуют косвенности (он создает дополнительный I-узел для защиты информации о реальном I-узле файла) вместо использования жестких ссылок, указывающих непосредственно на файл?Ссылки Linux с командой «ln»

Другими словами:

Почему

ln -s ... 

вместо

ln -P ... 

ответ

4

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

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

2

Off верхней части моей головы:

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

  2. $ @ & # $ & emacs резервных копирование файлов. Когда вы редактируете, скажите file.txt и внесите в него изменения в emacs, emacs переименует исходный файл в file.txt~ и сохранит ваши изменения под исходным именем файла. Если была жесткая ссылка на file.txt, теперь она связана с file.txt~, что, вероятно, не то, что вы хотите. Символическая ссылка на file.txt будет по-прежнему указывать на обновленный индекс.

0

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

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

0
  • Жесткие ссылки не имеют смысла в файловых системах, поскольку они в основном указывают на inodes на локальной FS. Симлинкам все равно. так как они просто имена, они могут жить где угодно.

  • Если вы посмотрите на список каталогов и увидите символическую ссылку, вы знаете, что это место в другом месте.С другой стороны, жесткие ссылки не предлагают такой подсказки. Возможно, вы не знаете, что вы играли в каком-то важном файле, пока не найдете свои имена.

+1

На самом деле, вы можете определить, связано ли файл с его ссылкой ссылкой (столбец 2 i 'ls -l'). –

+0

@GordonDavisson: Это все еще не говорит вам о том, что может быть другим именем (ами) файла. Попробуйте 'ls -l' с символической ссылкой. Вы не только знаете, что это ссылка на другой файл, но * который * файл, на который он ссылается. – cHao

Смежные вопросы