Se connecter avec
S'enregistrer | Connectez-vous

LInux RedHat: Restaurer à partir du fichier le plus récent Recherche :

Dernière réponse : dans Le monde de Linux

Bonjour,
J'ai une question concernant la restauration;
Je dois faire une restauration à partir du fichier de sauvegarde le plus récent, mais il m'en manque un bout...

Quand tu connais le nom du fichier, c'est simple, on a juste à faire;

restore -ivf /backup/NomDuFichier par exemple,

mais si je dois restaurer à partir du fichier le plus récent, il doit bien y avoir une façon de le faire sans d'abord être obliger de faire une recherche sur le nom du dernier fichier de sauvegarde.

Est-ce que quelqu'un connais la commande pour y arriver?

Merci!

Jay
Lassé par la pub ? Créez un compte

Bonjour Zeb,
je cherche 'la' commande qui va faire en sorte que je puisse faire un Restore à partir du fichier de sauvegarde le plus récent.

Je crois que je pourrais faire quelque chose avec la commande Find, genre;

find /backup -type f -mtime -1 -exec restore {} \

Je vais aller faire quelques tests :) 

Jay

Salut Jay

Utilise la balise [ fixed ] pour présenter tes commandes et leur résultat, je te prie. (Tu n'as pas obligation à le faire, puisque je n'ai toujours pas écrit de règlement à la cat' Linux ;)  )

---------------------------

Alors oui find est a priori une bonne solution pour rechercher un fichier, mais non. find va aller scruter tous les sous-répertoires dans /backup et récupérer tous les fichiers de moins d'un jour. Or ton exercice est de récupérer le fichier le plus récent.

On pourrait le faire avec find, bien sûr, mais je te propose une autre solution.

Allons-y pas à pas :

Que dit la page du manuel de l'option -t de la commande ls ?
Qu'obtiens-tu en exécutant la commande suivante :
$ ls -t /backup


La suite est à base de head, mais ne brûlons pas les étapes...

L'option -t permet de trier le contenu d'un répertoire par date.

Petit changement au programme!
Il faut restaurer manuellement les fichiers de sauvegarde maintenant au lieu de automatiquement... :( 

Voici ce qu'on me demande de simuler:
  • Sauvegarde du contenu du répertoire /home dans le répertoire /backup
  • copie de sécurité des fichiers de backup sur un autre média (clé usb dans ce cas-ci)
  • simulation de l'altération du contenu du répertoire /home
  • restauration du contenu du répertoire /home à partir du fichier de backup le plus récent.

    Donc les étapes sont:

    1- Création du fichier de sauvegarde

    Les Fichiers de sauvegarde sont créés quotidiennement avec une planification de tâche automatisé CRON avec la commande suivante:
    tar cvzr /backup/hbackup.tar.gz.$(date +%d%b%y) /home/*

    Ce qui crée un fichier compressé dans /backup du contenu du répertoire /home avec la date du jour dans le nom de fichier.

    2- Copie de sécurité des fichiers de sauvegarde sur la clé usb (qui est montée dans /media/usb)
    mv /backup/hbackup.tar.gz.* /media/usb


    3- Restauration du contenu du répertoire /home:

    Je détermine d'abord le fichier le plus récent:
    ls -lt /media/usb

    Je décompresse ensuite le fichier
    tar -xvzf /media/usb/fichierleplusrécent


    Question

    Comment faire pour décompresser mon fichier dans le répertoire de mon choix, dans ce cas-ci dans /home?

    J'ai lu le man de tar et je n'ai pas trouvé la façon de spécifié l'endroit exacte ou je veux le décompresser.
    Disons que pour fin de test, je veux décompresser mon fichier de sauvegarde dans le répertoire /backup/test, comment je pourrais faire pour lui dire; peu importe où je suis, je veux que tu décompresse le fichier dans /backup/test?

    Merci!

    Jay

    Citation :
    J'ai lu le man de tar et ...

    Ah, bah on sent tout de suite que tu fais des progrès :) 

    Question de principe, sans doute, j'aime bien voir l'extension en dernier. Je transformerais bien Tes hbackup.tar.gz.$(date +%d%b%y) en hbackup.$(date +%d%b%y).tar.gz. Et tant qu'à faire des critiques pour pas grand chose, je me permets même de te proposer d'utiliser l'extension .tgz plutôt que .tar.gz. Pourquoi ? Parce que c'est l'usage. Tiens, en passant, un peu de vocabulaire. un fichier .tar s'appelle un tarball. Dans la nature, on trouve les tarballs sous forme compressée, bien sûr, avec les extensions .tar.Z (compress, obsolète), .tgz (gzip, classique), .tbz (bzip2, très bon), et tout récemment .txz (xz, excellentissime).

    La commande tar, c'est tape archiver. L'archiveur sur bande !!!! Autant te dire que c'est un bonne vieille commande, bien archaïque. Mais comme tout est bien pensé du départ sous UNIX :sol:  elle est toujours là et très utile. A condition de bien la comprendre pour mieux s'en servir.

    Alors, comment fonctionne tar ?
    1°) On stocke dans un tarball, pour chaque fichier, les données suivantes :
  • le chemin du fichier, ce qui inclut son nom,
  • les attributs du fichier (date, droits, etc.),
  • le contenu du fichier.

    Arrêtons-nous une seconde sur le premier élément, le chemin du fichier. C'est là toute la subtilité. En enregistrant tout le /home, tu as stocké ton fichier .profile. Il est référencé dans le tarball sous le nom /home/jay/.profile, et on ne peut pas le confondre avec cet autre fichier /home/tee/.profile, par exemple. En sortie, tar restitue exactement ce qu'on a mis dans le tarball. Donc, c'est à la création qu'il faudra veiller à bien choisir le nom de nos fichiers.

    Comment ça ? Ben oui, les chemins des fichiers sont stockés tels que donnés sur la ligne de commande.
    L'option -c crée les tarballs, l'option -x les désarchive. Et l'option -t les visite !

    Amusons-nous :
    $> cd /
    $> tar -cf $HOME/archive1.tar $HOME/.profile

    $> cd $HOME
    $> tar cf $HOME/archive2.tar .profile $HOME/.profile

    $> cd /
    $> tar cf $HOME/archive3.tar -C $HOME .profile

    $> cd /
    $> tar cf $HOME/archive4.tar -C /home */.profile

    $> tar tvf $HOME/archive1.tar
    $> tar tvf $HOME/archive2.tar
    $> tar tvf $HOME/archive3.tar
    $> tar tvf $HOME/archive4.tar

    As-tu compris l'intérêt de ce petit jeu ?

    Voilà, c'est tout. Si tu enregistres un fichier avec un chemin absolu, tu ne pourras pas le désarchiver ailleurs qu'exactement là où il était.
    Il te faut donc jouer avec des chemins relatifs.

    On reprend :
    1°) Commande cron :
    tar czr /backup/hbackup.$(date +%d%b%y).tgz -C /home .

    (T'as vu, j'ai viré l'option -v. Sais-tu pourquoi ?)

    2°) Restauration :
    $> cd /backup/test
    $> tar xvzf /media/usb/fichierleplusrécent


    Et voilà.
    A part que c'est très moche, ton fichierleplusrécent.

    On recommence à jouer :
    $> ls -lt /media/usb
    $> ls -t /media/usb
    $> ls -1t /media/usb
    $> ls -1t /media/usb | head
    $> ls -1t /media/usb | head -n 1
    $> man ls
    ...
    $> man head
    ...
    $> ls -t /media/usb | head -1
    (C'est malin, on ne voit pas bien la différence entre mes '1' (un) et mes 'l' (L minuscule) :fou:  )

    Et ta commande devient :
    $> tar -xvzf $( ls -t /media/usb/hbackup.$(date +%d%b%y).tgz | head -1 )

    Et donc attention de bien vérifier dans quelle répertoire l'on se trouve.

    Ces explications te semblent-elle claires et pertinentes ? [:zeb:3]

    Salut Zeb,
    Merci de prendre le temps de me donner autant de détails, c'est vraiment super!

    Je me suis amusé à essayer tes commandes :) 
    J'ai eu des erreurs, mais j'ai beaucoup de travail à faire de mon côté pour bien comprendre tout ce que tu as apporter comme point.
    Je vais continuer à m'amuser à exécuter les commande et tenter de bien les maîtriser.


    Mais la bonne nouvelle dans tout ça, j'ai trouvé la façon de faire ce que je voulais! :) 
    Quand tu as parlé du chemin absolu, je me suis souvenu que j'avais lu ça quelque part dans le man tar. Je suis allé revérifier, refais des tests et j'ai trouvé!
    Il faut utiliser la commande P dans le tar, donc si je fais:
    tar czfP /backup/hbackup.$(date +%d%b%y).tgz

    Quand je ferai l'extraction
    tar xzfP /backup/hbackup.06jan10.tgz

    peu importe où j'exécuterai cette commande, il ira le placer les fichiers au bon endroit, au chemin absolue :) 

    Alors problème réglé!

    Encore une fois milles merci Zeb, j'ai encore appris plein de chose! :) 

    On se reparle peut-être dans un autre post! :) 

    Jay

    Ah non mon grand. L'option -P t'empêche de désarchiver tes données dans /backup/test. Ce n'est donc pas tout à fait ce que tu demandais :o 
    _______________________________________

    Le Truc de l'expert :sol: 

    En voyant le nom de ton fichier en clair, je me suis fait cette réflexion : On horodate les fichiers en mettant dans leur nom une information du type +%Y%m%d plutôt que celle que tu as choisis. Pourquoi ? Simplement parce qu'un fichier, au gré de ces copies et recopies, peut malencontreusement changer de dates de création ou de modification auxquelles dès lors, on ne peut plus se fier pour déterminer le bon fichier. Reste alors l'ordre alphabétique. Il se trouve que le format de date proposé est directement utilisable dans ce cadre.

    [:zeb:3]

    Salut Zeb,
    J'ai possiblement mal exposé mon problème :p 
    mais je peux t'assurer que l'option P règle mon problème.
    Si je n'utilise pas l'option P et que je décompresse mon fichier à partir du répertoire /backup par exemple, un répertoire home va se créer dans /backup, tandis que si j'utilise l'option P, la restauration se fait au bon endroit même si je décompresse à partir de /backup.

    Pour le format de date, c'est ce qu'on nous avais imposé. J'avoue que d'utiliser le %Y pour avoir la date en 4 digit au lieu de %y pour l'avoir en 2 digit est beaucoup mieux. :) 

    Merci pour tout!

    L'option -P t'empêche de désarchiver tes données dans /backup/test. Ce n'est donc pas tout à fait ce que tu demandais. Même si c'est ce qui te convient.

    Quoi qu'il en soit, je suis satisfait de ta satisfaction.
    ;) 

    Mais le test que j'ai fais fait en sorte qu'en plus d'empêcher de désarchiver dans /backup/test, il va porter les fichiers au bon endroit. J'avais créé un fichier bidon dans /home, j'ai fais une sauvegarde avec l'option P, j'ai supprimé le fichier et après avoir décompressé le fichier avec l'option P, le fichier est réaparu dans /home, même si j'ai désarchivé à partir de /backup/test, ce que je n'arrivais pas à faire sans l'option P.

    Je suis aussi satisfait de ta satisfaction de ma satisfaction :pt1cable:  :lol: 

    Merci!

    Jay

    :D 

    Citation :
    même si j'ai désarchivé à partir de /backup/test

    Ah, oki :pt1cable:  Je viens de comprendre ce que tu voulais dire. /backup/test devait être l'origine de la commande, pas la destination. Je lisais décompresser dans .. et il fallait comprendre décompresser depuis ... Et ne viens pas me parler de différences de vocabulaire entre la Belle Province et la Picardie :o 

    T'as vu comme je pinaille !!! Avec moi, il ne fait pas bon être un bug ! :lol: 
    Lassé par la pub ? Créez un compte