Domanda Come posso copiare il contenuto di una cartella in un'altra cartella in una directory diversa usando il terminale?


Sto cercando di copiare il contenuto di una cartella in un'altra cartella in una directory diversa usando il terminale.

Qualcuno potrebbe fornirmi un esempio della sintassi della riga di comando richiesta per raggiungere questo obiettivo?


529
2017-12-11 01:19


origine


cyberciti.biz/faq/copy-folder-linux-command-line ha più informazioni chiare. - Dilip Rajkumar


risposte:


È possibile copiare il contenuto di una cartella /source in un'altra cartella esistente /dest con il comando

cp -a /source/. /dest/

Il -a l'opzione è un'opzione ricorsiva migliorata, che conserva tutti gli attributi del file e conserva anche i collegamenti simbolici.

Il . alla fine del percorso di origine è uno specifico cp sintassi che consente di copiare tutti i file e le cartelle, inclusi quelli nascosti.


799
2017-12-11 12:01



Bella risposta. Scriverò un esempio reale nel caso qualcuno abbia problemi con questo comando: sudo cp -a / var / www / opencart /. / Var / www / opencart_local / - pablofiumara
@enzotib Sto cercando di usare questo comando per copiare il contenuto di "Downloads / textext" in "~ / .config / inkscape / extensions /." Usando il tuo comando digito "cp -a / Downloads / textext /. /~/.config/inkscape/extensions/." Ma questo non funziona - Funzies
@Funzies: probabilmente il tuo comando dovrebbe essere: cp -a ~/Downloads/textext/. ~/.config/inkscape/extensions/ - enzotib
Inserisci -p contrassegna come per conservare le autorizzazioni e i timestamp del file. cp -ap /var/www/original.com/images/. /var/www/new.com/images/ - Dylan Valade
@DylanValade: -a già implica --preserve=all, che è più largo di -p = --preserve=mode,ownership,timestamps. - enzotib


Un altro è rsync

rsync -r source/ destination

I vantaggi di rsync sono:

  1. Dopo la sincronizzazione iniziale, copierà solo i file che sono stati modificati.

  2. Puoi usarlo su una rete, conveniente per i file in $ HOME, specialmente i file di configurazione.


97
2017-12-11 03:59



Penso che tu non abbia bisogno dell'asterisco. rsync -r source/ destination dovrebbe essere abbastanza, no? - Joschua
Questo è più appropriato: 'rsync -rtvp source / * destination' - shridutt kothari
-R non funziona per file / cartelle nascoste - Nam G VU
Questo non copierà i file nascosti, poiché bash si espande * solo nel file non nascosto. La soluzione di @Joschua è più sicura. - sauerburger
rsync copierà l'intera directory, inclusi i file nascosti, se usi il trailing / senza * così rync source/ dest Ovviamente le persone dovranno personalizzare il comando rsync per funzionare come desiderano. - Panther


Diciamo che hai una cartella chiamata cartella1 nel tuo ~, dentro cartella1 è un file chiamato file1 e 2 cartelle chiamate sub1 e sub2 ognuno con altri file e cartelle al loro interno.

Per copiare tutto il contenuto di ~/folder1 a ~/new_folder1 tu userai

cp -r ~/folder1/. ~/new_folder1

new_folder1 quindi conterrebbe tutti i file e le cartelle da folder1.

cp è il comando da copiare usando un terminale, -r lo fa in modo ricorsivo (quindi, directory corrente + ulteriori directory all'interno di corrente) ~/folder1 è la cartella di origine, ~/new_folder1 è la cartella di destinazione per i file / le cartelle all'interno dell'origine.


56
2017-12-11 01:23



non cattura i file nascosti - Portablejim
Grazie, Bruno! Mi ha aiutato a capire la sintassi, anche se ho dovuto cambiarlo un po '(rimuovendo il segno ~). Forse perché la cartella di destinazione era in / opt, che risiede in un altro file system. E grazie Portablejim per ricordare la cosa nascosta del file! - pandisvezia
Il periodo finale è importante. Senza di esso, a volte può creare una nuova sottodirectory ~/new_folder1/folder1 invece di copiare i contenuti. - wisbucky
Perchè no 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


Controllare questo http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ per ulteriori informazioni sulla copia della cartella. Spero che questo ti aiuti.

cp Command

cp è un comando di Linux per copiare file e directory. La sintassi è la seguente:

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

In questo esempio, copia /home/vivek/letters cartella e tutti i suoi file in /usb/backup directory:

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

Dove,

-a : Mantiene gli attributi specificati come directory, modalità file, proprietà, data / ora, se possibile attributi aggiuntivi: contesto, collegamenti, xattr, tutti.

-v : Spiega cosa si sta facendo.

-r : Copia directory in modo ricorsivo. Esempio

Copia una cartella chiamata / tmp / conf in / tmp / backup:

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

13
2017-11-25 05:53



Questo non è quello che la domanda chiede. - cybermonkey
(Usare -r con -a è ridondante, su gnu cp -a è uguale a "-dr --preserve = all") - cristoper


Se ci sono due cartelle: (con permesso di scrittura)

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

Se ci si trova all'interno della cartella denominata PORTALE in cui si desidera copiare tutto il contenuto di un'altra cartella, dire DATI allo stesso livello allora lo farai

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

Devi notare 2 punti. L'ultimo punto dice copia qui nella cartella attuale

e

uno dopo / DATA /. dice che tutti i CONTENUTI nella cartella DATA devono essere copiati, e non la cartella DATA stessa.

Se rimuovi questo finale "." da / DATA /

quindi tutta la cartella DATA verrà copiata all'interno di PORTAL (da dove si sta copiando).


2
2017-09-09 10:39