Что такое символическая ссылка и как создать симлинк в linux

Индексный дескриптор

Для пользователя файл – это область данных на диске, к которой можно обратиться через имя файла. Однако в операционных системах на базе ядра Linux вся информация о файле привязана не к его имени, а так называемому числовому индексному дескриптору. У каждого файла есть свой уникальный индексный дескриптор, к которому привязаны сведения об этом файле: в каких блоках диска хранится его содержимое, размер, время создания, модификации и др.

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

Именно номер индекса является истинным именем файла в системе. Мы можем их увидеть с помощью ключа -i команды ls.

Жесткие ссылки

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

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

  • Работают только в пределах одной файловой системы;
  • Нельзя ссылаться на каталоги;
  • Имеют ту же информацию inode и набор разрешений что и у исходного файла;
  • Разрешения на ссылку изменяться при изменении разрешений файла;
  • Можно перемещать и переименовывать и даже удалять файл без вреда ссылке.

Настройка динамических библиотек

Итак, как же динамический загрузчик узнает, где искать исполняемые файлы? Как и везде в Linux, для этого используется конфигурационный файл, расположенный в директории /etc. Фактически, это два конфигурационных файла /etc/ld/so/conf и /etc/ld.so.cache. В листинге 5 показано содержимое файла /etc/ld.so.conf в 64-разрядной операционной системе Fedora 12

Обратите внимание на то, что в /etc/ld.so.conf указано, что необходимо включить в конфигурацию все файлы .conf из поддиректории ld.so.conf.d. В более старых системах директива include для директории /etc/ld.so.conf.d может не использоваться, а все необходимые файлы могут быть перечислены непосредственно в файле /etc/ld/so/conf

В вашей операционной системе содержимое файла /etc/ld.so.conf или директории /etc/ld.so.conf.d может отличаться.

Листинг 5. Содержимое файла /etc/ld.so.conf
$ cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
$ ls /etc/ld.so.conf.d/*.conf
/etc/ld.so.conf.d/kernel-2.6.31.12-174.2.19.fc12.x86_64.conf
/etc/ld.so.conf.d/kernel-2.6.31.12-174.2.22.fc12.x86_64.conf
/etc/ld.so.conf.d/kernel-2.6.31.12-174.2.3.fc12.x86_64.conf
/etc/ld.so.conf.d/mysql-x86_64.conf
/etc/ld.so.conf.d/qt-x86_64.conf
/etc/ld.so.conf.d/tix-x86_64.conf
/etc/ld.so.conf.d/xulrunner-64.conf

Загрузка программ должна происходить быстро, поэтому используйте команду для обработки файла ld.so.conf, всех файлов из директории ld.so.conf.d, библиотек из доверенных директорий /lib и /usr/lib, а также других библиотек, указанных в командной строке. Команда создает в файле /etc/ld.so.cache все необходимые связи, а также кэш для наиболее часто используемых библиотек. Динамический загрузчик использует информацию из кэша ld.so.cache для поиска файлов, которые необходимо динамически загрузить и скомпоновать. Если вы вносите изменения в файл ld.so.conf (или добавляете новые файлы в директорию ld.so.conf.d), вы должны запустить команду (от имени пользователя root) для перестроения (rebuild) файла ld.so.cache.

Обычно для перестроения файла ld.so.cache команда ldconfig запускается без параметров. Тем не менее, существует несколько параметров, с помощью которых можно изменить поведение этой программы. Как обычно, дополнительная информация доступна по команде . В листинге 6 продемонстрировано использование параметра для отображения содержимого файла ld.so.cache.

Листинг 6. Вывод содержимого файла ld.so.cache с помощью ldconfig
$ /sbin/ldconfig -p | less
1602 libs found in cache `/etc/ld.so.cache'
        libzip.so.1 (libc6,x86-64) => /usr/lib64/libzip.so.1
        libz.so.1 (libc6,x86-64) => /lib64/libz.so.1
        libz.so (libc6,x86-64) => /usr/lib64/libz.so
        libx86.so.1 (libc6,x86-64) => /usr/lib64/libx86.so.1
        libx11globalcomm.so.1 (libc6,x86-64) => /usr/lib64/libx11globalcomm.so.1
        libxul.so (libc6,x86-64) => /usr/lib64/xulrunner-1.9.1/libxul.so
        libxtables.so.2 (libc6,x86-64) => /usr/lib64/libxtables.so.2
        libxslt.so.1 (libc6,x86-64) => /usr/lib64/libxslt.so.1
        libxslt.so (libc6,x86-64) => /usr/lib64/libxslt.so
        libxpcom.so (libc6,x86-64) => /usr/lib64/xulrunner-1.9.1/libxpcom.so
        libxml2.so.2 (libc6,x86-64) => /usr/lib64/libxml2.so.2
        libxml2.so (libc6,x86-64) => /usr/lib64/libxml2.so
       ...
        libABRTdUtils.so.0 (libc6,x86-64) => /usr/lib64/libABRTdUtils.so.0
        libABRTUtils.so.0 (libc6,x86-64) => /usr/lib64/libABRTUtils.so.0
        ld-linux.so.2 (ELF) => /lib/ld-linux.so.2
        ld-linux-x86-64.so.2 (libc6,x86-64) => /lib64/ld-linux-x86-64.so.2

Символические ссылки

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

Вот основные особенности символических ссылок:

  • Могут ссылаться на файлы и каталоги;
  • После удаления, перемещения или переименования файла становятся недействительными;
  • Права доступа и номер inode отличаются от исходного файла;
  • При изменении прав доступа для исходного файла, права на ссылку останутся неизменными;
  • Можно ссылаться на другие разделы диска;
  • Содержат только имя файла, а не его содержимое.

Теперь давайте рассмотрим жесткие ссылки.

Two types of linking files and directories

There are two common approaches to link a file or directory in Unix: soft linking and hard linking. Soft links are also called symlinks (symbolic links).

What is a soft link?

Soft link (also referred to as symlink – short for symbolic link) is a special type of file in Unix, which references another file or directory. Symlink contains the name for another file and contains no actual data. To most commands, symlinks look like a regular file, but all the operations (like reading from a file) are referred to the file the symlink points to.

When you remove a soft link, you simply remove one of the pointers to the real file. When you remove the original file a soft link points to, your data is lost. Even though your soft link will still exist, it will be pointing to the non-existent file and will therefore be useless (it will probably have to be removed as well).

What is a hard link?

Hard link is a pointer to physical data. Effectively, all standard files are hard links, because they ultimately create an association between a file name and a physical data which corresponds to each file.

In Unix, you can create as many hard links to a file as you like, and there is even a special counter for such references. When you’re using the long format of an ls command, you can see this counter.

When you remove a hard link, you decrease this link counter for a data on your storage. If you remove the original file, the data will not be lost as long as there’s at least one hard link pointing to it.

Типы ссылок

В системах Linux/UNIX существует два типа ссылок:

  • Жесткие ссылки. Вы можете считать жесткую ссылку в качестве дополнительного имени для существующего файла. Жесткие ссылки связывают два или более имени файла с тем же inode. Вы можете создать одну или несколько жестких ссылок для одного файла. Жесткие ссылки не могут быть созданы для каталогов и файлов в другой файловой системе или разделе.
  • Мягкие ссылки. Soft link – это что-то вроде ярлыка в Windows. Это косвенный указатель на файл или каталог. В отличие от жесткой ссылки, символическая ссылка может указывать на файл или каталог на другой файловой системе или разделе.

Options

Here are the options that can be passed to the ln command.

—backup[=CONTROL] Use this option to additionally create a backup of each existing destination file. The style of backup is optionally defined by the value of CONTROL. for more information.
-b This functions like —backup, but you cannot specify the CONTROL; the default style (simple) is used.
-d, -F, —directory This option allows the superuser to attempt to hard link directories (although it will probably fail due to system restrictions, even for the superuser).
-f, —force If the destination file or files already exist, overwrite them.
-i, —interactive Prompt the user before overwriting destination files.
-L, —logical Dereference TARGETs that are symbolic links. In other words, if you are trying to create a link (or a symlink) to a symlink, link to what it links to, not to the symlink itself.
-n, —no-dereference Treat LINKNAME as a normal file if it is a symbolic link to a directory.
-P, —physical Make hard links directly to symbolic links, rather than dereferencing them.
-r, —relative Create symbolic links relative to link location.
-s, —symbolic Make symbolic links instead of hard links.
-S, —suffix=SUFFIX Use the file suffix SUFFIX rather than the default suffix «~«.
-t, —target-directory=DIRECTORY Specify the DIRECTORY in which to create the links.
-T, —no-target-directory Always treat LINKNAME as a normal file.
-v, —verbose Operate verbosely; print the name of each linked file.
—help Display a help message, and exit.
—version Display version information, and exit.

The —backup option

When using the —backup (or -b) option, the default file suffix for backups is ‘~‘. You can change this, however, using the —suffix option or setting the SIMPLE_BACKUP_SUFFIX environment variable.

The CONTROL argument to the —backup option specifies the version control method. Alternatively, it can be specified by setting the VERSION_CONTROL environment variable. Here are the values to use for either one:

none, off Never make backups (even if —backup is given).
numbered, t Make numbered backups.
existing, nil Numbered if numbered backups exist, simple otherwise.
simple, never Always make simple backups.

If you use -b instead of —backup, the CONTROL method is always simple.

If you specify the -s option (which symlinks), ln ignores the -L and -P options. Otherwise (if you are making hard links), the last option specified controls behavior when a TARGET is a symbolic link. The default is to act as if -P was specified.

Использование ссылок в Linux

Теоретические отличия вы знаете, но осталось закрепить все это на практике, поэтому давайте приведем несколько примеров работы со ссылками в Linux. Для создания символических ссылок существует утилита ln. Ее синтаксис очень прост:

$ ln опции файл_источник файл_ссылки

Рассмотрим опции утилиты:

  • -d – разрешить создавать жесткие ссылки для директорий суперпользователю;
  • -f – удалять существующие ссылки;
  • -i – спрашивать нужно ли удалять существующие ссылки;
  • -P – создать жесткую ссылку;
  • -r – создать символическую ссылку с относительным путем к файлу;
  • -s – создать символическую ссылку.

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

Сначала создайте папку test и перейдите в нее:

mkdir test && cd test

Затем создайте файл с именем source с каким-либо текстом:

echo «текст текст текст текст» > source $ cat source

Файл готов, дальше создадим символическую ссылку Linux, для этого используется команда ln с опцией -s:

ln -s source softlink

Как видите, нет никакой разницы между ней и исходным файлом. Но утилита ls покажет что это действительно ссылка:

Несмотря на то, что содержимое одинаковое, здесь мы видим, что адрес иноды и права доступа к файлам отличаются, кроме того, явно показано что это символическая ссылка Linux.

Теперь удалите исходный файл и посмотрите что будет:

Вы получите ошибку, что такого файла не существует, потому что мы действительно удалили исходный файл. Если вы удалите ссылку, то исходный файл останется на месте.

Создание жестких ссылок

Снова создайте файл source с произвольным текстом:

echo «текст текст текст текст» > source $ cat source

Теперь создадим жесткую ссылку Linux. Для этого достаточно вызвать утилиту без параметров:

ln source hardlink

Посмотрите содержимое файла:

Данные те же самые, а если мы посмотрим вывод утилиты ls, то увидим что inode и права доступа тоже совпадают:

Если для одного из файлов поменять разрешения, то они изменяться и у другого. Теперь удалите исходный файл:

Затем посмотрите содержимое:

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

The difference between ln and link

So what about ln? That’s why we’re here, right?

ln, by default, creates a hard link like link does. So this ln command:

ln file1.txt file2.txt

…is the same as the following link command:

link file1.txt file2.txt

…because both commands create a hard link named file2.txt which links to the data of file1.txt.

However, we can also use ln to create symbolic links with the -s option. So the command:

ln -s file1.txt file2.txt

Create a symbolic link to file1.txt named file2.txt. In contrast to our hard link example, here’s an illustration to help you visualize our symbolic link:

What are symbolic links?

Symbolic links, sometimes called «soft» links, are different than «hard» links. Instead of linking to the data of a file, they link to another link. So in the example above, file2.txt points to the link file1.txt, which in turn points to the data of the file.

This has several potential benefits. For one thing, symbolic links (also called «symlinks» for short) can link to directories. Also, symbolic links can cross file system boundaries, so a symbolic link to data on one drive or partition can exist on another drive or partition.

You should also be aware that, unlike hard links, removing the file (or directory) that a symlink points to will break the link. So if we create file1.txt:

echo "This is a file." > file1.txt

…and create a symbolic link to it:

ln -s file1.txt file2.txt

…we can cat either one of these to see the contents:

cat file1.txt
This is a file.
cat file2.txt
This is a file.

…but if we remove file1.txt:

rm file1.txt

…we can no longer access the data it contained with our symlink:

cat file2.txt
cat: file2.txt: No such file or directory

This error message might be confusing at first, because file2.txt still exists in your directory. It’s a broken symlink, however — a symbolic link which points to something that no longer exists. The operating system tries to follow the symlink to the file that’s supposed to be there (file1.txt), but finds nothing, and so it returns the error message.

While hard links are an essential component of how the operating system works, symbolic links are generally more of a convenience. You can use them to refer, in any way you’d like, to information already on the disk somewhere else.

Жесткие ссылки

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

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

  • Работают только в пределах одной файловой системы;
  • Нельзя ссылаться на каталоги;
  • Имеют ту же информацию inode и набор разрешений что и у исходного файла;
  • Разрешения на ссылку изменяться при изменении разрешений файла;
  • Можно перемещать и переименовывать и даже удалять файл без вреда ссылке.

Загрузка требуемых библиотек

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

Подобно тому, как вы можете изменить переменную PATH для поиска исполняемых файлов, вы можете изменить и значение переменной LD_LIBRARY_PATH, указав через двоеточие директории, в которых будет выполняться поиск общих библиотек прежде чем будут использованы системные библиотеки, перечисленные в файле ld.so.cache. Например, вы можете использовать следующую команду:

export LD_LIBRARY_PATH=/usr/lib/oldstuff:/opt/IBM/AgentController/lib

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

Что такое ссылка на файл в Linux

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

Ссылки в Linux бывают двух типов: символические и жесткие. Не смотря на то, что оба типа называются ссылками, они имеют существенные отличия друг от друга

Поэтому очень важно понимать, как создавать и использовать тот или иной тип ссылок

Что такое символические ссылки

Символическая ссылка (symbolic link) — это специальный файл, который является ссылкой на другой файл или каталог (их еще называют целевым файлом, целевым каталогом).

Символические ссылки также называют символьными, мягкими ссылками (soft links) или сим-ссылками (sym-link).

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

Не смотря на это, символическая ссылка обладает собственными правами доступа, так как сама является небольшим файлом, который содержит путь до целевого файла.

Возвращаясь к аналогии с ярлыками в Windows, символические ссылки это своего рода ярлыки на файлы. Можно создавать несколько символических ссылок на один файл и эти ссылки могут иметь разные имена.

Связь между символической ссылкой и файлом, на который она указывает, является «мягкой». Если удалить символическую ссылку, то файл, на который она указывает, не удаляется.

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

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

Схематично отношение между файлом, символической ссылкой и данными, которые хранятся в файле, можно показать следующим образом:

Что такое жесткие ссылки

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

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

В Linux каждый файл имеет уникальный идентификатор — индексный дескриптор (inode). Это число, которое однозначно идентифицирует файл в файловой системе. Жесткая ссылка и файл, для которой она создавалась имеют одинаковые inode. Поэтому жесткая ссылка имеет те же права доступа, владельца и время последней модификации, что и целевой файл. Различаются только имена файлов. Фактически жесткая ссылка это еще одно имя для файла.

Жесткие ссылки нельзя создавать для директорий.

Жесткая ссылка не может указывать на несуществующий файл.

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

Схематично отношение между исходным файлом, жесткой ссылкой и данными можно показать следующей схемой:

Отличия символических ссылок от жестких

Кратко подведем итог, написанного выше.

Символическая ссылка:

  • Указывает на целевой файл или каталог. Фактически является небольшим файлом, содержащим путь до целевого файла.
  • Не содержит внутри себя содержимого самого файла. Содержит путь к целевому файлу.
  • Имеет собственные права доступа, которые не распространяются на целевой файл.
  • Удаление / переименование / перемещение целевого файла не обновляет автоматически ссылку. Ссылка начинает указывать на несуществующий файл, становится неработающей.
  • Изменение прав доступа у целевого файла не обновляет права доступа у ссылки.
  • Может быть создана для директории.
  • Ссылка и целевой файл имеют разные файловые индексы (inode) в файловой системе.
  • Может указывать на несуществующий файл.
  • Символическая ссылка может использовать относительный путь до целевого файла.

Жесткая ссылка:

  • Является своего рода еще одним именем на файл.
  • Не может указывать на директорию.
  • Нельзя создавать жесткие ссылки между файлами разных файловых систем.
  • Не может указывать на несуществующий файл.
  • Жесткая ссылка и файл, для которого она создавалась, имеют одинаковые индексы (inode) в файловой системе.

Жесткие ссылки

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

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

  • Работают только в пределах одной файловой системы;
  • Нельзя ссылаться на каталоги;
  • Имеют ту же информацию inode и набор разрешений что и у исходного файла;
  • Разрешения на ссылку изменяться при изменении разрешений файла;
  • Можно перемещать и переименовывать и даже удалять файл без вреда ссылке.

Символические ссылки

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

Вот основные особенности символических ссылок:

  • Могут ссылаться на файлы и каталоги;
  • После удаления, перемещения или переименования файла становятся недействительными;
  • Права доступа и номер inode отличаются от исходного файла;
  • При изменении прав доступа для исходного файла, права на ссылку останутся неизменными;
  • Можно ссылаться на другие разделы диска;
  • Содержат только имя файла, а не его содержимое.

Теперь давайте рассмотрим жесткие ссылки.

Жесткие ссылки

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

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

  • Работают только в пределах одной файловой системы;
  • Нельзя ссылаться на каталоги;
  • Имеют ту же информацию inode и набор разрешений что и у исходного файла;
  • Разрешения на ссылку изменяться при изменении разрешений файла;
  • Можно перемещать и переименовывать и даже удалять файл без вреда ссылке.

Символьные, или мягкие, ссылки

Несмотря на возможности, которые предоставляют жесткие ссылки, у них есть ограничения:

  • их можно создавать только на файлы, но не на каталоги;

  • жесткую ссылку нельзя создать на файл, находящийся на другом диске.

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

Поэтому в операционных системах GNU/Linux поддерживается также механизм мягких ссылок. Часто их называют символьными ссылками. Они представляют собой файлы, указывающие не на индексные дескрипторы, а на имена файлов, т. е. на жесткие ссылки. Мягкая ссылка в Linux аналог ярлыка в Windows.

Поскольку жесткая ссылка указывает непосредственно на индексный дескриптор, а мягкая – только на жесткую ссылку, то если удалить все жесткие ссылки файла, то символьная ссылка работать не будет. Она станет «битой».

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

При удалении жесткой ссылки, на имя которой ссылалась символьная, последняя не наследует связь с дескриптором и утрачивает свою работоспособность. Если в данном примере удалить жесткую ссылку с именем logotip, то файлы pic1 и tux станут бесполезны, так как открыть файл 555795 с их помощью уже будет нельзя.

Создание символических ссылок в Linux

В статье показано как создать символическую ссылку в Linux.

Синтаксис

ln исходный_файл

ln исходный_файл … целевой_каталог

link исходный_файл целевой_файл

Описание

Программа ln создает запись в директории ( ссылку ) с именем, целевой_файл.

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

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

Команда ln имеет следующие опции:

-f Если целевой_файл уже существует, удалить его , чтобы можно было создать ссылку.
Данная опция отменяет опцию -i.

-F Если целевой_файл уже существует и является директорией, удалить его, чтобы можно было создать ссылку. Опция -F используется вместе с опциями -f или -i, в случае, если ни одна из них не указана, подразумевается опция -f.

Эта опция не работает без опции -s.

-h Если целевой_файл или целевой_каталог является символической ссылкой, не следовать по ей. Данная опция полезна в сочетании с опцией -f для замены символической ссылки, которая
указывает на каталог.

-i Интерактивный режим. Если целевой_файл существует, пользователю будет выведен запрос на удаление В случае согласия, ln удалит целевой_файл и создаст новую ссылку. Данная опция отменяет действие опции -f.

-n Аналог опции -h, для совместимости с другими реализациями программы ln.

-s Создавать символическую ссылку.

-v Режим вывода информации о ходе выполнения программы ln.

По-умолчанию, программа ln создаёт жёсткие ссылки. Жесткая ссылка на файл, ничем не
отличается от исходного файла; при этом, изменения сделанные в файле, не зависят от имени,
по которому к нему было сделано обращение.

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

Символическая ссылка содержит имя файла, на который ссылается. При выполнении операции
open(2) над символической ссылкой используется оригинальный файл. Вызов stat(2), выполненный
над символической ссылкой, также вернёт исходный файл. Для получения информации о ссылке
можно использовать lstat(2). Для чтения содержимого символической ссылки можно
воспользоваться вызовом readlink(2). В отличии от жестких ссылок, символические,
могут находиться в другой файловой системе и могут указывать на каталоги.

С одним или двумя аргументами, программа ln создаёт ссылку на существующий исходный_файл. Имя для ссылки будет взято из аргумента целевой_файл. Если в аргументе целевой_файл, не указана директория, для создания ссылки, будет использована текущая директория, если указан только каталог, будет создана ссылка на последний элемент из исходный_файл.

С более чем двумя аргументами, программа ln создаёт ссылки в целевой_каталог на все указанные
пути в исходный_файл. Ссылки при этом получают имена исходных файлов.

Если программа ln, вызывается в форме link, ей передается ровно два аргумента, передаваемые аргументы не могут быть каталогами, кроме того, в данной форме она не принимает никаких опций. Это простая форма использования.

Совместимость

Опции -h, -i, -n и -v, предназначены для совместимости с другими реализациями программы ln, и не рекомендуются для использование в скриптах.

Примеры

Вот пример создания ссылки на файл

ln <исходный файл> 

Это пример жесткой ссылки. В реальности он может выглядеть, как пример, так:

Но ведь нас интересуют и каталоги. А с ними все немного сложнее, но не бойтесь. Вся сложность только в дополнительном параметре команды nl. Этот параметр -s. Вот пример создания символической ссылки на каталог в linux

После этого, каталог /raid/scripts/checker будет доступен и по этому адресу /raid/www_tools/checker.

Такие ссылки можно создавать и в категории вашего веб каталога и обращаться к файлам или каталогам по ссылкам через HTTP.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *