Команды
-sfnпри замене симлинка-на-каталог критичен: без-nln положит ссылку ВНУТРЬ существующего каталога-цели (см. ln).
Разница между symlink и hard link, когда что использовать, битые ссылки.
ln -s target link
символическая (обычная)
ln -sfn target linkdir
пересоздать symlink (на каталог — с -n!)
readlink -f link
реальная цель
find . -xtype l
битые symlink
ln target hardlink
жёсткая (та же ФС, тот же inode)
cp -P link dst
сохранить саму ссылку при копировании
cp -a src dst
архивно: ссылки как есть
-sfnпри замене симлинка-на-каталог критичен: без-nln положит ссылку ВНУТРЬ существующего каталога-цели (см. ln).
Symlink (-s) |
Жёсткая | |
|---|---|---|
| На каталог | да | нет |
| Между ФС | да | нет |
| Удалили цель | «битый» | данные живы, пока есть имена |
Видно в ls -l |
-> target |
как обычный файл |
| Свой inode | да | нет (тот же) |
Применение: symlink — деплой «current → релиз», переключение конфигов, общие
библиотеки. hard link — дедупликация в пределах ФС (снапшот-бэкапы, см.
rsync --link-dest).
Цель удалили/переместили. Найди: find . -xtype l. Пересоздай на верную цель
(ln -sf). ls подсветит битые красным.
cp по умолчанию идёт по symlink (копирует цель). cp -P сохранит саму ссылку,
cp -a/-d — архивно (ссылки как есть). tar хранит симлинки; tar -h разыменует.
Жёсткие ссылки делят одни блоки — du считает их один раз (что путает). Это норма;
du --count-links посчитает каждое имя.
Без -H rsync не сохраняет жёсткие ссылки (копирует данные повторно). Для снапшотов
с дедупликацией — --link-dest (см. rsync).
Есть неточность? Сообщить об ошибке в статье