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

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

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

23
02.01.2020, 02:36
4 ответа

При копировании файла он копирует содержание. Таким образом, если Вы изменяете содержание единственного файла, который не имеет никакого эффекта на другой.

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

31
27.01.2020, 19:41
  • 1
    Для очень больших файлов действительно ли создание является жесткой ссылкой всегда быстрее, чем копирование исходного файла? –  Jorge Bucaran 15.10.2015, 07:40

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

14
27.01.2020, 19:41
  • 1
    Спасибо за быстрый ответ. Затем, почему я хотел бы использовать жесткую ссылку вместо гибкой ссылки? –  Mike B 16.02.2013, 20:11
  • 2
    softlink является basicly указатель на другой файл. Таким образом, при удалении исходного файла softlink будет все еще существовать, но будет поврежден. hardlink является 2 названиями того же файла, таким образом, они могут быть индивидуально удалены. объяснение –  Peter 16.02.2013, 20:13
  • 3
    Peter хорошо, но он не учтен "число каналов". В inode файла (на дисковых метаданных) существует число каналов. Жесткая ссылка увеличивает число каналов, гибкая ссылка не делает. Ядру позволяют удалить содержание файла, если число каналов опускается до нуля. –  Bruce Ediger 16.02.2013, 20:15
  • 4
    я думаю ответ Alan на это, имеет важный момент: изменение файла изменяет все, что это - hardlinks с копией, у них было бы другое содержание. –  donothingsuccessfully 16.02.2013, 20:33

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

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

Вы видите inode числа файлов с помощью -i переключитесь на ls команда.

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

6
27.01.2020, 19:41

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

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

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

Классическим примером является LVM. Когда-то HP-UX использовал трудно связанные файлы для различных исполняемых файлов (например. vgdisplay, vgcreate, vgextend, и т.д. Сегодня, как Linux, эти команды являются на самом деле символьными (мягкими) ссылками на lvm исполняемый файл.

1
27.01.2020, 19:41
  • 1
    Это не имеет никакого отношения к вопросу. –  rjmunro 17.02.2013, 01:06
  • 2
    @rjmunro я прошу отличаться. OP спросил, "почему я хотел бы использовать жесткие ссылки вообще?" –  JRFerguson 17.02.2013, 09:14
  • 3
    я не понимаю последнего примера. Однажды, были жесткие ссылки на большое количество исполняемых файлов, теперь существуют гибкие ссылки на один исполняемый файл. Как те гибкие ссылки различимы? –  Emanuel Berg 18.02.2013, 05:39
  • 4
    @EmanuelBerg, которым Моя точка была то, что независимо от или трудно или гибкие ссылки используются, это - имя, которым исполняемый файл вызывается, который определяет опции и аргументы, которые допустимы для выполнения. –  JRFerguson 18.02.2013, 05:47
  • 5
    @EmanuelBerg TMTOWTDI –  JRFerguson 19.02.2013, 04:41

Теги

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