Wie kann ich eine Verzeichnisstruktur, dir1, in dir2 (mit allen Unterverzeichnissen) unter Unix mithilfe des Terminalfensters kopieren?
Wie kann ich eine Verzeichnisstruktur, dir1, in dir2 (mit allen Unterverzeichnissen) unter Unix mithilfe des Terminalfensters kopieren?
Antworten:
cp -rf /source/path/ /destination/path/
-r
= rekursiv, kopiert alle Unterverzeichnisse
-f
= erzwinge, wenn eine vorhandene Zieldatei nicht geöffnet werden kann, entferne sie und versuche 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.
f
Flagge verwenden sollten. -f if an existing destination file cannot be opened, remove it and try again
-f
einfügen, dass die Markierung nützlich ist, wenn Sie <source> über <dest> kopieren (wie beim Überschreiben von Dingen in <dest>), werde ich sie selbst verbessern und meine Antwort löschen.
Während die cp -R
Antworten richtig sind (BTW der Fall der Flagge auf BSD muss Kapital 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 ausgeklügeltes Verständnis von harten und symbolischen Verknüpfungen 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 verbunden 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.
ich mag
cp -axv source dest
Rsync ist ein weiteres gutes Werkzeug dafür
rsync -va source dest