Wie kann ich den Inhalt eines Ordners mithilfe von Terminal in einen anderen Ordner in einem anderen Verzeichnis kopieren?

740

Ich versuche, den Inhalt eines Ordners mithilfe des Terminals in einen anderen Ordner in einem anderen Verzeichnis zu kopieren.

Kann mir jemand ein Beispiel für die dafür erforderliche Befehlszeilensyntax geben?

Pandisvezia
quelle

Antworten:

1116

Mit dem Befehl können Sie den Inhalt eines Ordners /sourcein einen anderen vorhandenen Ordner kopieren/dest

cp -a /source/. /dest/

Die -aOption ist eine verbesserte rekursive Option, die alle Dateiattribute und auch Symlinks beibehält.

Das .Ende des Quellpfads ist eine bestimmte cpSyntax, mit der alle Dateien und Ordner, einschließlich versteckter, kopiert werden können.

Enzotib
quelle
@enzotib Ich versuche, diesen Befehl zu verwenden, um den Inhalt von "Downloads / textext" nach "~ / .config / inkscape / extensions /" zu kopieren. Mit Ihrem Befehl gebe ich "cp -a / Downloads / textext /. /~/.config/inkscape/extensions/" ein. aber das funktioniert nicht
Funzies
@ Funzies: Wahrscheinlich sollte Ihr Befehl sein:cp -a ~/Downloads/textext/. ~/.config/inkscape/extensions/
Enzotib
Füge -pFlag hinzu, um die Dateiberechtigungen und Zeitstempel beizubehalten. cp -ap /var/www/original.com/images/. /var/www/new.com/images/
Dylan Valade
3
@DylanValade: -aimpliziert schon --preserve=all, das ist breiter als -p = --preserve=mode,ownership,timestamps.
Enzotib
1
@BennyNeugebauer: Wird scpzum Kopieren über ein Netzwerk (durch ssh) verwendet und verschlüsselt nur den Kommunikationskanal, nicht die Dateien im Zieldateisystem.
Enzotib
129

Eine Alternative ist rsync

rsync -r source/ destination

Die Vorteile von rsync sind:

  1. Nach der ersten Synchronisierung werden nur die geänderten Dateien kopiert.

  2. Sie können es über ein Netzwerk verwenden, das für Dateien in $ HOME geeignet ist, insbesondere für Konfigurationsdateien.

Panther
quelle
5
Ich denke du brauchst das Sternchen nicht. rsync -r source/ destinationsollte reichen, nein?
Joschua
1
Dieser ist passender: 'rsync -rtvp Quelle / * Ziel'
Shridutt Kothari
-r funktioniert nicht für versteckte Dateien / Ordner
Nam G VU
1
Dies kopiert keine versteckten Dateien, da bash * nur auf nicht versteckte Dateien erweitert wird. Die Lösung von @Joschua ist sicherer.
Sauerburger
rsync kopiert das gesamte Verzeichnis, einschließlich versteckter Dateien, wenn Sie das abschließende / ohne * verwenden. rync source/ destDaher müssen Benutzer den Befehl rsync natürlich so anpassen, dass er wie gewünscht funktioniert.
Panther
78

Lassen Sie uns sagen Sie einen Ordner mit dem Namen haben folder1 in Ihrem ~Inneren folder1 1 Datei namens file1 und 2 Ordner genannt sub1 und SUB2 jeweils mit anderen Dateien und Ordner in ihnen.

Um den gesamten Inhalt von ~/folder1zu kopieren , ~/new_folder1würden Sie verwenden

cp -r ~/folder1/. ~/new_folder1

new_folder1würde dann alle Dateien und Ordner von enthalten folder1.

cpist der Befehl zum Kopieren mit einem Terminal, -rmacht es rekursiv (also aktuelles Verzeichnis + weitere Verzeichnisse in aktuell) ~/folder1ist der Ursprungsordner, ~/new_folder1ist der Zielordner für die Dateien / Ordner im Ursprung.

Bruno Pereira
quelle
5
Es fängt keine versteckten Dateien
Portablejim
1
Vielen Dank, Bruno! Es hat mir geholfen, die Syntax zu verstehen, obwohl ich sie ein wenig ändern musste (~ -Zeichen entfernen). Möglicherweise, weil sich der Zielordner in / opt befindet, das sich in einem anderen Dateisystem befindet. Und danke Portablejim, dass Sie sich an die versteckte Datei erinnern!
Pandisvezia
4
Die Nachlaufzeit ist wichtig. Ohne es kann es manchmal vorkommen, dass ein neues Unterverzeichnis erstellt wird, ~/new_folder1/folder1anstatt den Inhalt zu kopieren.
wisbucky
1
Warum nichtcp -r ~/folder1/* ~/new_folder1
Alex78191
@ Alex78191[root@ home]# mkdir food [root@ home]# cd food/ [root@ food]# mkdir .fruit [root@ food]# mkdir veggies [root@ food]# touch veggies/carrots [root@ food]# touch .fruit/apple [root@ food]# ls * carrots [root@ food]#
Bruno Pereira
14

Weitere Informationen zum Kopieren von Ordnern finden Sie unter http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ . Hoffe das hilft.

cp Command

cpist ein Linux-Befehl zum Kopieren von Dateien und Verzeichnissen. Die Syntax lautet wie folgt:

cp source destination
cp dir1 dir2
cp -option  source destination
cp -option1 -option2  source destination

In diesem Beispiel kopieren Sie den /home/vivek/lettersOrdner und alle zugehörigen Dateien in das /usb/backupVerzeichnis:

cp -avr /home/vivek/letters /usb/backup

Wo,

-a : Behalten Sie die angegebenen Attribute bei, wie Verzeichnis, Dateimodus, Besitz, Zeitstempel, wenn möglich zusätzliche Attribute: Kontext, Links, xattr, alle.

-v : Erklären Sie, was getan wird.

-r: Verzeichnisse rekursiv kopieren. Beispiel

Kopieren Sie einen Ordner mit dem Namen / tmp / conf nach / tmp / backup:

$ cp -avr /tmp/conf/ /tmp/backup
Dilip Rajkumar
quelle
3
Dies ist nicht das, was die Frage stellt.
AStopher
(Die Verwendung von -r mit -a ist überflüssig; auf gnu ist cp -a dasselbe wie "-dr --preserve = all")
cristoper
1
cp: Die Optionen -R und -r dürfen nicht zusammen angegeben werden.
IgorGanapolsky
4

Einfaches Beispiel.

Kopieren Sie das Verzeichnis dir_1 und seinen Inhalt (_files_) in das Verzeichnis dir_2 :

cp -r ./dir_1 ./dir_2
# or
cp -r ./dir_1/ ./dir_2/
# Results in: ./dir_2/dir_1/_files_

Kopieren Sie den Inhalt (_files_) nur von dir_1 in das Verzeichnis dir_2 :

cp -r ./dir_1/. ./dir_2
# or
cp -r ./dir_1/. ./dir_2/
# Results in: ./dir_2/_files_*

_files_ ist ein Platzhalter für die tatsächlichen Dateien im Verzeichnis.

Karl Morrison
quelle
2

Wenn es zwei Ordner gibt: (mit Schreibberechtigung)

drwxr-xr-x 4 vimal vimal  4096 Sep  9 12:17 .
drwxr-xr-x 3 root  root   4096 Aug 18 14:35 ..
drwxrwxrwx 6 vimal vimal  4096 Sep  9 12:15 DATA
drwxrwxrwx 7 vimal vimal  4096 Sep  9 12:15 PORTAL

Wenn Sie sich in dem Ordner PORTAL befinden, in den Sie den gesamten Inhalt eines anderen Ordners kopieren möchten, sagen Sie DATA auf derselben Ebene

vimal@vimal-D3H:/var/www/html/PORTAL$ cp -a ../DATA/. .

Sie müssen 2 Punkte beachten. Letzter Punkt sagt Kopie hier im anwesenden Faltblatt

und

eine folgende / DATA /. gibt an, dass alle INHALTE im DATA-Ordner kopiert werden sollen und nicht der DATA-Ordner selbst.

Wenn Sie dieses abschließende "." von / DATA /

Dann wird der gesamte DATA-Ordner in das PORTAL kopiert (von wo aus Sie kopieren).

Vimal Krishna
quelle