¿La mejor manera de copiar todos los archivos, ignorando errores?

33

Tengo un disco duro parcialmente dañado que no se puede reparar con la Utilidad de Discos, pero que se puede montar de solo lectura para que los datos estén accesibles.

Estoy intentando copiar todos los contenidos recuperables en un disco duro de repuesto, pero todos los métodos que intento fallan cuando se produce un error, dejando los archivos restantes sin copiar.

Buscador - falla. SuperDuper - falla. Ditto (comando de terminal) - falla.

Esperaba que Ditto hiciera el truco, la página de manual de Ditto dice:

  

ditto devuelve 0 si todo se copia, de lo contrario no es cero. ídem   Casi nunca se da por vencido, prefiriendo reportar errores en el camino.   Los mensajes de diagnóstico se imprimirán a error estándar.

He enviado un error a Apple en caso de que no se realice como se anuncia.

¿Alguna otra idea?

    
pregunta radven 07.02.2012 - 08:21

8 respuestas

25

Uso cp -Rfv sourcefile destinationfile con éxito de manera bastante regular.

cp = copiar

R = mantiene jerarquías de archivos

f = si no se puede abrir un archivo de destino existente, elimínelo y vuelva a intentarlo

v = modo detallado, muestra los archivos transferidos a medida que avanza

archivo de origen = datos que desea copiar

archivo de destino = directorio / unidad a la que desea copiar

    
respondido por el Mr Rabbit 20.08.2013 - 19:28
22

Pruebe Gnu ddrescue : es un programa de recuperación de datos que realiza copias basadas en bloques Recuperación de datos corruptos durante las operaciones de copia. Puede obtenerlo para OS X si está utilizando Homebrew escribiendo en una ventana de Terminal:

brew install ddrescue

Una guía sobre arstechnica describe cómo rescatar un disco fallido usando ddrescue. Asegúrese de leer la guía, ya que contiene información útil. Aquí hay una idea de cómo llegar allí.

  • Localice la unidad usando diskutil list . La columna de identificador es lo que está buscando:

    /dev/disk1
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *750.2 GB   disk1
       1:                        EFI EFI                     209.7 MB   disk1s1
       2:                  Apple_HFS Macintosh HD 2          80.0 GB    disk1s2
       3:                  Apple_HFS Home                    509.1 GB   disk1s3
    
  • Desmonte el disco en cuestión:

    diskutil unmount /dev/disk1s3    
    
  • Inicia una operación de rescate del disco en una imagen. Asegúrese de que la ubicación de Rescue.dmg se reemplace con la ubicación deseada.

    sudo /usr/local/bin/ddrescue -v -n -c 4096 /dev/disk1s3 Rescue.dmg Rescue.log
    
  • Recupere la imagen en una unidad nueva :

    sudo /usr/local/bin/ddrescue --force -v -c 4096 Rescue.dmg /dev/disk2s0 recovery.log
    

Le recomendamos que lea también el manual de ddrescue para informarse sobre las opciones disponibles ejecutando man ddrescue .

    
respondido por el user76335 21.04.2014 - 19:05
4

Esta Sugerencia de Macworld sugiere usar dd para hacer una copia bit a bit (ignorando errores) luego monta la imagen resultante en Finder para recuperar tus archivos. No lo he intentado, pero parece que podría funcionar.

    
respondido por el binarybob 07.02.2012 - 12:13
3

Puede considerar usar el comando dd para realizar una copia bloque por bloque de su HDD corrupto a su nuevo HDD.

Suponiendo que su nuevo HDD ( /dev/disk2 ) tenga un tamaño igual o mayor que su HDD corrupto ( /dev/disk1 ), puede emitir:

dd if=/dev/disk1 of=/dev/disk2 bs=4096 conv=notrunc,noerror

blockized @ 4k, no trunca ningún bloque de datos, ignora todos los errores

Para encontrar los nombres de los dispositivos, ejecute primero mount desde el terminal.

    
respondido por el Biltu 03.11.2013 - 02:43
3

Me gusta usar rsync para copiar archivos de una fuente dañada a un destino funcional:

rsync -auv --delete --ignore-errors /path/to/source/ /path/to/destination/

Donde:

-a ="modo de archivo" = se repite en directorios, copia enlaces simbólicos como enlaces simbólicos, conserva permisos, tiempos, grupos y archivos especiales, también conserva propietario (cuando propietario = raíz) y dispositivos (cuando propietario = raíz)

-u = omite el archivo en source si su copia correspondiente en destino es más reciente

-v = salida detallada

--delete = los archivos en destino que no existen en fuente se eliminarán

--ignore-errors = elimina un archivo / directorio en caso de error de E / S durante el proceso de copia

    
respondido por el Yuri Sucupira 16.10.2017 - 15:18
0

El comando ditto debería funcionar, yo usaría ditto junto con la opción -v para hacer verbos, de modo que pueda ver exactamente qué le da un error de lo que copia.

    
respondido por el Roger 20.08.2013 - 19:07
0

Puede intentar ejecutar SuperDuper e ignorar los archivos con errores de io, si solo son unos pocos y usa la función de actualización inteligente, que es una forma bastante efectiva de eliminar la mayoría de los datos. (Creo que el comando dd sería preferible si puedes hacerlo).

Pasos:

  1. Seleccione 'copia de seguridad de todos los archivos' como la estrategia de copia de seguridad
  2. En las opciones, seleccione 'actualización inteligente' (de lo contrario, este proceso tomará un tiempo ridículamente largo si tiene más de uno o dos errores, necesitará la versión de pago para esto)
  3. Ejecutar la copia
  4. Cuando la copia falla, lea los registros para encontrar el archivo que no se pudo copiar, luego presione Aceptar / Cerrar para volver a la pantalla de inicio
  5. Seleccione 'editar el script de copia seleccionado' en el menú desplegable de uso
  6. En los comandos de Script, agregue el archivo que no se pudo copiar, debería decir "ignorar" una vez que se agrega a la lista de archivos
  7. Guarde su script con algún nombre (por ejemplo, ignore-corrupted-files)
  8. Seleccione su script y repita los pasos 3-7 tantas veces como sea necesario para ignorar todos los archivos dañados.
respondido por el cwohlman 18.02.2017 - 17:09
0

Si su unidad aún está accesible, y puede ver los archivos de acceso, pero solo el proceso de copia se detiene debido a errores, puede usar el programa Unstoppable Copier .

enlace

    
respondido por el ofir_aghai 18.02.2018 - 08:04

Lea otras preguntas en las etiquetas