![was ist der Zweck von cp-s?](https://rvso.com/image/36039/was%20ist%20der%20Zweck%20von%20cp-s%3F.png)
wie die Antwort auf diese Frage zeigt, Gibt es einen Unterschied zwischen dem Hardlinking mit cp -l oder ln?
Der Zweck der Option -l für den Befehl cp besteht darin, Verzeichnisse (deren Inhalt) rekursiv zu verlinken. Die Option -s ist das Gegenstück und erstellt Softlinks statt Hardlinks, aber es scheint, dass sie nicht rekursiv verwendet werden kann.
Jeder entsprechende Versuch führt zu der Fehlermeldung:
cp: `source_dir/source_file': can make relative symbolic links only in current directory
Vielleicht ist das von der Distribution abhängig. In Ubuntu 12.04 ist dies das Ergebnis. Nur wenn die Originaldatei und der Link im selben Verzeichnis liegen, funktioniert es.
Vielleicht ist die Syntax falsch?
cp -rs target_directory destination_directory
Das habe ich verwendet.
Beispiel:
$ ls sourcedir/
-rw-rw---- 1 user group 1123 Jan 8 23:10 source_file
$ cp -rs sourcedir/ targetdir/
cp: `targetdir/sourcedir/source_file': can make relative symbolic links only in current directory
Antwort1
Bei einem absoluten Pfad zum Quellverzeichnis:
cp -rs $PWD/sourcedir/ targetdir/
Die symbolischen Links in targetdir
enthalten dann absolute Pfade zu sourcedir
.
Andernfalls würde, wenn nur ein symbolischer Link erstellt würde, etwa Folgendes entstehen:
targetdir/filename -> sourcedir/filename
Dies ist jedoch nicht der richtige relative Pfad zum Suchen der Originaldatei. Er sollte lauten:
targetdir/filename -> ../sourcedir/filename
cp
versucht nicht herauszufinden, in welcher Beziehung die Quell- und Zielverzeichnisse zueinander stehen, um die entsprechende Anzahl an ../
Präfixen hinzufügen zu können.