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


Ich versuche, den Inhalt eines Ordners mit Terminal in einen anderen Ordner in einem anderen Verzeichnis zu kopieren.

Könnte mir jemand ein Beispiel für die erforderliche Befehlszeilensyntax geben?


529
2017-12-11 01:19


Ursprung


cyberciti.biz/faq/copy-folder-linux-command-line hat mehr klare Informationen. - Dilip Rajkumar


Antworten:


Sie können den Inhalt eines Ordners kopieren /source in einen anderen vorhandenen Ordner /dest mit dem Befehl

cp -a /source/. /dest/

Das -a Option ist eine verbesserte rekursive Option, die alle Dateiattribute beibehält und auch symbolische Verknüpfungen beibehält.

Das . Am Ende des Quellpfads befindet sich ein bestimmter Pfad cp Syntax, die es ermöglicht, alle Dateien und Ordner zu kopieren, einschließlich ausgeblendeter Dateien.


799
2017-12-11 12:01



Gute Antwort. Ich werde ein echtes Beispiel schreiben, falls jemand Probleme mit diesem Befehl hat: sudo cp -a / var / www / opencart /. / var / www / opencart_local / - pablofiumara
@enzotib Ich versuche mit diesem Befehl den Inhalt von "Downloads / textext" nach "~ / .config / inkscape / extensions /." Mit Ihrem Befehl tippe ich "cp -a / Downloads / textext /. /~/.config/inkscape/extensions/". aber das funktioniert nicht - Funzies
@Funzies: wahrscheinlich sollte dein Befehl sein: cp -a ~/Downloads/textext/. ~/.config/inkscape/extensions/ - enzotib
Hinzufügen -p Flag, um die Dateiberechtigungen und Zeitstempel zu erhalten. cp -ap /var/www/original.com/images/. /var/www/new.com/images/ - Dylan Valade
@DylanValade: -a schon impliziert --preserve=all, das ist breiter als -p = --preserve=mode,ownership,timestamps. - enzotib


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, praktisch für Dateien in $ HOME, insbesondere für Konfigurationsdateien.


97
2017-12-11 03:59



Ich denke du brauchst das Sternchen nicht. rsync -r source/ destination sollte genug sein, nicht? - Joschua
Dieser ist passender: 'rsync -rtvp source / * destination' - shridutt kothari
-r funktioniert nicht für versteckte Dateien / Ordner - Nam G VU
Dadurch werden keine versteckten Dateien kopiert, da bash * nur auf nicht versteckte Dateien erweitert wird. Die Lösung von @Joschua ist sicherer. - sauerburger
rsync kopiert das gesamte Verzeichnis, einschließlich der versteckten Dateien, wenn Sie das Trailing / ohne * verwenden rync source/ dest Offensichtlich müssen die Leute den rsync-Befehl so anpassen, dass er wie gewünscht funktioniert. - Panther


Sagen wir, Sie haben einen Ordner namens Ordner1 in deinem ~, Innerhalb Ordner1 ist 1 Datei aufgerufen Datei1 und 2 Ordner angerufen Unter1 und Unter2 jedes mit anderen Dateien und Ordnern in ihnen.

Um alle Inhalte von zu kopieren ~/folder1 zu ~/new_folder1 du würdest es benutzen

cp -r ~/folder1/. ~/new_folder1

new_folder1 würde dann alle Dateien und Ordner enthalten folder1.

cp ist der Befehl zum Kopieren mit einem Terminal, -r macht es rekursiv (so, aktuelles Verzeichnis + weitere Verzeichnisse innerhalb des aktuellen) ~/folder1 ist der Ursprungsordner, ~/new_folder1 ist der Zielordner für die Dateien / Ordner innerhalb des Ursprungs.


56
2017-12-11 01:23



Es fängt keine versteckten Dateien ein - Portablejim
Danke Bruno! Es hat mir geholfen, die Syntax zu verstehen, obwohl ich sie etwas ändern musste (~ Zeichen entfernen). Vielleicht, weil der Zielordner sich in / opt befand und sich in einem anderen Dateisystem befand. Und danke Portablejim, um sich an die versteckte Datei zu erinnern! - pandisvezia
Die Nachlaufperiode ist wichtig. Ohne es kann manchmal ein neues Unterverzeichnis erstellen ~/new_folder1/folder1 anstatt den Inhalt zu kopieren. - wisbucky
Warum nicht cp -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


Überprüfen Sie dies http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ Weitere Informationen zum Kopieren des Ordners Hoffe das hilft.

cp Command

cp ist 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 /home/vivek/letters Ordner und alle seine Dateien an /usb/backup Verzeichnis:

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

Woher,

-a : Bewahren Sie die angegebenen Attribute wie Verzeichnis und 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 namens / tmp / conf nach / tmp / backup:

$ cp -avr /tmp/conf/ /tmp/backup

13
2017-11-25 05:53



Dies ist nicht, was die Frage fragt. - cybermonkey
(Die Verwendung von -r mit -a ist redundant; auf gnu cp -a ist dasselbe wie "-dr --preserve = all") - cristoper


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 dem Sie den gesamten Inhalt eines anderen Ordners kopieren möchten, sagen Sie DATA auf derselben Ebene dann wirst du tun

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

Sie müssen 2 Punkte bemerken. Letzter Punkt sagt Kopie hier im gegenwärtigen Ordner

und

eine folgende / DATA /. sagt, dass alle Inhalte in DATA-Ordner kopiert werden, und nicht den Ordner DATA selbst.

Wenn Sie dieses nachgestellte "." von / DATEN /

dann wird der gesamte DATEN-Ordner in das PORTAL kopiert (von wo aus du gehst).


2
2017-09-09 10:39