GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Restauración de copias de seguridad con fallas en Ubuntu 16.04?

Tengo problemas para restaurar las copias de seguridad de una instalación anterior de Ubuntu a una nueva instalación en Ubuntu 16.04. Recibo el siguiente error al intentar restaurar:

Failed with an unknown error Seguido por:

Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1532, in <module>
    with_tempdir(main)
  File "/usr/bin/duplicity", line 1526, in with_tempdir
    fn()
  File "/usr/bin/duplicity", line 1380, in main
    do_backup(action)
  File "/usr/bin/duplicity", line 1461, in do_backup
    list_current(col_stats)
  File "/usr/bin/duplicity", line 698, in list_current
    for path in path_iter:
  File "/usr/lib/python2.7/dist-packages/duplicity/diffdir.py", line 354, in combine_path_iters
    refresh_triple_list(triple_list)
  File "/usr/lib/python2.7/dist-packages/duplicity/diffdir.py", line 341, in refresh_triple_list
    new_triple = get_triple(old_triple[1])
  File "/usr/lib/python2.7/dist-packages/duplicity/diffdir.py", line 327, in get_triple
    path = path_iter_list[iter_index].next()
  File "/usr/lib/python2.7/dist-packages/duplicity/diffdir.py", line 239, in sigtar2path_iter
    for tarinfo in tf:
  File "/usr/lib/python2.7/tarfile.py", line 2508, in next
    tarinfo = self.tarfile.next()
  File "/usr/lib/python2.7/tarfile.py", line 2350, in next
    raise ReadError("unexpected end of data")
ReadError: unexpected end of data

La copia de seguridad se completó con éxito pero no puedo hacer que se restaure.

¡Gracias de antemano!

Respuesta aceptada:

Editar: Descargo de responsabilidad:no tengo mucha experiencia con Python o el código de duplicity, por lo que no puedo decir si esta modificación causará o no efectos perjudiciales. Para mí, pude completar mi restauración agregando la línea de código a continuación.

Solución: Pude superar esto insertando una verificación clave para el volume_name_dict objeto.

Nueva línea:if vol_num in backup_set.volume_name_dict.keys():

En duplicity 0.7.06, puede reemplazar este método en la línea 752:

def get_fileobj_iter(backup_set):
    """Get file object iterator from backup_set contain given index"""
    manifest = backup_set.get_manifest()
    volumes = manifest.get_containing_volumes(index)
    for vol_num in volumes:
           if vol_num in backup_set.volume_name_dict.keys():
               yield restore_get_enc_fileobj(backup_set.backend,
                                             backup_set.
                                             volume_name_dict[vol_num],
                                             manifest.
                                             volume_info_dict[vol_num])
               cur_vol[0] += 1
               log.Progress(_('Processed volume %d of %d') %
                            (cur_vol[0], num_vols),
                            cur_vol[0], num_vols)
if hasattr(globals.backend, 'pre_process_download'):
    file_names = []
    for backup_set in backup_setlist:
        manifest = backup_set.get_manifest()
        volumes = manifest.get_containing_volumes(index)
        for vol_num in volumes:
            file_names.append(backup_set.volume_name_dict[vol_num])
    globals.backend.pre_process_download(file_names)

fileobj_iters = list(map(get_fileobj_iter, backup_setlist))
tarfiles = list(map(patchdir.TarFile_FromFileobjs, fileobj_iters))
return patchdir.tarfiles2rop_iter(tarfiles, index)

Si no está familiarizado con Python (yo no), puede validar el código aquí:http://pep8online.com/:las sangrías deben alinearse correctamente.


Ubuntu
  1. Cómo agregar un archivo de intercambio en Ubuntu

  2. Descargue un archivo en Ubuntu usando la línea de comandos en el sistema Ubuntu 20.04

  3. Cómo instalar g ++ en Ubuntu

  4. VIM:cómo ir a la línea exacta en Ubuntu

  5. Alternativa a la línea de comandos SSH de Ubuntu

Copiar un archivo simultáneamente en varias ubicaciones a través de la línea de comandos de Ubuntu

Convierta nombres de archivo a minúsculas a través de la línea de comandos de Ubuntu

Eliminación por lotes de espacios en nombres de archivos a través de la línea de comandos de Ubuntu

Cómo descargar un archivo en Ubuntu Linux usando la línea de comandos

Restaurar copias de seguridad de archivos en cPanel

Cómo programar copias de seguridad de archivos en Google Drive en Ubuntu