Kopieren eines Verzeichnisses unter Unix
Wie kann ich eine Verzeichnisstruktur, dir1, nach dir2, (mit allen Unterverzeichnissen) unter Unix über das Terminalfenster kopieren?
Wie kann ich eine Verzeichnisstruktur, dir1, nach dir2, (mit allen Unterverzeichnissen) unter Unix über das Terminalfenster kopieren?
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.
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.
Ich mag
cp -axv source dest
Rsync ist ein weiteres gutes Werkzeug für diese
rsync -va source dest