Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/04/2014, à 11:04

spectre3brad

Boucle de comparaison et copie

Bonjour à tous,

je cherche comment creer dans un script en cours la solution suivante:

Copie d'un dossier original vers un dossier de sauvegarde
|
Dossier original = dossier de copie ?
|
- Oui: Alors sortie de boucle.
|
- Non: Alors copie des différence entres les deux dossiers PUIS retest de (Dossier original = dossier de copie ?) jusqu'à trois tentative de la boucle sinon sortie.


Comment faire?

Merci.

Hors ligne

#2 Le 30/04/2014, à 11:59

tiramiseb

Re : Boucle de comparaison et copie

Salut,

Dans ton explication il y a un truc que je ne comprends pas : c'est quoi un "dossier de copie" ?



EDIT : par "dossier de copie", tu parles du dossier destination de la copie ?

Si oui, alors ce que je comprends c'est que tu veux que le dossier destination soit strictement identique au dossier source. Dans ce cas, pourquoi ne pas utiliser rsync ?

Dernière modification par tiramiseb (Le 30/04/2014, à 12:00)

Hors ligne

#3 Le 30/04/2014, à 13:10

spectre3brad

Re : Boucle de comparaison et copie

Bonjour Tiramiseb,

oui effectivement dans mon cas "dossier de copie" est le dossier de destination de la copie.

Pour rsync je pensai que c’était essentiellement pour le distant et non local.

Hors ligne

#4 Le 30/04/2014, à 13:13

tiramiseb

Re : Boucle de comparaison et copie

Pour rsync je pensai que c’était essentiellement pour le distant et non local.

Qui peut le plus peut le moins smile
Dans la destination, donne un simple chemin plutôt qu'un nom de machine, et voilà !

Hors ligne

#5 Le 30/04/2014, à 13:33

spectre3brad

Re : Boucle de comparaison et copie

Donc si je fait la commande suivante:

rsync -ac /.../mon_dossier_source/ /.../mon_dossier_sauvegarde/ --log-file=/.../mon_log.log

Alors j'ai une copie avec -a (archive) donc complète et -c (checksum) donc avec vérification de l’intégralité entres les deux dossiers? Pour le checksum comment recuperer la sortie à la volée afin de passer à la ligne suivante du script si OK ou sinon recommencer la procedure jusqu'à trois fois maximum pour éviter de boucler indéfiniment?

Hors ligne

#6 Le 30/04/2014, à 13:55

tiramiseb

Re : Boucle de comparaison et copie

J'imagine que, s'il échoue, rsync a un code retour différent de 0, comme n'importe quel logiciel bien foutu.

Mais je ne suis pas sûr que tout soit bien clair dans ce que tu demandes.

Ce que tu veux, c'est relancer rsync si rsync échoue ? Ou alors tu veux le relancer si les répertoires sont différents ?

En fait, c'est quoi ton besoin à l'origine ? Parce que là, ce que tu as montré (la boucle, tout ça), c'est déjà une tentative de solution pour un besoin...

Hors ligne

#7 Le 30/04/2014, à 14:17

spectre3brad

Re : Boucle de comparaison et copie

J'ai testé rsync -ca /source /destination est cela semble correct sauf la question de la potentielle erreur checksum.

D'une certaine façon ici ci mes deux répertoires ne sont pas identique après copie c'est que rsync à foiré quelque part non?

En fait à la base je veut sauvegarder des .conf .img .iso de mes machines virtuelles KVM le tout dans un dossier de sauvegarde et pour des VMs il faut mieux être sur d'avoir une sauvegarde béton et non erronée sinon aie. Donc voila pourquoi je cherche à vérifier que le dossier de sauvegarde soi bien identique à celui d'origine et que si ce n'est pas le cas alors relancer la procedure de copie. Par contre pour éviter de boucler sans fin je préfère limiter la procedure à trois fois maximum puis passer au reste du script.

J'ai déjà une sauvegarde en locale et là le script me permettrai de réaliser une deuxième sauvegarde du dossier de sauvegarde local vers un support externe d'où le besoin de vérifier qu'ils soient bien identiques.

Hors ligne

#8 Le 30/04/2014, à 14:36

tiramiseb

Re : Boucle de comparaison et copie

D'une certaine façon ici ci mes deux répertoires ne sont pas identique après copie c'est que rsync à foiré quelque part non?

Oui.
Et par extension, rsync ne foirant jamais, les deux répertoires seront identiques tongue

Sinon, tu peux tester le code retour de rsync au cas où, par exemple avec "[ $? -ne 0 ]". Cela étant dit, si rsync foire la première fois, il y a de fortes chances qu'il foire la seconde fois, et la 3me aussi...

Cela dit, tu parles de KVM : fais-tu ça avec les machines arrêtées ?

Hors ligne

#9 Le 30/04/2014, à 15:37

spectre3brad

Re : Boucle de comparaison et copie

OK je vais voir ça.

Pour KVM j'avais pensé à freezer le temps de la sauvegarde mais j'avais tenter à chaud en prod avec un simple cp et cela à fonctionné (restauration sur autres PC pour test), après coup de chance ou non? J'avais recupéré ca sur Internet mais des tests seront refait au cas ou pour tout valider.

Encore merci pour ton aide en tout cas.

Hors ligne

#10 Le 01/05/2014, à 07:52

tiramiseb

Re : Boucle de comparaison et copie

un simple cp et cela à fonctionné (restauration sur autres PC pour test), après coup de chance ou non?

Coup de chance ou pas coup de chance, en tout cas il y a un risque.

Pour freezer les disques des machines virtuelles, tu peux éventuellement faire des snapshots LVM, si toutefois tu utilises LVM. Comme ça les machines continuent de tourner normalement.

Hors ligne

#11 Le 01/05/2014, à 08:30

bruno

Re : Boucle de comparaison et copie

Bonjour,

Pour faire des instantanés d'une machine virtuelle il y a des outils spécifiques. Voir man kvm-img (ou qemu-img) par exemple.

Hors ligne

#12 Le 02/05/2014, à 16:21

spectre3brad

Re : Boucle de comparaison et copie

Bonjour,

un petit soucis avec rsync:

celui-ci copie seulement les données modifiée entre la première sauvegarde et l'actuelle sauvegarde à l'instant "T". Seulement je tourne sur trois cartouches donc si par exemple ma cartouche du lundi est effacé le jeudi pour la sauvegarde du jeudi alors je perd les données du lundi non modifiées depuis?

Donc comment procéder pour que rsync copie toutes les données?

Merci.

Hors ligne

#13 Le 05/05/2014, à 12:53

tiramiseb

Re : Boucle de comparaison et copie

Cartouches ?

Houla si tu fais une rotation sur différents supports, alors il faut utiliser un "vrai" logiciel de sauvegarde plutôt...
rsync est fait pour travailler sur un seul espace destination.

Cela dit, tu écris : « si par exemple ma cartouche du lundi est effacé le jeudi pour la sauvegarde du jeudi ».
Pourquoi l'effacer ? Pourquoi ne pas enregistrer le delta entre lundi et jeudi.

Hors ligne

#14 Le 07/05/2014, à 11:47

spectre3brad

Re : Boucle de comparaison et copie

Bonjour,

Bon mon script avance bien, j'ai bientot terminé et une fois fini je partagerai pour aider ceux qui le veulent.

Pour la sauvegarde sur media oui je vais partir plutot sur un delta c'est effectivement plus simple.

Par contre là je bloque sur un chose:
Sur le media externe j'ai ceci:
2014-05-07/...
2014-05-06/...
2014-05-05/...
Divers/...
fichier.txt

Je cherche un moyen de supprimer le dossier le plus vieux parmis les dossiers nommés ici sous la forme "AAAA-MM-JJ/". Il faut se baser seulement sur le nom du dossier sous cette forme. Comment faire?

Encore merci.

Hors ligne

#15 Le 07/05/2014, à 13:09

bruno

Re : Boucle de comparaison et copie

Voici 2 liens qui peuvent t'aider pour ton script :

en anglais : http://www.sanitarium.net/golug/rsync_backups_2010.html (notamment la partie rotating backups)

et en français : https://wiki.debian.org/fr/RsyncSnapshots (inspiré du premier). Le script donné ici est très bien, hormis un gros défaut : si rsync échoue pour une raison ou une autre il ne permet pas de reprendre la sauvegarde là où elle s'est arrêtée. Mais c'est facilement modifiable dans la dernière partie du script.

Dernière modification par bruno (Le 07/05/2014, à 13:16)

Hors ligne

#16 Le 07/05/2014, à 21:19

spectre3brad

Re : Boucle de comparaison et copie

Merci Bruno ça m'a permis d'avancer à nouveau.

A présent je cherche comment obtenir la valeur en byte/octet de l'espace sur le média de sauvegarde puis la valeur en byte/octet nécessaire pour la sauvegarde comprise dans un dossier/

Cela afin de vérifier via boucle "While" si j'ai assez d'espace pour ma sauvegarde, sinon le dossier le plus vieux est supprimé et ce jusqu'à ce que l'espace disponible soit suffisant.

Question rattachée mais pas forcement très importante smile : Comment éviter de boucler indéfiniment si jamais un média trop petit est monté par erreur?

En tout cas merci à vous j'ai déjà super bien avancé et je vois le bout enfin smile

Hors ligne

#17 Le 08/05/2014, à 20:34

tiramiseb

Re : Boucle de comparaison et copie

Euh as-tu vraiment besoin d'un script pour faire tout ça ?

Ce que tu sembles essayer de faire, ça ressemble vachement à ce que font très bien rdiff-backup et rsnapshot...

Hors ligne