Wie kopieren Sie ein Verzeichnis und seinen Inhalt an einen neuen Ort unter einem neuen Verzeichnisnamen?

19

Ich bin neu in der Linux-Kommandozeile und versuche gerade, den Kopierbefehl in den Griff zu bekommen.

Kann mir bitte jemand sagen, ob es möglich ist, ein Verzeichnis mit seinen Unterverzeichnissen und zugehörigen Dateien in ein neues Verzeichnis mit einem neuen Namen zu kopieren, z. directory_backup?

Vielen Dank für jede Hilfe im Voraus

    
Edmuntu 02.11.2016, 23:04
quelle

7 Antworten

29

Sie verwenden -r (rekursiv kopieren) und geben den neuen Namen

an
cp -r /path/to/directory /path/to/location/new-name

Ersetze durch die echten Pfade ... zum Beispiel um stuff von meinem Home-Verzeichnis in ein vorhandenes Verzeichnis backup zu kopieren und das neue Verzeichnis stuff-backup zu benennen (wenn dieses Verzeichnis bereits existiert) Beachten Sie, dass stuff in kopiert, nicht überschrieben wird.

cp -r ~/stuff ~/backup/stuff-backup

~ ist eine Verknüpfung für Ihr Home-Verzeichnis /home/$USER oder /home/zanna in meinem Fall. Sie können es weglassen, wenn das aktuelle Arbeitsverzeichnis Ihr Home-Verzeichnis ist - Sie können dies von Ihrer Eingabeaufforderung aus sehen

zanna@monster:~$
              ^--the ~ here is where I am - home!

Sie können das -v verbose-Flag hinzufügen, um cp melden zu lassen, dass jede Kopie ausgeführt wird ...

$ cp -vr stuff backup/stuff-backup
'stuff/thing1' -> 'backup/stuff-backup/thing1'
'stuff/thing2' -> 'backup/stuff-backup/thing2
...
    
Zanna 02.11.2016 23:15
quelle
8

Der Befehl, den Sie brauchen, ist einfach cp , was für "copy" steht.

Sie können es zum Beispiel mit einer dieser Syntaxen verwenden:

cp SOURCEFILE TARGETFILE
cp SOURCEFILE TARGETDIRECTORY

In der ersten Variante können Sie einen neuen Dateinamen für die Zieldatei angeben, während die zweite Variante eine Kopie mit dem gleichen Namen im Zielverzeichnis erstellt. Sie müssen die Platzhalter in Großbuchstaben natürlich zuerst durch gültige Pfade ersetzen.

cp arbeitet jedoch standardmäßig nur mit Dateien, nicht mit Verzeichnissen. Um es zu veranlassen, ein komplettes Verzeichnis mit seinem gesamten Inhalt rekursiv zu kopieren, müssen Sie die Option -r hinzufügen:

cp -r SOURCEDIRECTORY TARGETDIRECTORY

Sie können mehr über den Befehl cp erfahren, indem Sie in Ihrem Terminal man cp eingeben.

    
Byte Commander 02.11.2016 23:15
quelle
6

Alternativ zum allgemein nützlichen cp-Befehl können Sie rsync verwenden, das den zusätzlichen Vorteil bietet, die Berechtigungen / Zeitstempel der ursprünglichen Verzeichnisstruktur zu replizieren:

rsync -av dir/ newdir

- ein Archiv -v ausführlich

Beachten Sie den Schrägstrich hinter dem Quellverzeichnis.

    
siloko 03.11.2016 08:26
quelle
4

Ich finde es einfacher, von dem ersten in das Verzeichnis zu wechseln, das ich kopiere. Wechseln Sie in diesem Beispiel in ein Verzeichnis, das jeder /boot aufgerufen hat. Jeder kann die folgenden Befehle kopieren und in ihr Terminal einfügen.

cd /boot
sudo mkdir /boot_backup
sudo cp -r . /boot_backup
du /boot_backup -h

752K    /boot_backup/extlinux/themes/debian-wheezy
756K    /boot_backup/extlinux/themes
832K    /boot_backup/extlinux
2.5M    /boot_backup/grub/i386-pc
20K     /boot_backup/grub/locale
2.3M    /boot_backup/grub/fonts
7.2M    /boot_backup/grub
565M    /boot_backup

Für den Befehl cp wird das aktuelle Verzeichnis als . identifiziert, was das Verzeichnis /boot ist, in das wir geändert haben. Die Option -r macht es rekursiv, alle Unterverzeichnisse einzuschließen.

Um sicherzustellen, dass es funktioniert, führen Sie du aus, um in diesem Fall alle Unterverzeichnisse und die gesamten Dateigrößen im neuen Verzeichnis /boot_backup aufzulisten.

Nach Beendigung dieses Durchlaufs verwenden Sie: sudo rm -r /boot_backup , um das neue Verzeichnis und seine Unterverzeichnisse zu entfernen.

    
WinEunuuchs2Unix 02.11.2016 23:34
quelle
3

cp ist der Befehl, der die gesuchte Funktion ausführt. Es steht für Kopie und es macht genau das. Der Befehl, der in dieser Situation für Sie funktionieren würde, ist

cp -R source/ destination/

Dies würde den source/ Ordner und alle seine Unterverzeichnisse nach destination/ kopieren.

Wenn destination/ nicht existiert, wird es erstellt.

Das -R -Flag steht für rekursiv, wodurch cp angewiesen wird, alle Unterverzeichnisse zu kopieren.

    
Owen Hines 02.11.2016 23:16
quelle
3

Sie können den folgenden Befehl verwenden, um ein Verzeichnis von einem Ort in ein anderes Unterverzeichnis zu kopieren.

cp -Rvp /home/edmuntu/data /home/edmuntu/mydata/

Erklärung des Befehls:

  • -R = Verzeichnisse rekursiv kopieren
  • v = erkläre, was gemacht wird
  • p = Es wird Ihnen helfen, Ihre Erlaubnis und Ihren Besitz mit Zeitstempeln zu erhalten
Rakesh C 03.11.2016 13:50
quelle
0

Normalerweise möchten Sie die Dateiberechtigungen beim Erstellen einer Kopie beibehalten, nicht jedoch die neuen Standardberechtigungen für die Erstellung. Das bedeutet, verwenden Sie ein Flag für CP.

cp -a file filenew
    
Robi 08.11.2016 07:31
quelle

Tags und Links