Создание «медленных» символических ссылок в старом стиле

Один из способов генерировать такой вывод, но порядок может быть другим::

$ find./dir | sed -E ':a;s|/[^/]+/|+/|;ta' | tr / \  | sed s/./+/

Результат для той же структуры каталогов:

+ dir
++ dir2
+++ file2
+++ file1
++ dir1
+++ file2
+++ file1
5
06.08.2020, 16:29
2 ответа

Невозможно указать lnсоздавать «быстрые» или «медленные» символические ссылки, файловая система определяет, как она хранит символические ссылки.

Работа с символическими ссылками на оптических носителях осуществляется программой, обрабатывающей преобразование, или драйвером файловой системы, обеспечивающим доступ к носителю, а не исходной файловой системой. Например, mkisofsможет использовать расширения Rock Ridge или файлы TRANS.TBLдля представления символических ссылок. Он также может обрабатывать жесткие ссылки.

16
18.03.2021, 23:14

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

Теоретически «жесткая» ссылка быстрее, но «мягкая» ссылка имеет то преимущество, что может пересекать файловые системы.

Если вам нужна жесткая ссылка, используйте команду lnбез флага -s, и существуют условия, при которых ссылка не может быть создана. С флагом -sсоздается программная ссылка -или файл, содержащий путь к другому файлу (в специальном формате ). Эта символическая ссылка медленнее, но ненамного; потому что ОС должна открыть файл, чтобы прочитать новый путь, а затем повторно -запросить файл по прочитанному пути. С жесткой ссылкой вход в каталог указывает непосредственно на файл, поэтому описанная выше многошаговая операция -не выполняется, она просто переходит непосредственно к первому блоку файла.

Что касается «медленных»/«быстрых» символических ссылок, то теперь они стали частью истории. У большинства файловых систем есть место в таблицах инодов своих каталогов. Если файл достаточно мал, чтобы поместиться в самой таблице инодов, файл не создается с собственным номером блока, а вместо этого в таблице инодов устанавливается флаг, и содержимое файла сохраняется непосредственно в записи инодов. Это работает только для очень маленьких файлов, а символические ссылки — один из таких файлов.

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

2
18.03.2021, 23:14

Теги

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