Problem
Podczas kopiowania plików za pomocą cp -H
lub cp -L
otrzymuję te same wyniki:
$ ls -l fileA
fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
fileA # fileA is a copy of fileB, only renamed, with same properties!
Ta odpowiedź tutaj opisuje obie opcje jako podobne UNLESS używane w połączeniu z -R
. Nie dla mnie. Soft- jako pliki dowiązane stają się kopiami plików, które wskazują na źródło.
Pytanie :
Jakie jest właściwe użycie cp -H
i cp -L
? Czy to jest oczekiwane zachowanie?
Moja próba rozwiązania :
man cp
mówi mi to samo dla obu opcji, ale info cp
jest sformułowanie czyni go jeszcze bardziej mylące dla mnie. Może może mi pomóc to trochę rozwiązać:
-H
Jeśli argument wiersza poleceń określa dowiązanie symboliczne, skopiuj wskazany plik zamiast samego dowiązania symbolicznego . Jednak skopiować (zachowując swój charakter) dowolny link symboliczny , który jest napotkany przez rekurencyjnego przechodzenia.
Brzmi to dla mnie jak sprzeczność: myślę, że » naturą dowiązania symbolicznego « jest to, że wskazuje gdzieś…
-L, --dereference
Podczas kopiowania z nich korzystaj z dowiązań symbolicznych. Dzięki tej opcjicp
nie można utworzyć dowiązania symbolicznego. Na przykład dowiązanie symboliczne (do zwykłego pliku) w drzewie źródłowym zostanie skopiowane do zwykłego pliku w drzewie docelowym.
Wiem, że dowiązanie symboliczne nie jest zwykłym plikiem, ale… Przyznaję, że omawia mnie to wyjaśnienie.
info cp
, wyszukaj-R
. Mówi:Copy directories recursively.
Ale testujesz z nie-katalogami. Różnica polega na tym, co znajduje się w katalogach, które kopiujesz, a nie na argumentach wiersza poleceń.info cp
i starałem się zorientować, co właściwie oznacza wybór słów w tej opcji & ndash; i o czym jest ten post.info cp
Odpowiedzi:
W przypadku dowiązań symbolicznych narzędzia mają dwie możliwości:
Mówienie, że
-H
„zachowuje swoją naturę” nie jest sprzecznością. Rozważ alternatywę. Jeśli użyjesz-L
, wszelkiecp
znalezione dowiązania symboliczne zostaną otwarte, a ich zawartość skopiowana do nazwy pliku docelowego. Więc źródłem było dowiązanie symboliczne, ale jego kopia nie jest dowiązaniem symbolicznym. Więc „straciło swoją naturę jako dowiązanie symboliczne”.Rozważać
źródło
Różnica w zachowaniu między
-L
i-H
pojawia się, gdy-r
jest określona.cp
nie utworzy dowiązań symbolicznych w podkatalogach,-L -r
ale zrobi to, jeśli użyjesz-H -r
.źródło