Cómo cp archivos restantes después de un intento fallido


23

Estoy tratando de copiar un directorio grande de una unidad a otra. Me desconecté por error antes de que terminara, por lo que solo se copió aproximadamente el 80% de los archivos. ¿Hay algún lugar para copiar los archivos restantes sin comenzar desde cero?

Respuestas:


35

Lo intentaré,

rsync -a /from/file /dest/file

puede utilizar otras opciones como --append, -P (--partial --progress). Ver man rsync para más información.

O si está usando, cpentonces use cp -u.

de man cp:

-u, --update
     copy only when the SOURCE file is newer than the destination file or when the destination file is missing.

1
Tendré que dárselo a Rahul porque él simplemente te ganó, pero gracias y todos reciben un voto positivo.
barro32

3
Si la primera copia terminó abruptamente, uno de los archivos puede copiarse solo parcialmente, y cp -upuede que no le importe, ya que solo comprueba las marcas de tiempo, no el tamaño ... Por lo tanto, touchprimero necesitará los archivos de origen si tiene que usarlo . (O simplemente usar rsync.)
ilkkachu

@ilkkachu eso es correcto. Lo actualizaré pronto.
Rahul

¿Alguna vez cp deja un solo archivo parcialmente transferido? Si lo hace, entonces -u parece que te dejaría con un directorio que solo funcionaba parcialmente.
Trevor el

15

Para transferencias de archivos parciales, cppuede que no sea lo que necesita.

Sugiero usar en su rsynclugar. Incluso cuando la transferencia falla, simplemente puede volver a ejecutar el comando más adelante y copiará solo los archivos que faltan.

Ejemplo:

$ rsync -aPEmivvz from/ to/

(se copiará from/en el to/directorio)

Como la rsyncsincronización y la comprobación después de cada transferencia, garantizar que los archivos se hayan copiado correctamente es trivial.

El conjunto swich -aPEmivvzes mi nivel de go-to de selección, siempre que la copia de archivos a través de redes o unidades externas, incluyendo plug-in de dispositivos, como tarjetas SD, etc.

Estos son los interruptores que uso casi siempre:

-a: "archivo", incluye -rlptgo(recursivo, enlaces simbólicos como enlaces simbólicos, permisos, tiempos, grupo, propietario)

-P: "progreso parcial" muestra una buena barra de progreso para cada archivo

-E: "ejecutabilidad" preservar si es ejecutable o no

-m: "noempty" elimina los directorios vacíos

-i: resumen de cambios de impresión "resumen" para todas las actualizaciones

-vv: "más detallado"

-z: "compresión"


6

Lo que probablemente quieras más que cpen este caso es rsync.

Simplemente copiando recursivamente una estructura de directorio a una nueva ubicación:

rsync -av /path/to/source /path/to/destination 

4

No deberías usar cppara esto. Como otros han dicho, no es la herramienta adecuada para el trabajo. La herramienta correcta dependerá de tus objetivos.

Si solo quieres una copia directa:

rsync /source /destinationcon cierto nivel de banderas. Vea las otras respuestas para algunos ejemplos realmente buenos.

Si quieres tener actualizaciones bidireccionales

unisonEs el camino a seguir. Rsync no funciona muy bien en la resolución de conflictos con sincronizaciones bidireccionales. Especialmente elimina. Entonces, ¿quieres que se disparen copias bidireccionales?unison

Si desea copias de seguridad y los archivos están basados ​​en texto, puede intentar usarlos git. Git se puede ejecutar localmente, no hay necesidad de un "servidor". De hecho, los servidores git son solo métodos para compartir archivos. Podría tener un repositorio git en la unidad de copia de seguridad y "empujarlo". Una vez más, esto solo funciona si los archivos están basados ​​en texto y estás tratando de obtener una copia de seguridad unidireccional.

Nuevamente, si vas a hacer una copia de seguridad (y no solo una vez), mira deja-dupe, BackIntime u opciones similares. Toman instantáneas de los datos en un momento determinado. Todos corren rsync debajo del capó.


4

También puede copiar todos los archivos nuevamente, solicitar confirmación para cada sobrescritura y luego responder automáticamente no a la pregunta:

yes n | cp -i /source /dest

(probablemente ha usado más opciones, como -r, así que agréguelas como cp -pri /source /dest...)


3

Use el comando rsynccon las siguientes opciones:

rsync --progress --partial --append /source_file /destination_file
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.