it-swarm.com.de

Kopieren Sie ein Verzeichnis unter Unix

Wie kann ich eine Verzeichnisstruktur, dir1, in dir2 (mit allen Unterverzeichnissen) unter Unix mithilfe des Terminalfensters kopieren?

73
Dinesh Kumar
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 -f-Flag verwenden, da es alles, in das Sie kopieren, zwangsweise überschreibt. Vielen Dank an @Nifle für diesen Vorschlag.

Möglicherweise möchten Sie den Platzhalter * verwenden, um alle Dateien im Verzeichnis zu kopieren, wenn dies erforderlich ist.

103
qroberts

Während die cp -R Antworten richtig sind (BTW der Fall der Flagge auf BSD muss groß sein, beide werden auf Linux unterstützt), gibt es eine alte Beschwörung mit tar :

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

Warum zum Teufel würdest du das tun? Weil tar ein ziemlich ausgefeiltes Verständnis von links sowohl hart als auch symbolisch hat.

Möchten Sie kopieren, um vorhandene symbolische Links durch Links mit demselben Text zu ersetzen? Oder mit Links zum selben Ziel (relative Pfade anpassen, um dies zu kompensieren)? Oder mit bitweisen Kopien des Ziels?

Wenn zwei Dateien im Original fest miteinander verknüpft sind, sollte die neue Struktur zwei Kopien der Daten enthalten oder nur eine?

Entscheidungen Entscheidungen. Tar hat vernünftige Standardeinstellungen, aber Sie können sehr genau darüber sein.

10
dmckee

Ich mag

cp -axv source dest

Rsync ist ein weiteres gutes Werkzeug dafür

rsync -va source dest
8
Pete Ashdown