Kopieren Sie ein Verzeichnis unter Unix

78

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

Dinesh Kumar
quelle
2
"cp -r / dir1 / dir2" Stimmt das?
Dinesh Kumar
Ja, das ist richtig. Möglicherweise möchten Sie eine der Antworten als Ihre Lösung markieren.
Qroberts

Antworten:

115
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 -fFlag 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.

qroberts
quelle
11
Ich bin nicht einverstanden, dass Sie die fFlagge verwenden sollten. -f if an existing destination file cannot be opened, remove it and try again
Nifle
Persönlich benutze ich immer das Flag -f. Ist keine gute Übung, vielleicht haben Sie recht.
Qroberts
Wenn Sie wissen, was es tut, und Sie wissen, was Sie tun, ist es in Ordnung. In diesem Fall ist es jedoch für einen unerfahrenen Benutzer möglicherweise nicht geeignet.
Nifle
@Nifle Ja, ich verstehe, was du sagst. Nur dass, wenn er es erzwingt, die Chancen besser stehen, dass es funktioniert, als wenn er es nicht getan hätte. Es hängt alles davon ab, was Sie tun und was Sie verstehen.
Qroberts
Wenn Sie in Ihrer Antwort eine Notiz darüber -feinfü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.
Nifle
11

Während die cp -RAntworten 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.

dmckee
quelle
9

ich mag

cp -axv source dest

Rsync ist ein weiteres gutes Werkzeug dafür

rsync -va source dest
Pete Ashdown
quelle