
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 -f
Flags 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 -R
Antworten 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