Kiedy powinienem używać twardych linków zamiast miękkich?

10

Zaraz zacznę się bawić, mklinkale wciąż staram się opanować całą tę „symlink”. W szczególności zauważyłem, że istnieją dwa rodzaje linków - „miękkie linki” i „twarde linki” - ale trudno mi naprawdę zrozumieć różnicę między nimi lub dlaczego powinienem preferować jeden z nich podany przypadek użycia.

Jak dotąd udało mi się zebrać najwięcej:

  • Miękkie łącza są traktowane jako wskaźniki do docelowego pliku / folderu.
  • Dowiązania twarde są traktowane tak, jakby faktycznie były plikiem docelowym / folderem.

Co to tak naprawdę oznacza, jeśli system operacyjny i aplikacje będą traktować łącza? Jakie czynniki należy rozważyć przy podejmowaniu decyzji o użyciu jednego lub drugiego?

Obecny przypadek użycia, jaki mam, to skłonienie SkyDrive do synchronizacji plików / folderów, które znajdują się poza właściwym katalogiem SkyDrive . Wolałbym jednak, aby odpowiedzi zawierały także ogólne wytyczne na przyszłość.

Iszi
źródło

Odpowiedzi:

6

Możliwe jest posiadanie wiszących softlinków, ponieważ softlink jest wskaźnikiem do pliku.

Nie można mieć wiszących linków. Każdy plik ma co najmniej jedno dowiązanie twarde, tj. Pozycję katalogu w systemie plików. Tak więc, jeśli utworzysz plik, a następnie łącze twarde do niego, a następnie usuniesz oryginalny plik, nie będzie to miało wpływu na łącze twarde.

Z tego powodu twarde linki mogą prowadzić do przekonania, że ​​po usunięciu pliku naprawdę go nie ma, chociaż dopóki nie usuniesz WSZYSTKICH twardych linków, plik nadal będzie istniał. Przez większość czasu chcesz używać softlinków, chyba że chcesz skorzystać z tego konkretnego aspektu hardlinków.

LawrenceC
źródło
Zatem odpowiednia interpretacja metaforyczna byłaby taka, że ​​miękki link jest tylko skrótem do pliku, podczas gdy twardy link jest zsynchronizowaną kopią pliku?
Iszi
Cóż ... pamiętaj, że hardlink tak naprawdę nie tworzy dodatkowej kopii danych pliku. To kolejny fizyczny wpis do katalogu. Tak więc dwa dowiązania twarde do pliku nie zmienią bardzo dużo miejsca na dysku.
LawrenceC
Jeśli jesteś obeznany z koncepcjami programowania, pomyśl o miękkim łączu jako tradycyjnym wskaźniku, a twardym jako o liczniku referencyjnym (inteligentnym) wskaźniku.
paddy