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

Transparent создаст кисть, которая инициализируется прозрачным цветом, null установит свойство равным null, это означает, что свойство назначения не имеет прикрепленной кисти. В WPF часто важно установить кисть элемента. Если вы, например, хотите отслеживать мышиные элементы в элементе, вы должны установить фон. Если вы не хотите устанавливать сплошной цвет (сделать его непрозрачным), вы можете использовать прозрачную кисть. Это можно сделать со строковым значением «Прозрачный». Разница заключается в том, как будет устанавливаться свойство. Если вы присвоите null для свойства brush, свойство будет действительно равно null. Если вы установите строку «Transparent», значение значение-конвертер , преобразующее строку в кисти, преобразует ее в кисть Brushes.Transparent.

Короткая версия: {x:Null} устанавливает свойство назначения - null. «Прозрачный» задает свойство назначения прозрачной кисти.

715
задан Tanktalus 9 October 2008 в 14:35
поделиться

8 ответов

Под файловой системой файлы представлены inodes (или он несколько inodes, не уверенные)

, файл А в файловой системе является в основном ссылкой на inode.
жесткая ссылка А тогда просто создает другой файл со ссылкой на то же, лежащее в основе inode.

при удалении файла он удаляет одну ссылку на базовый inode. inode только удален (или удаляемый/сверхперезаписываемый), когда все ссылки на inode были удалены.

символьная ссылка А является ссылкой на другое имя в файловой системе.

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

Примечание: Жесткие ссылки только допустимы в той же Файловой системе. Символьные ссылки могут охватить файловые системы, поскольку они - просто название другого файла.

735
ответ дан Martin York 9 October 2008 в 14:35
поделиться

Я прибавляю вопрос Nick's: когда жесткие ссылки полезны или необходимы? Единственное приложение, которое появляется по моему мнению, в котором символьные ссылки не сделали бы задания, предоставляет копию системного файла в chrooted среде.

5
ответ дан Federico A. Ramponi 9 October 2008 в 14:35
поделиться

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

  • резервное копирование копии номер n к n + 1
  • копия копируют n - 1 к n
  • ...
  • копия копирует 0 для резервного копирования 1
  • , обновление копирует 0 с любыми измененными файлами.

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

8
ответ дан JesperE 9 October 2008 в 14:35
поделиться

Я указал бы на Вас на Википедию:

Несколько точек:

  • Символьные ссылки, в отличие от жестких ссылок, могут пересечь файловые системы (большую часть времени).
  • Символьные ссылки могут указать на каталоги.
  • Жесткие ссылки указывают на файл и позволяют Вам обратиться к тому же файлу больше чем с одним именем.
  • пока существует по крайней мере одна ссылка, данные все еще доступны.
19
ответ дан Jamal 9 October 2008 в 14:35
поделиться

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

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

29
ответ дан Andrew Medico 9 October 2008 в 14:35
поделиться

Жесткие ссылки полезны, когда исходный файл становится перемещенным. Например, перемещая файл от / мусорного ведра до/usr/bin или к/usr/local/bin. Любая символьная ссылка на файл в / мусорном ведре была бы повреждена этим, но hardlink, будучи ссылкой непосредственно на inode для файла, не будет заботиться.

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

Жесткие ссылки также занимают меньше времени для разрешения - символьные ссылки могут указать на другие символьные ссылки, которые находятся в symlinked каталогах. И некоторые из них могли быть на NFS или других файловых системах высокой задержки, и так могли привести к сетевому трафику для разрешения. Жесткие ссылки, будучи всегда в той же файловой системе, всегда разрешаются в единственном поиске, и никогда не включают сетевую задержку (если бы это - hardlink в файловой системе NFS, сервер NFS сделал бы разрешение, и это было бы невидимо для клиентской системы). Иногда это важно. Не для меня, но я могу вообразить высокоэффективные системы, где это могло бы быть важно.

я также думаю вещи как mmap (2) и даже открываюсь (2), используют ту же функциональность в качестве hardlinks для хранения файла inode активный так, чтобы, даже если файл добирается, расцепили (2) редактор, inode остается предоставлять продолженный доступ процесса, и только как только процесс закрывается, это делает файл, действительно уходят. Это допускает намного более безопасные временные файлы (если можно получить открытое и расцепить для случая атомарно, который может быть API POSIX для этого, я не помню, тогда у Вас действительно есть безопасный временный файл), где Вы можете чтение-запись Ваши данные ни с кем способность получить доступ к нему. Ну, это было верно, прежде чем/proc дал всем способность посмотреть на Ваши дескрипторы файлов, но это - другая история.

, Разговор которого, восстанавливая файл, который открыт в процессе A, но расцепляемый в файловой системе, вращается вокруг использования hardlinks для воссоздания ссылок inode, таким образом, файл не уходит, когда процесс, который имеет его открытые завершения это или уходит.

67
ответ дан Tanktalus 9 October 2008 в 14:35
поделиться

Хорошая интуиция, которая может помочь при использовании любой консоли Linux (ish).

Создайте два файла:

$ touch foo; touch bar

Введите в них данные:

$ echo "Cat" > foo
$ echo "Dog" > bar

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

И, как и ожидалось:

$cat foo; cat bar
Cat
Dog

Давайте создадим жесткие и мягкие ссылки:

$ ln foo foo-hard
$ ln -s bar bar-soft

Посмотрим, что только что произошло:

$ ls -l

foo
foo-hard
bar
bar-soft -> bar

Изменение имени foo не имеет значения:

$ mv foo foo-new
$ cat foo-hard
Cat

foo-hard указывает на индексный дескриптор, содержимое файла - это не было изменено.

$ mv bar bar-new
$ ls bar-soft
bar-soft
$ cat bar-soft  
cat: bar-soft: No such file or directory

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

Аналогичным образом, если foo удаляется, foo-hard все еще сохраняет содержимое; если бар удален,

438
ответ дан 22 November 2019 в 21:28
поделиться

Также:

  1. Скорость чтения жестких ссылок лучше, чем символьных ссылок (микро-производительность)
  2. Символьные ссылки можно копировать, управлять версиями и т. Д. Другими словами, это настоящий файл. С другой стороны, жесткая ссылка - это нечто немного более низкое, и вы обнаружите, что по сравнению с символическими ссылками меньше инструментов, которые предоставляют средства для работы с жесткими ссылками как с жесткими ссылками, а не как с обычными файлами
3
ответ дан 22 November 2019 в 21:28
поделиться
Другие вопросы по тегам:

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