[ @debian @hardlink ]
hardlink — имя файла, ссылка на inode файла.
При редактировании хардлинка происходит редактирование оригинального файла, на который ссылается хардлинк.
Хардлинк характерен тем, что при удалении хардлинка оригинальный файл тоже удаляется. Но не всегда. См. теорию Software:Симлинки и хардлинки
Важно помнить:
- Открывая ссылку на редактирование (все равно какую - link01 или link02), вы автоматически модифицируете исходный файл.
- Двойное внимание к удалению ссылок!
- Если удалить ЖЁСТКУЮ ссылку link02, файл 'file.txt' также будет удалён. Учесть, что файл невозможно удалить до тех пор, пока на него указывает хоть одна жесткая ссылка в любом месте системы. Как только она будет удалена, файл тоже исчезнет.
- Если удалить СИМВОЛИЧЕСКУЮ ссылку link02, то жёсткая ссылка (и сам файл) останутся. Для безопасности пользуемся символическими ссылками.
И см. symlink
Создать и переименовать хардлинк одной командой
ln /home/mySettings/myScripts/debian/debian_update_and_upgrade.sh ~/.local/bin/updeb
В каталоге ~/.local/bin/ появится новый файл с названием “debup”.
Почему “debup”? Как захотел, так и назвал. Если бы не прописал ему название, то появился бы файл ~debian_update_and_upgrade.sh
Почему он отображается с тильдой? Потому что это не сам файл, а симлинк на файл.
Проверить хардлинк
через ls
И параметр -l (long format)
ls -l test.txt
Ожидаем ответ такого вида:
-rw-r--r-- 2 astenix astenix 87 окт 26 21:12 test.txt
Собственно, это атрибуты оригинального файла.
Можно узнать сразу и если файл — симлинк, и если да, то узнать inode, на который он указывает
ls -li test.txt
Можно получить информацию сразу о нескольких файлах
ls -li test.txt test2.txt
И если в ответе видно, что оба файла указывают на один и тот же inode, то перед нами — хардлинки.
через file
file test.txt
Ответ:
test.txt: Unicode text, UTF-8 text
Если бы файл был симлинком, ответ был бы такой:
test.txt: symbolic link to /home/AppImages/test.txt
через readlink
readlink test.txt
Если это хардлинк, в ответ будет полная тишина (словно ничего не произошло).
И если проверяемый файл не существует, в ответ тоже вернется тишина, поэтому данный способ проверки мало кто использует. Есть возможность вызывать команду с параметром -v, но проще забить.
Если это симлинк, в ответ должен вернуться путь на оригинал:
/home/AppImages/test.txt