LINUX.ORG.RU

Что значит копировать симлинк как симлинк и тоже для хардлинков?

 , ,


0

1

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

При копировании симлинков они остаются симлинками, и продолжают указывать туда же, куда и указывали. Если симлинк абсолютный, то он будет продолжать указывать на существующий файл. Если относительный — то на несуществующий (если конечно файла с таким же именем нет по тому же относительному пути от симлинка, там, куда ты его кладёшь).

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

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

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

Тут имхо нужно прояснять, что за «копирование». Если cp, то есть ключи -H, -L, меняющие поведение «follow symlinks». Если rsync, то -L, -K. Копирования в вакууме не существует, копирующая программа всегда в курсе типа source (stat/dirent), потому что от этого зависит, как читать source (read, readdir, readlink), как именно создавать destination (creat, mkdir, symlink, etc), и что туда писать.

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

Наверно это оно и есть.. тут на целую статью информации?

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