Copiare una directory su Unix
Come posso copiare una struttura di directory, dir1, in dir2, (con tutte le sottodirectory) su Unix usando la finestra del terminale?
Come posso copiare una struttura di directory, dir1, in dir2, (con tutte le sottodirectory) su Unix usando la finestra del terminale?
cp -rf /source/path/ /destination/path/
-r
= ricorsivo, copia tutte le sottodirectory
-f
= forza, se un file di destinazione esistente non può essere aperto, rimuovilo e riprova
Nota Dovresti fare attenzione quando usi il flag -f
perché sovrascriverà forzatamente qualsiasi cosa in cui copi. Ringrazia @Nifle per questo suggerimento.
Potresti voler usare il carattere jolly * per copiare tutti i file nella directory se ne hai bisogno.
Mentre le risposte cp -R
sono giuste (BTW il caso della bandiera su BSD deve essere maiuscolo, entrambi sono supportati su linux), c'è un vecchio incantesimo che coinvolge tar :
$ tar cf - . | (cd DIR; tar xf - )
Perché diavolo dovresti farlo? Perché tar ha una comprensione abbastanza sofisticata dei link sia hard che simbolici.
Vuoi che la tua copia sostituisca i link simbolici esistenti con uno che ha lo stesso testo? O con collegamenti alla stessa destinazione (aggiustando i percorsi relativi per compensare)? O con copie bitwise della destinazione?
Se due file nell'originale sono hard linked, la nuova struttura dovrebbe avere due copie dei dati o solo una?
Decisioni, decisioni. Tar ha dei valori predefiniti ragionevoli, ma ti permette di essere molto specifico al riguardo.
Mi piace
cp -axv source dest
Rsync è un altro buon strumento per questo
rsync -va source dest