Как правильно делать симлинки (symlink) в mac os x?

Ограничения

Параметры безопасности по умолчанию в Windows Vista/Windows 7 запрещают администраторам без повышенных прав и всем тем, кто не является администраторами, создавать символические ссылки. Этот режим можно изменить, запустив «secpol.msc» консоль управления локальной политикой безопасности (в разделе Параметры безопасности\Локальные политики\назначение прав пользователя\создание символьных ссылок). Его можно обойти, запустив cmd.exe с запуском от имени администратора или командой runas. Начиная с Windows 10 Insiders, построенном на 14972, требование о повышенных правах администратора было убрано, что позволило создавать символические ссылки без необходимости повышения консоли в качестве администратора .

Резюме файла SYMLINK

Расширение файла SYMLINK имеет один тип (-ов) файла (-ов) и связано с один различными программными обеспечениями, но главным образом с Unknown Software, разработанным Unknown Developer. Часто они представлены в формате Uncommon File Extension.
В большинстве случаев эти файлы относятся к Uncommon Files.

Файлы SYMLINK находятся на мобильных устройствах и настольных компьютерах, и их можно открыть в Windows.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

What is a link?

Before we discuss the ln command, let’s first discuss the link command, as well as what a link is and how it relates to files as we know them.

A link is an entry in your file system which connects a file name to the actual bytes of data on the disk. More than one file name can «link» to the same data. Here’s an example. Let’s create a file named file1.txt:

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

This command echoes the string «This is a file«. Normally this would echo to our terminal, but the > operator redirects the string’s text to a file, in this case file1.txt. We can check that it worked by using cat to display the contents of the file:

cat file1.txt
This is a file.

When this file was created, the operating system wrote the bytes to a location on the disk and also linked that data to a file name, file1.txt so that we can refer to the file in commands and arguments. If you rename the file, the contents of the file are not altered; only the information that points to it. The file name and the file’s data are two separate entities.

Here’s an illustration of the file name and the data to help you visualize it:

ln – make links and symlinks between files or directories

ln command is a Unix command for linking files or directories to each other. Essentially, it creates new files with the names you specify, and refer them to already existing files or directories. When you run any Unix command against a symlink, it is first resolved (the original file it points to is confirmed) and the Unix command works with that file to produce desired outcome.

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.

Creating soft links (symlinks) with ln

Let’s start with a really simple example. We create a text file, and then use soft link to reference it.

This shows how the file is created. It’s called file1, and has a line of text data in it which we confirm using cat command:

Now let’s use ln command to create a soft link. The newly created symlink will be a file called file2, and ls command will show you that it points to file1:

If you try accessing the file2, you will ultimately access file1, that’s why the following example shows you the contents of file1:

Now, if you remove file1, this will make file2 symlink invalid, and any attempts to use it will return a “file not found” type of error:

Creating hard links with ln
Now, let’s look at creation of hard links in Unix. For this example, we’ll recreate the file1:

If you use ls to look at file1, you can see that the link counter (second field from the left) is set to 1 – which means that there is only one file name pointing to the data with our “Text file #1” text:

And now we use ln command to create a hard link called file3, which points to the same data as file1:

If we use ls command once again, you can see that the link counter has been increased and is now 2:

Notice, how the file1 and file3 files look like absolutely normal files, and there’s nothing showing a logical link between them.

To confirm that both filenames are actually referring to the same area on the disk, you can use -i option for the ls command, which will show you an i-node value.

i-nodes

i-nodes are data structures of a filesystem used to store all the important properties of each file: size, owner’s user id and group id, access permission and more. The important thing is that each named data area on your disk must have an inode, and when you create a new data file this means creating an i-node. But when you’re using hard links, you’re effectively creating filesystem directory entry, which references an already existing data, so the hard link gets the same i-node number pointing to the same data.

The first number in each line of the output is the i-node number, and since we’re referencing the same data, the i-node numbers are also the same.

  • basic Unix commands
  • lrwxrwxrwx
  • Unix symlink example
  • Unix Commands
  • hard-link in unix
  • ls command
  • Show what symlink points to

DESCRIPTION top

       In the 1st form, create a link to TARGET with the name LINK_NAME.  In
       the 2nd form, create a link to TARGET in the current directory.  In
       the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
       Create hard links by default, symbolic links with --symbolic.  By
       default, each destination (name of new link) should not already
       exist.  When creating hard links, each TARGET must exist.  Symbolic
       links can hold arbitrary text; if later resolved, a relative link is
       interpreted in relation to its parent directory.

       Mandatory arguments to long options are mandatory for short options
       too.

       --backup[=CONTROL]
              make a backup of each existing destination file

       -b     like --backup but does not accept an argument

       -d, -F, --directory
              allow the superuser to attempt to hard link directories (note:
              will probably fail due to system restrictions, even for the
              superuser)

       -f, --force
              remove existing destination files

       -i, --interactive
              prompt whether to remove destinations

       -L, --logical
              dereference TARGETs that are symbolic links

       -n, --no-dereference
              treat LINK_NAME as a normal file if it is a symbolic link to a
              directory

       -P, --physical
              make hard links directly to symbolic links

       -r, --relative
              create symbolic links relative to link location

       -s, --symbolic
              make symbolic links instead of hard links

       -S, --suffix=SUFFIX
              override the usual backup suffix

       -t, --target-directory=DIRECTORY
              specify the DIRECTORY in which to create the links

       -T, --no-target-directory
              treat LINK_NAME as a normal file always

       -v, --verbose
              print name of each linked file

       --help display this help and exit

       --version
              output version information and exit

       The backup suffix is '~', unless set with --suffix or
       SIMPLE_BACKUP_SUFFIX.  The version control method may be selected via
       the --backup option or through the VERSION_CONTROL environment
       variable.  Here are the values:

       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

       Using -s ignores -L and -P.  Otherwise, the last option specified
       controls behavior when a TARGET is a symbolic link, defaulting to -P.

COLOPHON top

       This page is part of the coreutils (basic file, shell and text
       manipulation utilities) project.  Information about the project can
       be found at ⟨http://www.gnu.org/software/coreutils/⟩.  If you have a
       bug report for this manual page, see
       ⟨http://www.gnu.org/software/coreutils/⟩.  This page was obtained
       from the tarball coreutils-8.32.tar.xz fetched from
       ⟨http://ftp.gnu.org/gnu/coreutils/⟩ on 2020-08-13.  If you discover
       any rendering problems in this HTML version of the page, or you
       believe there is a better or more up-to-date source for the page, or
       you have corrections or improvements to the information in this
       COLOPHON (which is not part of the original manual page), send a mail
       to man-pages@man7.org

GNU coreutils 8.32               March 2020                            LN(1)

Pages that refer to this page:
dh_link(1), 
pmlogmv(1), 
update-alternatives(1), 
link(2), 
linkat(2), 
symlink(2), 
symlinkat(2), 
hier(7), 
symlink(7), 
sln(8)

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

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

Adblock
detector