So kopieren Sie Symlinks als normale Ordner in das Ziel

68

Ich habe einen Ordner mit Symlinks:

marek@marek$ ls -al /usr/share/solr/
razem 36
drwxr-xr-x   5 root root  4096 2010-11-30 08:25 .
drwxr-xr-x 358 root root 12288 2010-11-26 12:25 ..
drwxr-xr-x   3 root root  4096 2010-11-24 14:29 admin
lrwxrwxrwx   1 root root    14 2010-11-24 14:29 conf -> /etc/solr/conf

Ich möchte es nach ~ / solrTest kopieren, aber ich möchte auch Dateien von Symlink kopieren

wenn ich es versuche cp -r /usr/share/solr/ ~/solrTest

Ich werde Symlink hier haben:

marek@marek$ ls -al ~/solrTest
razem 36
drwxr-xr-x   5 root root  4096 2010-11-30 08:25 .
drwxr-xr-x 358 root root 12288 2010-11-26 12:25 ..
drwxr-xr-x   3 root root  4096 2010-11-24 14:29 admin
lrwxrwxrwx   1 root root    14 2010-11-24 14:29 conf -> /etc/solr/conf

quelle

Antworten:

92
cp -Lr /usr/share/solr/ ~/solrTest

Überprüfen Sie die manSeite für Unix-Befehle mitman cp

   -L, --dereference
          always follow symbolic links in SOURCE
Fabio
quelle
4
Ich erhalte die Meldung "cp: Die Optionen -H, -L und -P dürfen nicht mit der Option -r angegeben werden."
Balupton
3
@balupton: versuchen Sie -LR
pt2ph8
11

Aus der Manpage:

'-L', '- dereference' - Folgen Sie beim Kopieren symbolischen Links. Mit dieser Option kann cp keine symbolische Verknüpfung erstellen. Beispielsweise wird ein Symlink (zu einer regulären Datei) im Quellbaum in eine reguläre Datei im Zielbaum kopiert.

Dies ist also die Option, die Sie ausprobieren sollten.

Migol
quelle
5
cp -r -L /usr/share/solr/ ~/solrTest

Von der cp(1)Manpage:

  -L, --dereference
        always follow symbolic links in SOURCE
Amphetamachine
quelle
0

Eine schnelle Lösung ist:

$ mkdir dest_dir
$ cp symlink_dir/* dest_dir/

der Nachteil ist, dass Sie zuerst das Zielverzeichnis erstellen müssen

Andreas Wong
quelle
In einigen Shells werden dadurch keine versteckten Dateien / Ordner kopiert symlink_dir.
vmrob