Backup différentiel Le sujet est résolu

Tout ce qui concerne la programmation.
Répondre
Avatar de l’utilisateur
Arnaud
Membre
Membre
Messages : 162
Inscription : 23 avr. 2016, 14:31
Localisation : Allemagne
Status : Hors-ligne

Bonjour,

Est-ce que quelqu'un aurait un script de sauvegardes différentielles sous la main ?
Cela me permettrait de gagner du temps et de ne pas avoir à réinventer la roue.
Tout ce que je trouve sur le net, ce sont des scripts de sauvegardes incrémentales, ce dont je n'ai pas besoin.

Merci !
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

Sur le wiki tu n'as pas trouvé ton bonheur ? je crois qu'il y en a
Avatar de l’utilisateur
Arnaud
Membre
Membre
Messages : 162
Inscription : 23 avr. 2016, 14:31
Localisation : Allemagne
Status : Hors-ligne

Tu parles de cette page : https://wiki.debian-fr.xyz/Rsync_%2B_NF ... i%C3%A8re) ?
Effectivement, je ne l'avais pas vue, merci, mais je cherche un autre type de sauvegarde différentielle : celle présentée sur cette page est complète à chaque étape, ce qui ne m'arrange pas puisque j'uploade les sauvegardes sur un autre serveur à chaque fois.

Je cherche plutôt dans la direction : une sauvegarde complète le dimanche ( que j'ai déjà ), et une différentielle ( seulement les fichiers modifiés ou ajoutés ) tous les autres jours.
Je peux poser la question autrement : comment ne récupérer que les fichiers modifiés ou ajoutés dans une arborescence, par rapport à une archive tar ?
hybridemoineau
Membre
Membre
Messages : 390
Inscription : 24 avr. 2016, 15:34
Status : Hors-ligne

J'avais fait vite fait un truc comme ça pour une sauvegarde sur clé usb dans une archive rar numérotée de mes fichiers modifiés depuis 24h dans certans dossiers (avec possibilité de choisir dans l'arborescence via l'option -prune de find et les types de fichiers via -name). A adapter:

Code : Tout sélectionner

mkdir /chemin-repertoire-fichiers-à-sauvegarder-1 /chemin-repertoire-fichiers-à-sauvegarder-2
find /chemin-repertoire-à-examiner-1 -type f -mtime -1 -exec cp {} /chemin-repertoire-fichiers-à-sauvegarder-1 \;
find /chemin-repertoire-à-examiner-2 -type f -mtime -1 -exec cp {} /chemin-repertoire-fichiers-à-sauvegarder-2 \;
rar a /chemin-archive-rar /chemin-repertoire-fichiers-à-sauvegarder-1 /chemin-repertoire-fichiers-à-sauvegarder-1
su -c "cp -p --backup=numbered   /chemin-archive-rar /chemin-clé-usb"
rm -rf /chemin-repertoire-fichiers-à-sauvegarder-1 /chemin-repertoire-fichiers-à-sauvegarder-2 /chemin-archive-rar
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4939
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

Pour mes sauvegardes, j'utilise rsync et ses multiples options, comme par exemple:
-u, --update
This forces rsync to skip any files which exist on the destination and have a modified time that is newer than the
source file. (If an existing destination file has a modification time equal to the source file’s, it will be
updated if the sizes are different.)
Avatar de l’utilisateur
Arnaud
Membre
Membre
Messages : 162
Inscription : 23 avr. 2016, 14:31
Localisation : Allemagne
Status : Hors-ligne

Merci hybridemoineau, je n'avais pas pensé à l'option mtime de find, c'est une bonne piste. Après il faut encore adapter pour garder l'arborescence.
Avatar de l’utilisateur
Arnaud
Membre
Membre
Messages : 162
Inscription : 23 avr. 2016, 14:31
Localisation : Allemagne
Status : Hors-ligne

piratebab a écrit :Pour mes sauvegardes, j'utilise rsync et ses multiples options, comme par exemple:

Code : Tout sélectionner

       -u, --update
              This forces rsync to skip any files which exist on the destination and have a modified time that is newer  than  the
              source  file.   (If  an  existing  destination  file  has a modification time equal to the source file’s, it will be
              updated if the sizes are different.)
Je vois bien en quoi l'option -u peut être utile pour faire de la synchronisation bidirectionnelle, mais je ne vois pas comment je pourrais récupérer seulement les fichiers modifiés depuis 24h avec cette option.
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Perso j'utilise tar pour les sauvegarde incrémentielles.

Pour sauvegarder

Code : Tout sélectionner

SOURCE=/media/data/
TAR=fichier-`date +"%Y-%d-%m-%H-%M-%S"`.tar

tar -v --create --file=$TAR --listed-incremental=fichier.list $SOURCE
A chaque fois qu'on relance cette ligne, une nouvelle archive est créée à la date de l'execution et comporte uniquement les changements. Le fichier fichier.list est mis à jour, et permet de détecter les différences avec la dernière exécution.

Pour restaurer :

Code : Tout sélectionner

tar --extract --listed-incremental=/dev/null --file fichier-1.tar
tar --extract --listed-incremental=/dev/null --file fichier2.tar
tar --extract --listed-incremental=/dev/null --file fichier3.tar
...
Jusqu'à fichierX ayant la date à laquelle on veut restaurer.
Il faut bien restaurer depuis le premier tar, les fichiers suivant applicant les modifications de la sauvegarde précédente à chaque fois (c'est d'ailleurs bien le but de la manœuvre)
En cas de nombreuses archives, il doit pas être trop compliqué de faire un script bash pour la restauration.
Avatar de l’utilisateur
BelZéButh
Contributeur
Contributeur
Messages : 454
Inscription : 22 avr. 2016, 08:39
Localisation : Ch'timi
Status : Hors-ligne

Ces options répondront à tes attentes.

Code : Tout sélectionner

~ # rsync -avin --stats --del --link-dest=/.../sauvegarde_du_dimanche/ --exclude-from=/root/exclureR / /.../sauvegarde_du_jour/$(date +'%A_%d_%B_%Y_')<..h.._+_intitulé>
rsync a écrit :--compare-dest=RÉP

Cette option ordonne à rsync d'utiliser REP sur la machine de destination comme un répertoire supplémentaire avec lequel il faut comparer les fichiers de destination (pour les fichiers qui ne sont pas présents dans le répertoire de destination).
Si un fichier est trouvé dans RÉP et qu'il est identique au fichier émis, alors le fichier ne sera PAS transmis vers le répertoire de destination.
Cela est utile pour créer une sauvegarde incrémentale, qui ne contient que les fichiers modifiés par rapport à la sauvegarde précédente.
Depuis la version 2.6.4, il est possible de spécifier plusieurs répertoires --compare-dest, rsync recherchera alors un fichier identique dans l'ordre de la liste spécifiée.
Si un fichier identique est trouvé mais que ses attributs diffèrent, alors une copie locale est faite et les attributs sont mis à jour.
Lorsqu'aucun fichier identique n'est trouvé, un des fichiers des différents RÉP est utilisé comme base pour accélérer le transfert.
Si REP est un chemin relatif, il est relatif au répertoire de destination.
Voir aussi --copy-dest et --link-dest.
rsync a écrit :--copy-dest=REP

Cette option a le même comportement que --compare-dest, mais rsync copiera également les fichiers inchangés trouvés dans REP vers le répertoire de destination en utilisant la copie locale.
Ceci est utile pour des transferts vers un nouveau répertoire en laissant l'ancien intact, procédant à un remplacement-éclair de l'ancien par le nouveau une fois le transfert terminé.
Il est possible de spécifier plusieurs répertoires --compare-dest, rsync recherchera alors un fichier identique dans l'ordre de la liste spécifiée.
Si aucun fichier identique n'est trouvé, un des fichiers des différents RÉP est utilisé comme base pour accélérer le transfert.
Si RÉP est un chemin relatif, il est relatif au répertoire de destination.
Voir aussi --compare-dest et --link-dest.
rsync a écrit :--link-dest=RÉP

Cette option a le même comportement que --copy-dest, mais, à la place d'une copie, un lien matériel est effectué entre les fichiers inchangés.
Les fichiers doivent être identiques même au niveau des attributs (par ex. permissions, droits...) afin que les fichiers puissent être liés. Un exemple :

Code : Tout sélectionner

rsync -av --link-dest=$PWD/rép_précédent hôte:rép_src/ nouv_rép/
Depuis la version 2.6.4, il est possible de spécifier plusieurs répertoires --compare-dest, rsync recherchera alors un fichier identique dans l'ordre de la liste spécifiée.
Si un fichier identique est trouvé mais que ses attributs diffèrent alors une copie locale est faite et les attributs sont mis à jour.
Lorsqu'aucun fichier identique n'est trouvé, un des fichiers des différents RÉP est utilisé comme base pour accélérer le transfert.
Si RÉP est un chemin relatif, il est relatif au répertoire de destination.
Voir aussi --compare-dest et --copy-dest.

Notez qu'un bogue était présent dans les versions de rsync antérieures à 2.6.1, ce qui pouvait empêcher --link-dest de fonctionner correctement pour les utilisateurs non-root lorsque -o était spécifiée (ou implicitement activée par -a). Vous pouvez contourner le problème en évitant d'utiliser -o lors d'envois vers un vieux rsync.
La première loi du libre et de tout hacker, au sens noble, le partage de la connaissance !
Site de réinformation ... http://www.panamza.com
Avatar de l’utilisateur
Arnaud
Membre
Membre
Messages : 162
Inscription : 23 avr. 2016, 14:31
Localisation : Allemagne
Status : Hors-ligne

BelZéButh a écrit :Ces options répondront à tes attentes.
Merci, je viens de tester, je n'ai pas eu le temps de m'y pencher avant, et effectivement c'est un moyen simple de résoudre le problème.
Avatar de l’utilisateur
kitmale
Membre actif
Membre actif
Messages : 733
Inscription : 25 avr. 2016, 09:39
Status : Hors-ligne

J'espère que tu places ta commande ou ton script dans crontab

http://broexperts.com/how-to-backup-fil ... cron-jobs/
http://player.lg1043.com/CHLGFM

"Do not fear to be eccentric in opinion, for every opinion now accepted was once eccentric. Bertrand Russell
Répondre