web-dev-qa-db-fra.com

Extraire les fichiers de duplicité manuellement

J'ai perdu le lecteur et le système d'exploitation Ubuntu installé, à partir duquel j'ai créé une sauvegarde à l'aide de Duplicity, et je ne sais pas comment restaurer les fichiers archivés que je conserve toujours sur un autre lecteur. Ils suivent tous ces 4 notations

duplicity-full.20140106T111233Z.manifest
duplicity-full-signatures.20140106T111233Z.sigtar.gz
duplicity-full.20140106T111233Z.volxxx.difftar.gz (multiple volumes)
duplicity-full.20140106T111233Z.volxxx.difftar (multiple volumes)

Il me faut récupérer des données importantes. Y a-t'il quelque chose que je puisse faire? Serait-il suffisant pour utiliser gzip? Et si oui, comment pourrais-je les extraire facilement?

EDIT 1 En essayant vos suggestions, avec les options de restauration et --gio, je reçois ce texte:

duplicity restore file://media/ubuntu/Toshiba\ HDD/BACKUPS/Documents/ /media/ubuntu/9fb63c8e-ecb5-4c55-b4e0-282e7b4a82ff/tmp/docs/
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase: 
Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1494, in <module>
    with_tempdir(main)
  File "/usr/bin/duplicity", line 1488, in with_tempdir
    fn()
  File "/usr/bin/duplicity", line 1337, in main
    do_backup(action)
  File "/usr/bin/duplicity", line 1422, in do_backup
    restore(col_stats)
  File "/usr/bin/duplicity", line 697, in restore
    restore_get_patched_rop_iter(col_stats)):
  File "/usr/bin/duplicity", line 719, in restore_get_patched_rop_iter
    backup_chain = col_stats.get_backup_chain_at_time(time)
  File "/usr/lib/python2.7/dist-packages/duplicity/collections.py", line 952, in get_backup_chain_at_time
    raise CollectionsError("No backup chains found")
CollectionsError: No backup chains found

/ media/ubuntu/Toshiba\HDD/BACKUPS/Documents / est l'endroit où se trouvent tous les fichiers de duplicité, et / media/ubuntu/9fb63c8e-ecb5-4c55-b4e0-282e7b4a82ff/tmp/docs / un dossier de destination temporaire dans lequel je veux restaurer les fichiers.

EDIT 2 Corrigé la barre oblique manquante dans le fichier: // média .... Maintenant, je récupère les fichiers restaurés, mais pas exactement ce à quoi je m'attendais. Il manque beaucoup de fichiers (jusqu'à 24 Go!)

root@ubuntu:/media/ubuntu/Toshiba HDD/BACKUPS/Documents# ls -la /tmp/docs/home/luis/
total 4176
drwx------ 16 root root    1000 Jun 30 19:13 .
drwx------  3 root root      60 Jun 30 19:13 ..
drwx------  3 1000 1000      60 Oct 23  2013 .activestate
drwxr-xr-x  2 1000 1000      60 Oct 23  2013 .ActiveState
drwx------  3 1000 1000      60 Dec 28  2012 .Adobe
-rw-------  1 1000 1000   32120 Jan  4 12:56 .bash_history
-rw-r--r--  1 1000 1000     220 Dec 28  2012 .bash_logout
-rw-r--r--  1 1000 1000    3637 Dec 28  2012 .bashrc
drwx------  3 1000 1000      60 Jan  3 14:01 .cache
drwxr-xr-x  3 1000 1000      60 Nov 16  2013 .cddb
-rw-rw-r--  1 1000 1000     740 Jan 10  2013 .cola
drwx------  3 1000 1000      60 Dec 29  2012 .compiz
drwxrwxr-x  3 1000 1000      80 Oct  1  2013 .composer
drwx------ 46 1000 1000    1020 Dec  8  2013 .config
drwx------  3 1000 1000      60 Dec 28  2012 .dbus
-rw-r--r--  1 1000 1000      25 Jul 13  2013 .dmrc
drwx------  3 1000 1000     380 Jan  6 10:31 .dropbox
drwxr-xr-x  6 1000 1000    1660 Dec 17  2013 .dropbox-dist
drwx------  3 root root      60 Jun 30 19:13 .Eclipse
-rw-------  1 1000 1000   50282 Jan  6 10:29 .ICEauthority
drwxrwxr-x 14 1000 1000     340 Dec  7  2013 .PlayOnLinux
-rw-r--r--  1 root root 2077491 Nov 23  2013 .Soulseek.1385165090491
-rw-r--r--  1 root root 2076644 Nov 23  2013 .Soulseek.1385166430938
-rw-r--r--  1 1000 1000    9986 Dec 30 20:02 .Soulseek.1388433748295
drwxrwxr-x  2 1000 1000      60 Oct 13  2013 .SyncWall
-rw-------  1 1000 1000     109 Jan  6 10:29 .Xauthority
-rw-rw-r--  1 1000 1000       0 Jul 29  2013 .Xauthority.25Y20W
-rw-rw-r--  1 1000 1000       0 Jul 13  2013 .Xauthority.7K14ZW
-rw-rw-r--  1 1000 1000       0 Jul  7  2013 .Xauthority.7K7SZW
-rw-rw-r--  1 1000 1000       0 Jul 13  2013 .Xauthority.9X1E0W
-rw-rw-r--  1 1000 1000       0 Sep  1  2013 .Xauthority.A3D52W
-rw-rw-r--  1 1000 1000       0 Sep  1  2013 .Xauthority.CEUV2W
-rw-rw-r--  1 1000 1000       0 Jul 27  2013 .Xauthority.CP7Q0W
-rw-rw-r--  1 1000 1000       0 Sep  8  2013 .Xauthority.E1ET2W
-rw-rw-r--  1 1000 1000       0 Aug 26  2013 .Xauthority.E32K2W
-rw-rw-r--  1 1000 1000       0 Sep 14  2013 .Xauthority.EKK92W
-rw-rw-r--  1 1000 1000       0 Jul 12  2013 .Xauthority.F4QRZW
-rw-rw-r--  1 1000 1000       0 Jul 25  2013 .Xauthority.ISVZ0W
-rw-rw-r--  1 1000 1000       0 Jul 11  2013 .Xauthority.JU3UZW
-rw-rw-r--  1 1000 1000       0 Aug 31  2013 .Xauthority.M30S2W
-rw-rw-r--  1 1000 1000       0 Aug  1  2013 .Xauthority.M3H20W
-rw-rw-r--  1 1000 1000       0 Sep  9  2013 .Xauthority.MKIN2W
-rw-rw-r--  1 1000 1000       0 Aug 28  2013 .Xauthority.RWHB2W
-rw-rw-r--  1 1000 1000       0 Jul 15  2013 .Xauthority.SN85ZW
-rw-rw-r--  1 1000 1000       0 Sep 15  2013 .Xauthority.T22C3W
-rw-rw-r--  1 1000 1000       0 Jul 14  2013 .Xauthority.T6CB0W
-rw-rw-r--  1 1000 1000       0 Jul 31  2013 .Xauthority.VF7Q0W
-rw-rw-r--  1 1000 1000       0 Sep  9  2013 .Xauthority.WGEX2W
-rw-rw-r--  1 1000 1000       0 Aug 31  2013 .Xauthority.WZR52W
-rw-rw-r--  1 1000 1000       0 Jul 25  2013 .Xauthority.YQIR0W

Le plus étrange, c’est, à part tous les fichiers commençant par un point, que je ne peux pas parcourir les répertoires home/luis avec Nautilus, où se trouvaient en fait toutes mes données sauvegardées.

6
Luis Martin
  1. Utilisez duplicity pour l'extraire:

    duplicity restore file:///path_to_folder_contains_backups/ path_where_to_extract_it/
    
  2. Entrez le mot de passe GnuPG, appuyez sur Enter

Par défaut, Duplicity restaure la dernière sauvegarde (comparant le temps) dans le dossier source, même s'il ne s'agit pas de la sauvegarde du même dossier. Si vous avez plusieurs sauvegardes pour différents dossiers ou si vous voulez une heure spécifique du même dossier, utilisez l'exemple de l'option --time:

duplicity restore --time 20140106T111233Z file:///path_to_folder_contains_backups/ path_where_to_extract_it/

Impossible de voir les fichiers que vous recherchez, essayez:

  1. Créez une fonction qui répertorie tous les fichiers contenus dans toutes les sauvegardes complètes/inc disponibles dans le dossier source:

    ldup () {
        for f in $(ls $1/duplicity-*.manifest.gpg); do
            echo "========================================================================"; 
            echo $f;
            n=$(basename $f .manifest.gpg);
            prefix=$(echo $n | awk 'BEGIN { FS = "." } ;{ print $1 }');
            if [[ "$prefix" == "duplicity-full" ]]; then
                t=$(echo $n | awk 'BEGIN { FS = "." } ;{ print $2 }');
            else
                t=$(echo $n | awk 'BEGIN { FS = "." } ;{ print $4 }');
            fi;
            echo -e "Creation time:\t" $t;
            echo "------------------------------------------------------------------------";
            duplicity list-current-files --time $t file://$1/ | grep "$2";
        done;
    }
    
  2. Pour lister tous les fichiers (note sans queue /):

    ldup /path_to_folder_contains_backups
    
  3. rechercher un motif dans les noms de fichiers:

    ldup /path_to_folder_contains_backups pattern
    

Référence: man duplicity

14
user.dz

Essayez d'abord de restaurer avec duplicité.
duplicity --gio file:///media/backup /tmp/restore

Il y a quelques étapes raisonnablement détaillées (et généralement correctes) ici .

Détails de la clé

L'important est de décompresser tous les fichiers duplicity-full.*.difftar.gz au même endroit, de manière à ne conserver que deux répertoires snapshot/ et multivol_snapshot/.

Si votre fichier est dans snapshot/ alors vous avez terminé. Sinon, recherchez le répertoire dans multivol_snapshot/ au niveau du chemin où se trouvait votre fichier: vous devez réunir tous les fichiers de ce répertoire pour recréer le fichier d'origine. Les fichiers sont numérotés et peuvent être réunis à l'aide de la commande cat. En fonction de la taille de l'original, il peut y avoir plusieurs parties.

Problème avec les instructions d'origine

Les directions liées ci-dessus suggèrent d'utiliser cat * > rescued-file. Malheureusement, cette approche simple échoue si vous avez plus de 9 parties. Puisque * s'agrandit dans l'ordre du dictionnaire et non dans l'ordre numérique, 10 serait répertorié avant 2 et le fichier serait reconstruit dans le mauvais ordre.

Solution de contournement

Une approche simple consiste à se rappeler que l'ordre du dictionnaire fonctionne lorsque les nombres ont la même longueur et que ? correspond à un seul caractère. Donc, si votre plus gros fichier a trois chiffres, vous pouvez entrer manuellement:

cat ? ?? ??? > rescued-file

Ajoutez ou supprimez les motifs ? au besoin, en fonction du plus grand numéro de fichier.

Script

Si vous avez beaucoup de fichiers à récupérer et que vous n'avez pas envie de les taper pour tous, vous préférerez peut-être utiliser un script comme celui-ci. Il répertorie le répertoire contenant pour chaque fichier, supprime les doublons de la liste, puis passe à chaque répertoire et crée un fichier content à partir des fragments qu'il contient. (spacer ne sert qu'à faire fonctionner $1.)

find multivol_snapshot/ -type f -printf '%h\0' | \
  sort -uz | \
  xargs -0 -n 1 sh -c 'cd "$1" ; cat $(ls | sort -n) > content' spacer

Il ne vous reste plus qu'à ajouter /content à la fin du nom de fichier recherché, et vous devriez le trouver.

Limitations

Cela ne restaure aucune des autorisations de fichiers d'origine ou la propriété. Il ne traite pas non plus des sauvegardes incrémentielles, mais ensuite les instructions liées ont également une impasse sur ce point - ils suggèrent simplement d'utiliser rdiff 'pour assembler les fichiers' et renvoyer le lecteur à man rdiff.

source: SF SE
ici vous pouvez trouver un programme Java pour une restauration facile des sauvegardes compliquées.

6
totti

Déjà Dup utilise un format opaque pour les fichiers stockés dans votre emplacement de sauvegarde. Vous devez utiliser Déjà Dup ou un autre outil basé sur la duplicité pour restaurer vos fichiers (voir ce guide de restauration ).

0
totti