В чем разница между жесткой ссылкой и символической ссылкой?

Жесткие и символические ссылки в linux

Способ 1. Совместное использование папок или библиотек с помощью мастера общего доступа

Когда вы открываете общий доступ к папке или библиотеке в сети, вы можете использовать мастер общего доступа, который доступен как в Windows 7, так и в Windows 8. Этот мастер включен по умолчанию, поэтому у вас не должно возникнуть проблем при его запуске. Чтобы узнать больше об этом, прочитайте это руководство и следуйте ему, чтобы поделиться папкой или библиотекой: Как поделиться библиотеками и папками с помощью мастера общего доступа в Windows.

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

Посмотрите внимательно под уведомлением, которое гласит: «Ваша папка / библиотека является общей» . Вы заметите строку с надписью: «Вы можете отправить кому-нибудь ссылки на эти общие элементы по электронной почте или скопировать и вставить ссылки в другую программу» .

Если вы нажмете ссылку «электронная почта» , откроется ваш почтовый клиент по умолчанию, и прямая ссылка будет автоматически вставлена ​​в него. Если щелкнуть ссылку «Копировать» , ссылка на общий ресурс будет скопирована в буфер обмена, и вы сможете вставить ее в другие программы.

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

В сле­ду­ю­щем при­ме­ре мы созда­ем сим­во­ли­че­скую ссыл­ку, назван­ную  в файл с име­нем :

YAML

<span class=»line»>ln -s my_file.txt my_link.txt</span>

1 <spanclass=»line»>ln-smy_file.txtmy_link.txt</span>

Что­бы убе­дить­ся, что сим­во­ли­че­ская ссыл­ка была созда­на, исполь­зуй­те коман­ду :

YAML

<span class=»line»>ls -l my_link.txt</span>

1 <spanclass=»line»>ls-lmy_link.txt</span>

Резуль­тат будет выгля­деть при­мер­но так:

YAML

lrwxrwxrwx 1 linuxize users 4 Nov 2 23:03 my_link.txt -&gt; my_file.txt

1 lrwxrwxrwx1linuxizeusers4Nov223:03  my_link.txt -&gt; my_file.txt

Сим­вол  – это флаг типа фай­ла, пред­став­ля­ю­щий сим­во­ли­че­скую ссыл­ку. Сим­вол  пока­зы­ва­ет файл сим­во­ли­че­ская ссыл­ка указывает.

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.

Создание символических ссылок в 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.

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

Хотя символические ссылки имеют явные преимущества, они в основном использовались в UNIX-совместимых операционных системах, таких как Linux, FreeBSD, OSX и т. Д., Где символические ссылки можно создавать без ограничений. Для пользователей Windows, хотя символические ссылки были доступны начиная с Windows Vista, создавать их было сложно и утомительно.

Из-за требований безопасности Windows Vista пользователям требовались права локального администратора и, что важно, запускать mlink в консоли командной строки с повышенными правами администратора для создания / изменения символических ссылок. Это последнее ограничение привело к тому, что символические ссылки использовались нечасто большинством разработчиков Windows, а многие современные инструменты кроссплатформенной разработки стали работать в Windows менее эффективно и надежно

Однако теперь с обновлением Windows 10 Creators Update, когда пользователь с правами администратора включает режим разработчика, любой пользователь ПК может запускать mklink команда без повышения уровня консоли командной строки.

Как вы создаете символические ссылки

Символические ссылки можно создать с помощью команды mklink или API CreateSymbolicLink.

Использование команды mklink

При использовании команды mklink используйте следующий синтаксис:

«Mklink / prefix путь_ссылки файл / путь_папки»

Примечание. Mklink может создавать ссылки нескольких типов. Ниже приведены типы:

  • / D Создает символическую ссылку на каталог. По умолчанию используется символическая ссылка на файл.
  • / H Создает жесткую ссылку вместо символьной ссылки.
  • / J Создает соединение каталогов.

Например, я создал соединение папок «Музыка» с рабочим столом. См. Снимок экрана ниже.

Поэтому, когда я нажимаю на символическую ссылку, оказывается, что мои музыкальные файлы хранятся в C: Users Desktop Music, хотя изначально они находятся в C: Users Music.

Помните, что если на вашем пути есть пробелы, вам нужно заключить его в кавычки.

Использование CreateSymbolicLink

Чтобы включить новое поведение при использовании API CreateSymbolicLink, есть дополнительная опция dwFlags, вам нужно будет установить значение как:

SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE

0x2

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

Чтобы узнать больше о том, как создать символическую ссылку с помощью CreateSymbolicLink API, посетите .

Прочтите: Создание жестких ссылок, символических ссылок, переходов, точек монтирования тома.

Вывод

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

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

.

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Что именно является символической ссылкой?

Обычно называемые symlink(символической ссылкой) или soft link(мягкой ссылкой), символические ссылки представляют собой очень маленькие файлы. На самом деле символическая ссылка содержит только имя любого файла, на который она указывает, обычно вместе с путем к файловой системе (относительно текущего местоположения или абсолютного значения).

Если файл с именем file1 указывает на файл с именем /apps/files/file-2020, длина file1 будет составлять 21 символ, даже если размер файла file-2020 составляет 2 терабайта. Если он указывает на ./file-2020, длина его будет всего 11 символов. Если указывает на file-2020, то только девять.

Если вы выполните команду, подобную «vi file1» (где file1 — имя символической ссылки), вы в конечном итоге отредактируете любой файл, на который указывает file1, а не содержимое самой символической ссылки. Системы Linux знают, как работать с символическими ссылками, и просто делают правильные вещи. Точно так же, если вы используете такие команды, как cat, more, head или tail, вы будете просматривать содержимое указанного файла.

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

Оригинал: Символические ссылки

thing is unavailable for non-admins by default. Therefore, symlink emulation support is switched off by default and needs to be configured by you, the user, via the config setting.

Background

Starting with Windows Vista, there is support for symbolic links. These are not your grandfather’s Unix symbolic links; They differ in quite a few ways:

  • Symbolic links are only available on Windows Vista and later, most notably not on XP
  • You need the privilege, which is by default assigned only to Administrators but can be assigned to normal users using Local Security Policy (or via Active Directory). Home Editions of Windows Vista and Windows 7 do not have Local Security Policy, but the freely available Polsedit (http://www.southsoftware.com) can be used on these editions. Note that regardless of privilege assignment, members of the Administrators group will also require UAC elevation (see the full details in Access Token Changes just above )
  • Symbolic links on remote filesystems are disabled by default (call to find out)
  • Symbolic links will only work on NTFS, not on FAT
  • Windows’ symbolic links are typed: they need to know whether they point to a directory or to a file (for this reason, Git will update the type when it finds that it is wrong)
  • Many programs do not understand symbolic links

For those reasons, Git for Windows disables support for symbolic links by default (it will still read them when it encounters them). You can enable support via the core.symlinks config variable, e.g. when cloning:

Creating symbolic links

By default, the command in Git Bash does not create symbolic links. Instead, it creates copies.

To create symbolic links (provided your account has permission to do so), use the tool, like so:

Как найти и вывести все символические ссылки на диске?

В Windows нет простых инструментов для просмотра и управления всеми симлинками на диске.

Вы можете вывести список всех символических ссылок на диске с помощью команды:

dir /AL /S C:\ | find «SYMLINK»

Также можно вывести список всех символических ссылок на диске с помощью PowerShell. Для этого нужно просканировать все каталоги и найти NTFS объекты с атрибутом ReparsePoint:

Get-ChildItem -Path C:\ -Force -Recurse -ErrorAction ‘silentlycontinue’ | Where

Ниже мы разберем понятие жестких и символических ссылок в Windows, расскажем про их основное предназначение и ключевые отличия. Также Вы сможете научиться быстро создавать ссылки стандартными способами Windows или при помощи специального ПО.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как создать символьную ссылку в Windows 10

Создать Symbolic link можно встроенными средствами компьютера. Всего выделяется два способа, каждый из которых ориентирован на определенную группу пользователей. Проанализируйте оба варианта, чтобы выбрать для себя наиболее подходящий.

Mklink

Чаще всего символическая ссылка создается при помощи инструмента Mklink через Командную строку. Выглядит процедура следующим образом:

  • Щелкните ПКМ по значку «Пуск».
  • Откройте Командную строку.

  • Для создания мягкой ссылки на конкретный файл введите запрос формата «mklink X», где вместо «X» будет указано имя файла. Для обработки команды не забудьте нажать клавишу «Enter».
  • Если речь идет о конкретном каталоге, воспользуйтесь запросом «mklink /D X», подставив вместо «X» конкретную директорию. Например, «C:\Games».
  • Для жестких аналогов используйте команды формата «mklink /H X» и «mklink /J X» соответственно.

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

Применение графического инструмента

Также воспользоваться инструментом можно без помощи Командной строки, а напрямую через «Проводник». Но предварительно нужно будет установить на компьютер Link Shell Extension. Дальнейшая инструкция выглядит следующим образом:

  • Щелкните ПКМ по нужному файлу/каталогу.
  • Выберите опцию «Запомнить источник ссылки».

  • Откройте директорию, куда планируется поместить Symbolic link.
  • Кликните ПКМ.
  • Выберите «Поместить как», а затем – «Символическую ссылку».

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

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

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

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

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

Битые символьные ссылки

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

Для наглядной демонстрации такого поведения я специально создал символьную ссылку hello в каталоге ~/Документы:

Видно, что ссылка указывает на программу под названием ravesli в каталоге /bin. Если мы запустим символьную ссылку, то запустится связанная с ней программа:

Далее обратимся к программе напрямую:

Как и ожидалось, мы получили тот же результат. А теперь давайте удалим файл программы:

Цвет символьной ссылки изменился. Она выделена красным, потому что Linux знает, что ссылка — битая. При этом система продолжает отображать объект, на который указывала ссылка, чтобы мы могли заменить файл, перекомпилировать программу или сделать другие, необходимые для восстановления символьной ссылки действия.

Обратите внимание, что если мы снова попытаемся запустить символьную ссылку, то получим ошибку ссылки, а не объекта, на который указывает ссылка:

Поиск битых символьных ссылок (команда find)

В большинстве современных версий команды есть опция , которая упрощает поиск битых символьных ссылок. Использование команды с опцией и флагом (link) позволит искать и возвращать битые ссылки:

Стоит отметить, что по умолчанию поиск является рекурсивным, поэтому он автоматически выполняется для всех подкаталогов.

Если мы соединим вышеприведенную команду с командой (lines), то сможем подсчитать строки, что аналогично подсчету битых символьных ссылок:

Как вы можете видеть, у нас есть 1 битая символьная ссылка.

Анализ битых символьных ссылок

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

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

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

Битая символьная ссылка может быть признаком неудачной установки программного обеспечения. В этом случае вместо удаления символьной ссылки вам следует либо исправить её вручную, либо повторить установку. Когда вы исправите необходимые битые ссылки, то повторите команду поиска битых ссылок. Если всё сделано правильно, исправленные символьные ссылки не должны будут больше отображаться в результатах поиска.

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

Удаление битых символьных ссылок

Опция (execute) запускает некоторую команду, которая будет выполняться на результатах поиска, полученных от команды . Мы собираемся использовать команду для удаления каждой поврежденной символьной ссылки. Часть заменяется именем битой символьной ссылки по мере обнаружения каждой из них с помощью команды .

Мы должны использовать точку с запятой (), чтобы завершить список команд, которые мы хотим запустить при помощи . Обратная косая черта () используется для экранирования точки с запятой, благодаря чему она будет рассматривается как часть команды :

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

Нет никаких совпадающих результатов, что означает, что битые символьные ссылки были удалены.

В чем разница между жесткими ссылками, символическими ссылками и соединениями

Поскольку эта запись логически завершает серию статей о ссылках NTFS, хотелось бы подвести итог и сопоставить их возможности.

Создание и удаление связей

Команда mklink в Windows 7 и Vista умеет создавать все три типа связей. Жесткие ссылки можно создать только на файлы, но не на папки — для этого исторически существуют соединения.

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

Удаление ссылок в Windows 7 и Vista не несет в себе особых сюрпризов, поскольку целевые файлы и папки остаются в целости и сохранности. Внимательным нужно быть лишь при рекурсивном удалении файлов из папки командой del /s, т.к. при этом будут удалены все файлы в целевой папке.

Сравнительная таблица

Для полноты картины в таблице отражены некоторые возможности, которых я не касался в своих материалах.

Возможность Символическая(symbolic link) Жесткая(hard link) Соединение(junction)
Файловая система NTFS NTFS NTFS
Ссылка на локальную папку Да Нет Да
Ссылка на локальный файл Да Да Нет
Ссылка на сетевую папку или файл Да (UNC путь) Нет Нет
Относительный путь в ссылке Да Нет Нет
Связь между томами* Да(абсолютные ссылки) Нет Да(локальные тома)
Команда для просмотра ссылок dir fsutil dir

* Не путайте том с диском или разделом. Тома могут включать в себя несколько разделов или даже дисков. Подробнее читайте в статье о конфигурировании динамических томов (мой перевод 2006 года:)

Различные типы связей между папками и файлами дают файловой системе NTFS преимущества, которые Microsoft использует для обеспечения совместимости приложений и стабильной работы Windows. В немалой степени именно по этой причине уже третье поколение систем Microsoft не устанавливается на файловую систем FAT32.

Анализ файлов игры

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

Шаг 1: Перейдите к значку TreeSize на рабочем столе или в меню «Пуск» и запустите его.

Шаг 2: Когда откроется TreeSize, нажмите «Выбрать каталог». Во вновь открывшемся окне перейдите к расположению файлов игры и выберите основную папку, содержащую все файлы.

Шаг 3: TreeSize покажет вам все файлы и подпапки внутри основной папки в порядке возрастания их размера. Нам нужно сузить список файлов / папок, которые занимают больше всего места. К сожалению, издатели игр не раскрывают, какие файлы или папки служат для какой цели. В Интернете также нет справочника или информации о том же.

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

Папки внутри красного поля соответствуют однопользовательской кампании, обозначенной суффиксом «sp_». Точно так же папка внутри зеленого поля содержит файлы для многопользовательской карты Роттердам в Battlefield V.

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

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

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

Сколько места на диске занимают жесткие ссылки

Нисколько! В файловой системе NTFS каждый файл можно считать жесткой ссылкой на самого себя. На файл может ссылаться сколько угодно жестких ссылок (точнее, не больше 1023). Они могут запускать его из разных расположений, и при этом неотличимы друг от друга в проводнике и результатах команды dir.

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

Проводник видит папку winsxs так:

Но в реальности папка содержит немного уникальных файлов, которые изначально занимают на диске в среднем 400 Мб. Эта цифра относится к Windows Vista, и логично предположить, что в Windows 7 дело обстоит примерно так же (по крайней мере, понятен порядок цифры).

Все остальные файлы с помощью жестких ссылок проецируются в папки Windows, System32 и т.д. Появление папки winsxs связано с изменением платформы Windows, которая теперь складывается из компонентов как дом из кирпичей. По сравнению с Windows XP такая модель упрощает развертывание и обслуживание WIM-образов. Это верно даже после установки системы, поскольку она представляет собой образ, примененный к диску. Например, список компонентов и их состояние можно посмотреть командой

Dism /online /Get-Features

Может показаться, что зачистка папки winsxs никак не нарушает нормальную работу системы. Так, Антон лишился только русского языка в Internet Explorer, причем с его слов исключительно по невнимательности. Однако нарушения нормальной работы Windows не всегда заметны, если они происходят под капотом системы.

Так, содержимое папки winsxs используется для проверки системных файлов (SFC), а хранящиеся в ней версии файлов обеспечивают подбор наиболее подходящей версии при установке и удалении обновлений.

Подробнее о назначении папки winsxs вы можете узнать из блогов создателей Windows и команды Windows Server Core (EN), а я предлагаю вернуться к разговору о жестких ссылках.

Как проверить статус доступа к символическим ссылкам

Тут в ход вступает знакомая нам утилита fsutil, о которой я уже рассказывал. Недавние примеры ее применения:

  • Слишком длинный целевой путь
  • Robocopy и примеры использования с параметрами
  • Как перенести ost файл IMAP почты в Outlook

Чтобы просмотреть текущий статус параметров Symlink в вашей системе, выполните следующую команду из командной строки с повышенными привилегиями (администратора):

fsutil behavior query SymlinkEvaluation

  • Local to local symbolic links are enabled — говорит, что локальные символические ссылки, открываются локально
  • Local to remote symbolic links are enabled — говорит, что локальные символические ссылки, открываются удаленно
  • Remote to local symbolic links are disabled — Удаленные символические ссылки открываются локально, это нужно включить
  • Remote to remote symbolic links are disabled — Удаленные символические ссылки открываются удаленно, это нужно включить

Чтобы устранить ошибку «the symbolic link cannot be followed because its type is disabled» нужно включить четвертый пункт «Remote to remote symbolic links are disabled». Для этого выполните команду:

fsutil behavior set SymlinkEvaluation R2R:1

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

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

fsutil behavior set SymlinkEvaluation R2L:1

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: