Ответ
Hardlink (ln) и копирование (cp) кардинально различаются с точки зрения использования дискового пространства и синхронизации данных.
| Аспект | Hardlink | Копирование (cp) |
|---|---|---|
| Inode | Совместно использует тот же inode с оригиналом. | Создает новый inode и новые блоки данных на диске. |
| Дисковое пространство | Практически не потребляет дополнительного места (только запись в каталоге). | Занимает столько же места, сколько исходный файл. |
| Синхронизация данных | Изменения в одном хардлинке мгновенно видны во всех других, так как это один набор данных. | Копия полностью независима. Изменения в оригинале не затрагивают копию, и наоборот. |
| Удаление | Удаление одного хардлинка не удаляет данные. Данные удаляются, когда удален последний хардлинк. | Удаление копии не влияет на оригинал. |
Практический пример: Допустим, у меня есть большой лог-файл, который активно пишется приложением, и мне нужно его ежедневно архивировать.
# ПЛОХО: Копирование заблокирует файл и может скопировать неконсистентные данные
$ cp /var/log/app.log /backup/app.log.$(date +%F)
# ЛУЧШЕ (шаг 1): Создать хардлинк для моментального "снимка"
$ ln /var/log/app.log /backup/snapshot.log
# Теперь snapshot.log и app.log указывают на одни данные.
# (шаг 2): Скопировать этот снимок, уже не мешая работе основного лога
$ cp /backup/snapshot.log /backup/app.log.$(date +%F)
# (шаг 3): Удалить временный хардлинк
$ rm /backup/snapshot.log
# Основной лог-файл app.log продолжает работу без проблем.
Таким образом, хардлинки полезны для создания консистентных снапшотов без простоев, а копирование — для создания независимых резервных копий или распространения файлов.