В отличии от символических ссылок (softlink), которые являются файлом с адресом оригинального файла, хард линки (hardlink) на файл это просто разные имена одного файла. (тут чуть понятнее)
Возьмём для примера CentOS, с настройкой сетевого интерфейса.
# ls -la /etc/sysconfig/networking/devices/
total 24
drwxr-xr-x 2 root root 4096 Nov 16 20:23 .
drwxr-xr-x 4 root root 4096 Nov 16 20:23 ..
-rw-r--r-- 3 root root 243 Jul 7 2010 ifcfg-eth0
Мы видим единственный файл, где после атрибутов идёт цифра 3 - это сколько имён у нашего файла.
Проверим - покажем inode-ы файлов (что-то вроде уникального номера файла для одной ФС)
# ls -lai /etc/sysconfig/networking/devices/
total 24
2032307 drwxr-xr-x 2 root root 4096 Nov 16 20:23 .
2032306 drwxr-xr-x 4 root root 4096 Nov 16 20:23 ..
2031627 -rw-r--r-- 3 root root 243 Jul 7 2010 ifcfg-eth0
Теперь проверим в других местах...
# ls -lai /etc/sysconfig/networking/profiles/default/ifcfg-eth0
2031627 -rw-r--r-- 3 root root 243 Jul 7 2010 /etc/sysconfig/networking/profiles/default/ifcfg-eth0
# ls -lai /etc/sysconfig/network-scripts/ifcfg-eth0
2031627 -rw-r--r-- 3 root root 243 Jul 7 2010 /etc/sysconfig/network-scripts/ifcfg-eth0
Первое число и есть наш номер inode, и мы видим, что он одинаковый.
Если нам надо создать хард-линк -- это делается командой ln
Если надо найти все файлы с данным inode -- это делается через find, ключ -inum или просто -samefile. Пример:
# find /etc/ -samefile /etc/sysconfig/networking/devices/ifcfg-eth0 -print
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/networking/profiles/default/ifcfg-eth0
/etc/sysconfig/networking/devices/ifcfg-eth0
И небольшое замечание: если у нас есть система, которая не хочет правильно работать с адресом (получать dhcp вместо статики или наоборот) - что-то не в порядке с указанными файлами. Надо проверить их и при необходимости пересоздать линк.
Не могу понять зачем нам в данном примере иметь три версии одного и того же файла(конкретно ifcfg-eth0). Не объяснишь, с практической точки зрения, зачем это нужно?
ОтветитьУдалить