Zasadniczo istnieją dwa główne ograniczenia dotyczące twardych linków:
- Twarde łącza zwykle wymagają, aby łącze i plik znajdowały się w tym samym systemie plików.
- Tylko superużytkownik może utworzyć stałe łącze do katalogu.
W ten sposób wprowadzono dowiązania symboliczne, aby ominąć ograniczenia dowiązań twardych. Pytanie brzmi, czy twarde linki są nadal potrzebne? Czy może zdarzyć się sytuacja, w której będą bardziej przydatne?
Odpowiedzi:
Linki twarde pomagają nam organizować nasz system plików w znacznie bardziej elastyczny sposób. Zasadniczo hardlinks pozwalają nam pobrać jeden plik i mieć wiele miejsc w systemie plików jednocześnie. Pomyśl o scenariuszu, w którym jesteś fotografem i masz dużo zdjęć (to przykład z mojego życia!). Możesz je organizować według osób, które się w nich pojawiają, ponieważ czasami ludzie proszą Cię o ich zdjęcia. Możesz jednak chcieć uporządkować je według lokalizacji i daty. Nie ma prawdziwego sposobu na zagnieżdżenie tych trzech rzeczy, są one całkowicie odrębnymi osiami organizacji. Możesz więc stworzyć trzy różne hierarchie dla tych trzech różnych rzeczy i mieć każde zdjęcie we wszystkich trzech, beztrzykrotne przechowywanie każdego zdjęcia. To magia hardlinków. Odłącz dowiązania symboliczne, nie musimy się martwić, gdzie jest „prawdziwy plik”, ponieważ wszystkie są prawdziwymi plikami. Możemy usuwać i przenosić do woli, ponieważ plik zostanie zachowany, dopóki nie będzie już żadnych odniesień do niego, i usunięty po usunięciu ostatniego twardego łącza. Jest to proste i nie wymaga dużej kontroli.
źródło
gzip
,gunzip
izcat
.Zawartość pliku nie zostanie wyczyszczona, dopóki wszystkie twarde linki (tak, wszystkie nazwy plików są twardymi linkami, nawet pierwsze) nie zostaną usunięte, a plik zamknięty. Jako taki, może być przydatny, gdy plik jest wymagany w wielu miejscach, ale może być usunięty z dowolnego z nich w dowolnym momencie, np. Pomiędzy
~/Downloads/coolsong.mp3
i~/Music/Cool Song.mp3
.źródło
Jedną niezbyt ważną zaletą twardego łącza w stosunku do dowiązania symbolicznego jest to, że kiedy osiąga on i-węzeł dla twardego łącza, jądro nie ma dalszego przetwarzania, aby uzyskać dostęp do pliku. Kiedy napotka dowiązanie symboliczne, jądro musi odczytać wartość dowiązania i kontynuować przeglądanie struktury katalogów, zanim dotrze do i-węzła pliku. Trwa to dłużej, choć różnica niekoniecznie jest łatwa do zmierzenia. Jest naprawdę fajnie, gdy jednym z elementów wartości dowiązania symbolicznego jest dowiązanie symboliczne.
źródło
istnieje kilka powodów twardych linków
Jednym z powodów korzystania z twardych linków jest prawdopodobnie zaoszczędzenie dużej ilości miejsca ...
Możesz dołączyć do jednego z odniesień, a dane trafią do udostępnionego pliku. Możesz także dołączyć do jednego deskryptora pliku podczas czytania z drugiego (np. Z tail -f)
źródło
Wiele z podanych tu przykładów jest poprawnych, ale działałoby równie dobrze z miękkimi linkami (np. Problem „potrzebujesz jednego pliku w wielu miejscach”).
Dobrym przykładem, w którym twarde linki są naprawdę pomocne, jest oprogramowanie do tworzenia kopii zapasowych Dirvish :
Dirvish tworzy kopie zapasowe na poziomie systemu plików (tzn. Kopiuje pliki, nie tworzy obrazów), kopiując pliki do osobnego (zapasowego) systemu plików (takiego jak dysk twardy USB). Za każdym razem, gdy wykonasz kopię zapasową, dirvish utworzy osobną, kompletną kopię drzewa katalogów do zapisania.
Sztuczka polega na tym, że jeśli dirvish wykryje, że istnieje już starsza kopia zapasowa zapisywanego drzewa, automatycznie użyje plików, które nie uległy zmianie, tworząc twardy link w nowym drzewie do pliku w starym drzewie.
W ten sposób każda kopia zapasowa jest kompletną, niezależną kopią drzewa katalogów, ale jednocześnie tylko zmienione pliki faktycznie zajmują miejsce w systemie plików. Innymi słowy, zyskujesz korzyści z przyrostowych kopii zapasowych (oszczędność miejsca) i pełnych kopii zapasowych (łatwe pobieranie) w tym samym czasie.
Jest to możliwe tylko dlatego, że twarde linki są całkowicie przezroczyste dla narzędzi przestrzeni użytkownika.
Prawdopodobnie działałoby to również z dowiązaniami symbolicznymi (chociaż przy tworzeniu kopii zapasowej danych korzystających z samych dowiązań symbolicznych pojawiałyby się problemy), ale jedną z zalet możliwych tylko w przypadku dowiązań twardych jest:
Jeśli chcesz wyrzucić stare kopie zapasowe, możesz po prostu usunąć odpowiednie drzewo katalogów kopii zapasowych. Pliki połączone tylko z tego drzewa są automatycznie usuwane przez system plików (ponieważ ich ostatnie twarde łącze jest usuwane), ale pliki, które pojawiają się również w innych kopiach, pozostają na dysku.
źródło
Jednym z przydatnych przypadków jest, powiedzmy, gdy masz program (lub skrypt), który musi pobrać duży tymczasowy plik archiwalny, a po jego rozpakowaniu program natychmiast go usunie.
Jeśli z jakiegoś powodu chcesz zachować ten plik archiwalny do wykorzystania w przyszłości, najlepszym sposobem
ln /tmp/tarball.tgz ~
jest pozostawienie go podczas pobierania. Więc nie musisz nic robić.Po zakończeniu pobierania, a nawet po usunięciu przez program „oryginalnego”, dokładna kopia powinna nadal znajdować się w katalogu domowym.
źródło
Używam „twardych linków” do tworzenia kopii zapasowych niektórych moich „HowTos” i Snippetów
Mam katalog o nazwie „Udostępnione dokumenty” w moim użytkowniku / katalogu głównym. W tym katalogu mam „twarde linki” do moich wskazówek, sztuczek, fragmentów, howto, które znajdują się w odpowiednich katalogach; php, mysql, css, regex, formuły, linux itp., Posiadanie ich w „jednym miejscu” znacznie ułatwia korzystanie z nich, aktualizuje je, niż skakanie w Dokumentach / katalogach w poszukiwaniu tych dokumentów, których często używam.
Dawno temu użyłem dowiązań symbolicznych. Wiernie wykonałbym kopię zapasową tego wspólnego katalogu „Udostępniane dokumenty” na moim serwerze. Problem polega na tym, że dowiązania symboliczne lub „miękkie linki”, jeśli są kopiowane (cp -auv) lub tar'owane i kopiowane, TYLKO tworzą kopię zapasową lub kopiują „link”, a NIE zawartość dokumentu. Musiałbym więc przeglądać katalogi i kopiować każdy z 2 tuzinów plików z ich rzeczywistej lokalizacji.
Dzięki HARD LINKS mogę kopiować, tarować, rsynchronizować katalog „Udostępniane dokumenty” i faktycznie pewnie tworzyć kopie zapasowe tych szeroko rozproszonych dokumentów, a zawartość jest faktycznie tworzona. To naprawdę jest dla mnie beznadziejne, kiedy zdałem sobie sprawę, że tworzę kopie zapasowe „plików linków” 0 zgryzu i nie informacji.
Minusem korzystania z „twardych linków” jest to, że robienie ls w katalogu nie daje ci wskazania, że plik jest „powiązany” z innym plikiem lub gdzie ten plik może współistnieć. Są sposoby, aby je znaleźć, ale mówię, że nie jest to oczywiste z prostym ls -l -> wskazuje na ... Tak więc zazwyczaj na początku dokumentu dodam notatkę wskazującą, który katalog / pliki „ten plik” „jest” udostępniony ”
Landis.
źródło