Come posso usare cp per copiare una directory ma ignorare una certa sottodirectory in Linux


9

A causa di un problema con il disco rigido, sto cercando di spostare una partizione da un disco rigido a un altro. Sto seguendo l' articolo http://www.ibm.com/developerworks/library/l-partplan.html per farlo. Nella parte della copia vorrei ignorare una particolare sottodirectory. Come posso realizzare questo tenendo presente quando copio devo preservare il mio gruppo di proprietari e il timestamp. Ci sono circa 700 GB di dati che devono essere copiati se non ignoro una particolare sottodirectory.

Risposte:


11

rsync -ax --exclude [relative path to directory to exclude] /path/from /path/to

Potresti voler (o meno) usare --delanche. Controlla la pagina del manuale.


Sì, quello ha funzionato. Funziona ..
P Roy,

2

Normalmente uso cpiocome segue,

cd source_dir; find . -depth | cpio -pdmv dest_dir

E poiché questa è una pipeline puoi mettere un "filtro di sottrazione" nel mezzo.

cd sourcedir; find . -depth | grep -v exclude_dir | cpio -pdmv dest_dir

o potresti dividerlo in più passaggi,

cd source_dir; find . -depth > files.lst
gedit files.lst  # (take out the offending directory and files and save back to files.lst)
cpio -pdmv dest_dir < files.lst

Naturalmente prima lo testerei su qualcosa di più piccolo, ma ti viene l'idea.



0

È possibile spostare temporaneamente ( mv) la sottodirectory di grandi dimensioni in un'altra posizione, eseguire la copia e quindi ripristinare la sottodirectory? Non riesco a vedere un'opzione diretta cpper farlo.


Anch'io ho controllato man cp, non c'è modo di ignorare usando cp. Ho 550 GB di dati in quella sottodirectory e mv che potrebbero richiedere ore.
P Roy,

Ho pensato che mv sarebbe un'operazione relativamente a basso costo: aggiornare i riferimenti ai dati piuttosto che spostarli fisicamente sul disco. Almeno, ho sempre trovato che le mosse in Windows sono molto più veloci delle copie: il file system Linux potrebbe funzionare in modo completamente diverso.
Ash,

mv sullo stesso disco rigido è veloce. Ma quando si fa un mv attraverso hardisks, penso che ci vuole lo stesso tempo di un cp.
P Roy,

Intendevo spostarlo da qualche parte sullo stesso disco rigido per toglierlo di mezzo, quindi copiare il resto sul disco remoto, quindi spostare nuovamente il file di grandi dimensioni. A meno che non si stia copiando l'intero disco da /.
Ash,

0

Piuttosto brutta soluzione ma ... perché non semplicemente cp tutto in modo non ricorsivo nella directory, e quindi copiare le singole directory in modo ricorsivo?


-1

Quindi perché non solo

cp -Rv [SRC] [DEST] | grep -v [EXCLUDE]
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.