Czy jest jakaś różnica między hardlinkingiem z cp -l lub ln?


15

Wdrażam schemat tworzenia kopii zapasowych przy użyciu rsync i hardlinks. Wiem, że mogę używać link-dest z rsync do robienia twardych dowiązań, ale widziałem wzmiankę o użyciu „cp -l”, zanim „link-dest” został zaimplementowany w rsync. Inną znaną metodą linkowania na twardo jest „ln”.

Moje pytanie brzmi zatem z ciekawości: czy istnieje różnica w tworzeniu linków twardych przy użyciu „cp -l” w porównaniu do używania „ln”?


Linki są nierozróżnialne.
— rici

Chcesz powiedzieć, że nie ma różnicy? Można je stosować zamiennie?
— twan163

Sam przeprowadziłem mały test, ale na pierwszy rzut oka nie widziałem żadnej różnicy między nimi.
— twan163,

cp: illegal option -- lczy jesteś pewien, że cp ma opcję l?
— Tom

Odpowiedzi:


16

Rezultaty obu muszą być takie same, ponieważ tworzony jest twardy link do oryginalnego pliku.

Różnica polega na zamierzonym użyciu, a zatem na opcjach dostępnych dla każdego polecenia. Na przykład cpmożna użyć rekurencji, lnale nie można:

cp -lr <src> <target>

utworzy twarde linki <target>do wszystkich plików w <src>. (tworzy nowe katalogi; nie łącza) W rezultacie struktura drzewa katalogów <target>będzie wyglądać identycznie jak ta pod <src>. Różni się od cp -r <src> <target>tego, że użycie tego ostatniego spowoduje skopiowanie każdego pliku i folderu i nadanie każdemu nowego, inodepodczas gdy ten pierwszy używa twardych linków do plików, a zatem po prostu zwiększa ich Linksliczbę.

Gdy użyjesz go do skopiowania pojedynczego pliku, jak w twoim przykładzie, wyniki będą identyczne.


jeśli dobrze rozumiem, „cp -lr” utworzy dowiązania twarde dla wszystkich plików, ale jeśli brakuje katalogów w <target>, zostaną one utworzone jako nowe (tj. nie będzie dowiązań twardych do katalogów w <target>)?
— twan163

Tak, to jest poprawne. Nie można tworzyć twardych linków do katalogów. Dlatego w celu zachowania struktury pliku / katalogu staje się on twardym dowiązaniem do plików w „prawdziwych” katalogach.
— garethTheRed

odnośnie zachowania dla "cp -lr": hardlinks dla plików ... nowe katalogi dla katalogów. wydaje się trochę dziwne, ale myślę, że to „dziwne” zachowanie jest efektem ubocznym ograniczeń (nie może zawierać linków twardych do katalogów). ||| również FYI w celach informacyjnych oto kilka linków do informacji o linkach twardych niedozwolonych dla directoreis ref1 z askubuntu i ref2 z unix.stackexchange .
— Trevor Boyd Smith

2

link używa najmniej wywołań systemowych, następnie ln i na koniec cp :

$ strace link f.txt g.txt | wc --lines
282

$ strace ln --symbolic f.txt g.txt | wc --lines
311

$ strace ln f.txt g.txt | wc --lines
334

$ strace cp --symbolic f.txt g.txt | wc --lines
394

$ strace cp --link f.txt g.txt | wc --lines
410
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.