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”?
cp: illegal option -- l
czy jesteś pewien, że cp ma opcję l?Odpowiedzi:
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
cp
można użyć rekurencji,ln
ale nie można: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ę odcp -r <src> <target>
tego, że użycie tego ostatniego spowoduje skopiowanie każdego pliku i folderu i nadanie każdemu nowego,inode
podczas gdy ten pierwszy używa twardych linków do plików, a zatem po prostu zwiększa ichLinks
liczbę.Gdy użyjesz go do skopiowania pojedynczego pliku, jak w twoim przykładzie, wyniki będą identyczne.
źródło
link używa najmniej wywołań systemowych, następnie ln i na koniec cp :
źródło