Copia una directory su Unix


78

Come posso copiare una struttura di directory, dir1, in dir2, (con tutte le sottodirectory) su Unix usando la finestra del terminale?


2
"cp -r / dir1 / dir2" È giusto ??
Dinesh Kumar,

Si, è corretto. Potresti voler contrassegnare una delle risposte come soluzione.
qroberts,

Risposte:


115
cp -rf /source/path/ /destination/path/

-r = ricorsivo, copia tutte le sottodirectory

-f = forza, se non è possibile aprire un file di destinazione esistente, rimuoverlo e riprovare

Nota Dovresti stare attento quando usi il -fflag perché sovrascriverà con forza tutto ciò su cui copi. Grazie a @Nifle per questo suggerimento.

È possibile utilizzare il carattere jolly * per copiare tutti i file nella directory, se necessario.


11
Non sono d'accordo che dovresti usare la fbandiera. -f if an existing destination file cannot be opened, remove it and try again
Nifle,

Personalmente uso sempre il flag -f. Non è una buona pratica, quindi forse hai ragione.
qroberts,

Se sai cosa fa e sai cosa stai facendo va bene. Ma in questo caso con un utente inesperto potrebbe non essere adatto.
Nifle,

@ Nifle Sì, capisco quello che stai dicendo. Solo che se lo costringe, le probabilità che funzioni sono migliori che se non lo facesse. Tutto dipende da quello che stai facendo e dal fatto che tu capisca cosa fa.
qroberts,

Se metti una nota nella tua risposta sul fatto che la -fbandiera è utile se stai copiando <source> su <dest> (come nel sovrascrivere le cose in <dest>), la voterò io personalmente e cancellerò la mia risposta)
Nifle

11

Mentre le cp -Rrisposte sono giuste (a proposito il caso del flag su BSD deve essere maiuscolo, entrambi sono supportati su Linux), c'è un vecchio incantesimo che coinvolge tar :

$ tar cf - . | (cd DIR; tar xf - )

Perché diamine lo faresti? Perché tar ha una comprensione abbastanza sofisticata dei collegamenti sia duri che simbolici.

Vuoi copiare per sostituire i collegamenti simbolici esistenti con uno con lo stesso testo? O con collegamenti allo stesso target (regolazione dei percorsi relativi per compensare)? O con copie bit a bit del target?

Se due file nell'originale sono strettamente collegati, la nuova struttura dovrebbe avere due copie dei dati o solo una?

Decisioni decisioni. Tar ha impostazioni predefinite ragionevoli, ma ti consente di essere molto specifico al riguardo.


9

mi piace

cp -axv source dest

Rsync è un altro ottimo strumento per questo

rsync -va source dest
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.