Kopieren eines Verzeichnisses unter Unix

Kopieren eines Verzeichnisses unter Unix

Wie kann ich unter Unix mithilfe des Terminalfensters eine Verzeichnisstruktur von „dir1“ nach „dir2“ (mit allen Unterverzeichnissen) kopieren?

Antwort1

cp -rf /source/path/ /destination/path/

-r= rekursiv, kopiert alle Unterverzeichnisse

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

NotizSie sollten bei der Verwendung des -fFlags vorsichtig sein, da es alles, wohin Sie kopieren, zwangsweise überschreibt. Vielen Dank an @Nifle für diesen Vorschlag.

Bei Bedarf können Sie das Platzhalterzeichen * verwenden, um alle Dateien im Verzeichnis zu kopieren.

Antwort2

Während die cp -RAntworten richtig sind (Übrigens muss die Groß- und Kleinschreibung des Flags unter BSD groß geschrieben werden, beide werden unter Linux unterstützt), gibt eseine alte Beschwörungsformel mit Teer:

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

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

Möchten Sie mit Ihrer Kopie vorhandene symbolische Links durch Links mit demselben Text ersetzen? Oder durch Links zum gleichen Ziel (wobei die relativen Pfade zum Ausgleich angepasst werden)? Oder durch bitweise Kopien des Ziels?

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

Entscheidungen, Entscheidungen. Tar hat sinnvolle Standardeinstellungen, lässt Sie aber sehr spezifisch vorgehen.

Antwort3

Ich mag

cp -axv source dest

Rsync ist ein weiteres gutes Tool für diese

rsync -va source dest

verwandte Informationen