LINUX.ORG.RU

Чем хардлинки отличаются от симлинков. И как правильно скопировать, наверно симлинки, в rsync?

 , ,


0

1

Копировать симлинки как симлинки и то же самое для хардлинков. Это следует выбирать? И зачем это нужно, объясните как чайнику.

Название «хардлинк» несколько дезориентирующее.
Чтобы понять что это такое надо понимать как работают каталоги в файловой системе.
В Linux один файл может храниться разом по нескольким путям.

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

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

Ааа, а симлинк это просто ссылка на файл, но когда я удалю его, файл останется, но что будет если я скопирую симлинк? -Файл не скопируется? Что будет если я перемещу сим/хард-линк, первый не сможет открыть файл, а второй укажет на него? А если пенремещать не линки, а файлы? Я вроде бы понял что значит копировать такой-то — линк как такой--то — линк. При использовании этой опции сохраниться линк, но не файл.

just_a_brake
() автор топика
Ответ на: комментарий от just_a_brake

Я конечно не специалист по симлинкам, но при копировании симлинка копируется симлинк, если ты только не попросишь приложение развернуть симлинк и взять файл на который тот указывает (или автор того приложение не имеет такой bright idea). Хардлинки некоторый софт для сравнения дупликатов (вариант дедупликации) ломают, потому что это 100% один и тот же файл. Номожно посмотреть число ссылок на файле и наверное сами ссылки, я не понимаю в чём проблема вообще.

anonymous
()
Ответ на: комментарий от anonymous

точнее понимаю, но не понимаю почему это не лучше решить как-либо, потому что так вообще не работает.

anonymous
()
Ответ на: комментарий от just_a_brake

Хардлинк это и есть сам файл и его копирование есть копирование оригинала.
К стати по этому существовать он может только на одной ФС с «оригиналом»
А симлинк да, это просто ссылка на файл, то есть отдельный объект и при его копировании скопируется именно именно он, а не оригинальный файл.
При этом надо учитывать то, что ссылка в симлинках может быть как абсолютной, так и относительной.

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

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

anonymous
()
Ответ на: комментарий от PexuOne

Позже. Я так и не понял как создать e-mail на lavabit и настроить всякие там сертификаты шифрования.

just_a_brake
() автор топика
Ответ на: комментарий от torvn77

Хардлинк это и есть сам файл и его копирование есть копирование оригинала.

Не совсем так.

Файл — это область на диске.

Имя файла в Linux-ФС — это указатель на эту область. Соответственно, имён может быть несколько. Это будут хардлинки. На диске блок данных файла один, а имён (хардлинков) — несколько. При чём ты не можешь как-то выделить одно имя на фоне другого — они равноценны.

При удалении одного имени/хардлинка файл физически остаётся не удалённым, пока есть другие. Когда не остаётся ни одного имени/хардлинка — файл удаляется.

А вот симлинк — это ссылка не на файл, а на имя файла. Соответственно, при удалении имени/файла, симлинк остаётся, но указывает уже в никуда. Потому что имени, куда он указывал, больше нет.

KRoN73 ★★★★★
()

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

  1. хардлинки возможны только в пределах одной файловой системы
  2. хардлинки возможны только для файлов, но не для каталогов
no-such-file ★★★★★
()
Ответ на: комментарий от just_a_brake

что будет если я скопирую симлинк?

смотря как копировать. cp с ключом -d копирует именно симлинк, без этого ключа - файл по симлинку

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.