Problem
Beim Kopieren von Dateien mit cp -H
oder cp -L
erhalte ich die gleichen Ergebnisse:
$ ls -l fileA
fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
fileA # fileA is a copy of fileB, only renamed, with same properties!
Diese Antwort hier beschreibt beide Optionen als ähnlich, UNLESS in Kombination mit -R
. Nicht für mich. Soft-as-Hardlink-Dateien werden in Kopien der Dateien umbenannt, auf die sie an der Quelle verweisen.
Frage :
Was ist der richtige Gebrauch von cp -H
und cp -L
? Ist das das erwartete Verhalten?
Mein Lösungsversuch :
man cp
sagt mir für beide Optionen dasselbe, aber info cp
der Wortlaut macht es für mich noch verwirrender. Vielleicht kann man mir helfen, das ein bisschen aufzuschlüsseln:
-H
Wenn ein Befehlszeilenargument eine symbolische Verknüpfung angibt, kopieren Sie die Datei, auf die es verweist, und nicht die symbolische Verknüpfung selbst. Kopieren Sie jedoch alle symbolischen Verknüpfungen , die durch rekursives Durchlaufen auftreten (wobei die Natur der Verknüpfung erhalten bleibt).
Das klingt für mich wie ein Widerspruch: Ich denke, dass » die Natur eines symbolischen Links « ist, dass es irgendwo hinweist…
-L, --dereference
Folgen Sie beim Kopieren symbolischen Links. Mit dieser Optioncp
kann keine symbolische Verknüpfung erstellt werden. Beispielsweise wird ein Symlink (zu einer regulären Datei) im Quellbaum in eine reguläre Datei im Zielbaum kopiert.
Ich weiß, dass ein Symlink keine reguläre Datei ist, aber… ich gebe zu, dass ich mit dieser Erklärung hier überfordert bin.
info cp
und versuchte herauszufinden, was die Wortwahl bei dieser Option tatsächlich bedeutet & ndash; und worum es in diesem Beitrag geht. Das Posting enthält auch den eigentlichen Wortlaut von info cp
- also muss ich ihn zumindest geöffnet haben…;)
info cp
, suchen nach-R
. Es heißtCopy directories recursively.
aber Sie testen mit Nicht-Verzeichnissen. Der Unterschied besteht darin, was sich in den Verzeichnissen befindet, die Sie kopieren, und nicht in den Befehlszeilenargumenten.