2010-12-15 15:45:40 +0000 2010-12-15 15:45:40 +0000
81
81

Kopieren eines Verzeichnisses unter Unix

Wie kann ich eine Verzeichnisstruktur, dir1, nach dir2, (mit allen Unterverzeichnissen) unter Unix über das Terminalfenster kopieren?

Antworten (3)

117
117
117
2010-12-15 15:49:02 +0000
cp -rf /source/path/ /destination/path/

-r = rekursiv, kopiert alle Unterverzeichnisse

-f = erzwingen, wenn eine vorhandene Zieldatei nicht geöffnet werden kann, entfernen Sie sie und versuchen Sie es erneut

Hinweis Sie sollten vorsichtig sein, wenn Sie das Flag -f verwenden, da es alles, in das Sie kopieren, zwangsweise überschreibt. Vielen Dank an @Nifle für diese Anregung.

Sie können den Platzhalter * verwenden, um alle Dateien im Verzeichnis zu kopieren, wenn Sie dies benötigen.

11
11
11
2010-12-15 16:07:16 +0000

Während die cp -R-Antworten richtig sind (der Fall des Flags unter BSD muss übrigens groß geschrieben werden, unter Linux werden beide unterstützt), gibt es eine alte Beschwörungsformel mit tar :

$ tar cf - . | (cd DIR; tar xf - )

Warum zum Teufel sollten Sie das tun? Weil tar ein ziemlich ausgefeiltes Verständnis von Links hat, sowohl von harten als auch von symbolischen.

Wollen Sie, dass Ihre Kopie bestehende symbolische Links durch solche ersetzt, die den gleichen Text haben? Oder mit Links auf das gleiche Ziel (mit Anpassung der relativen Pfade, um das zu kompensieren)? Oder mit bitweisen Kopien des Ziels?

Wenn zwei Dateien im Original hart verlinkt sind, soll die neue Struktur zwei Kopien der Daten haben oder nur eine?

Entscheidungen, Entscheidungen. Tar hat sinnvolle Voreinstellungen, lässt Sie aber sehr genau darauf eingehen.

9
9
9
2010-12-15 19:54:18 +0000

Ich mag

cp -axv source dest

Rsync ist ein weiteres gutes Werkzeug für diese

rsync -va source dest