¿Cómo puedo usar cp para copiar un directorio pero ignorar un determinado subdirectorio en Linux?

9

Debido a un problema con el disco duro, estoy tratando de cambiar una partición de un disco duro a otro. Estoy siguiendo el artículo http://www.ibm.com/developerworks/library/l-partplan.html para hacerlo. En la parte de copia, me gustaría ignorar un subdirectorio en particular. ¿Cómo puedo lograr eso teniendo en cuenta al copiar? Tengo que conservar mi grupo de propietarios y mi marca de tiempo. Hay alrededor de 700 GB de datos que deben copiarse si no ignoro un subdirectorio en particular.

P Roy
fuente

Respuestas:

11

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

Es posible que desee (o no) usar --deltambién. Consulte la página del manual.

Marco Mariani
fuente
Sí, eso hizo el truco. Esto funciona ..
P Roy
2

Normalmente uso de la cpiosiguiente manera,

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

Y como se trata de una tubería, puede colocar un "filtro de resta" en el medio.

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

o podría dividir esto en varios pasos,

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

Por supuesto, primero probaría esto en algo más pequeño, pero se entiende la idea.

hotei
fuente
0

¿Puede mover temporalmente ( mv) el subdirectorio grande a otra ubicación, hacer la copia y luego restaurar el subdirectorio? No puedo ver una opción directa cppara hacer esto.

Ceniza
fuente
También revisé man cp, no hay forma de ignorar el uso de cp. Tengo 550 GB de datos en ese subdirectorio y mv que pueden tomar horas.
P Roy
Asumí que mv sería una operación de costo relativamente bajo: actualizar las referencias a los datos en lugar de moverlos físicamente en el disco. Al menos, siempre he encontrado que los movimientos en Windows son mucho más rápidos que las copias: el sistema de archivos de Linux podría funcionar de manera completamente diferente.
Ash
mv al mismo disco duro es rápido. Pero cuando uno hace un mv en discos duros, creo que lleva el mismo tiempo que un cp.
P Roy
Tenía la intención de moverlo a algún lugar del mismo disco duro para quitarlo del camino, luego copiar el resto al disco remoto, luego mover el archivo grande de nuevo. A menos que esté copiando todo el disco desde /.
Ash
0

Solución bastante fea, pero ... ¿por qué no simplemente copiar todo en el directorio de forma no recursiva y luego copiar los directorios individuales de forma recursiva?

Journeyman Geek
fuente
-1

Entonces, ¿por qué no solo

cp -Rv [SRC] [DEST] | grep -v [EXCLUDE]
halfcab123
fuente