Comment faire une sauvegarde différentielle sous Linux?

6

Je dois écrire un script pour prendre une sauvegarde différentielle (d'un répertoire). Sauvegarde différentielle:

Une sauvegarde différentielle ne sauvegarde que les fichiers qui ont été modifiés depuis le dernier retour complet. Par exemple, supposons que vous effectuiez une sauvegarde complète le dimanche. Le lundi, vous ne sauvegardez que les fichiers modifiés depuis dimanche, le mardi vous ne sauvegardez que les fichiers modifiés depuis dimanche, et ainsi de suite jusqu'à la prochaine sauvegarde complète.

Supposons par exemple:

Lundi - Sauvegarde complète et sauvegarde du fichier.

Jeudi - Vous souhaitez effectuer une sauvegarde différentielle en utilisant le même ensemble de fichiers. Tous les fichiers qui ont été modifiés depuis la sauvegarde complète sont sauvegardés dans la sauvegarde différentielle.

À partir de maintenant, si j’ai besoin d’utiliser le script, veuillez donc suggérer de poursuivre ou d’écrire le script pour l’automatiser.

Omkant
la source

Réponses:

7

Pas tout à fait ce que vous avez demandé, mais un effet très similaire (vous ne payez de stockage que pour les fichiers réellement modifiés):

Utilisation de rsync, création de liens physiques pour les fichiers non modifiés.

Le gros avantage est que chaque "instantané" est une sauvegarde à part entière, c'est-à-dire que lors de la restauration, vous ne devez restaurer que cet instantané (au lieu de récupérer une base et ses incréments).

Une bonne documentation sur cette approche est disponible sur www.mikerubel.org/computers/rsync_snapshots/

DevSolar
la source
Cela semble être une option très favorable, jusqu'à ce que vous examiniez les mises en garde de rsync. Il ne semble pas que les maîtres l'aient même maîtrisé. (Re: writeup de mikerubel contient de nombreux avertissements, la version conflictions de traitement et les résultats incertains)
Summers Alex
@AlexSummers: Vous ne devriez pas juger de la pertinence d'une solution en 2017 dans une dernière modification modifiée en 2004. J'ai lié à cette description car c'était celle que je pouvais localiser de manière ad hoc lorsque j'ai écrit la réponse il y a toutes ces années. .
DevSolar
Oh bien voilà :) Je ne l’ai sûrement pas fait. J'aurais dû regarder la date, quelle nécro je suis. Mes excuses.
Alex Summers
1

man dump

 -level#
              The dump level (any integer). A level 0, full backup, guarantees
              the  entire  file  system  is copied (but see also the -h option
              below). A level number above 0, incremental backup,  tells  dump
              to copy all files new or modified since the last dump of a lower
              level. The default level is 0. Historically only levels 0  to  9
              were  usable  in  dump,  this  version is able to understand any
              integer as a dump level.

Il est utile de lire sur le schéma de sauvegarde incrémentielle "Tour de Hanoi" et de comprendre pourquoi et comment il est utilisé.

Voir aussi http://surf.ml.seikei.ac.jp/~nakano/dump-restore/dump-restore-mini-HOWTO.fr.html#ss3.3

Et http://en.wikipedia.org/wiki/Incremental_backup qui dit

Un exemple Unix serait:

rsync -e ssh -va --link-dest=$dst/hourly.1 $remoteserver:$remotepath $dst/hourly.0

L'utilisation de l' --link-destoption de rsync est ce qui fait de cette commande un exemple de sauvegarde incrémentielle.

RedGrittyBrick
la source
Est-ce standard sur les systèmes linux ou faut-il l’installer? Avec quels systèmes de fichiers cela fonctionne-t-il?
Journeyman Geek
Sous AIX au moins, dumpfait référence à quelque chose de complètement différent ...
DevSolar le
@JourneymanGeek - C'était sur mon système Linux Centos 5.7. Cela concerne tous les systèmes Unix dont je me souviens. Je suppose que cela concerne la plupart des systèmes Linux orientés ordinateurs de bureau et serveurs, mais probablement pas sur les distributions Linux destinées aux appliances ou aux petits périphériques (par exemple, Android, Machines à laver, routeurs). Ma page de manuel CentOS mentionne ext2 / ext3 (ext3 est ce que 5.7 utilise par défaut).
RedGrittyBrick le
1
Vous pouvez également consulter dump.sourceforge.net/isdumpdeprecated.html pour connaître les avantages et les inconvénients.
DevSolar le
1

Duplicity sauvegarde les répertoires [en haut] en produisant des volumes au format tar chiffrés et en les téléchargeant sur un serveur de fichiers local ou distant. Du fait que duplicity utilise librsync, les archives incrémentielles utilisent peu d'espace et n'enregistrent que les parties des fichiers qui ont été modifiées depuis la dernière sauvegarde. Du fait que duplicité utilise GnuPG pour chiffrer et / ou signer ces archives, celles-ci seront protégées de l'espionnage et / ou de la modification par le serveur.

http://duplicity.nongnu.org/

Duplicity implémente un schéma de sauvegarde traditionnel, dans lequel l'archive initiale contient toutes les informations (sauvegarde complète) et, à l'avenir, seules les informations modifiées sont ajoutées. Cependant, il présente certains avantages par rapport à d’autres solutions similaires:

  • Facile à utiliser: bien que duplicity soit un utilitaire de ligne de commande, la sémantique est relative. Pour prendre un exemple simple, cette commande sauvegarde le répertoire / usr sur l’hôte remost host.net via scp:duplicity /usr scp://host.net/target_dir

  • Archives cryptées et signées: Les archives générées par duplicité peuvent être cryptées et signées à l'aide de GnuPG, le standard de la cryptologie logicielle libre. L'emplacement distant ne pourra pas en déduire beaucoup sur les sauvegardes autres que leur taille et le moment de leur téléchargement. De plus, si les archives sont modifiées du côté distant, cela sera détecté lors de la restauration.

  • Economie de bande passante et d'espace: Duplicity utilise l'algorithme rsync afin que seules les parties modifiées des fichiers soient envoyées à l'archive lors d'une sauvegarde incrémentielle. Par exemple, si un fichier journal long augmente de quelques lignes de texte, un petit diff sera envoyé à et archivé. D'autres programmes de sauvegarde peuvent enregistrer une copie complète du fichier.

  • Format de fichier standard: Bien que les données d'archives soient cryptées, elles se trouvent à l'intérieur d'archives au format GNU-tar standard. Une sauvegarde complète contient des archives normales, et les sauvegardes incrémentielles sont des archives tar de nouveaux fichiers et les deltas des sauvegardes précédentes. Les deltas sont dans le format produit par l'utilitaire de ligne de commande librsync, rdiff. Bien que vous ne devriez jamais avoir à regarder une archive de duplicité manuellement, si nécessaire, elles peuvent être produites et traitées à l'aide de GnuPG, rdiff et tar.

  • Choix du protocole distant: Duplicity n'impose pas beaucoup de demandes à son serveur d'archives. Tant que les fichiers peuvent être sauvegardés, lus, répertoriés et supprimés d’un emplacement, cet emplacement peut être utilisé comme système de duplicité. En plus d’augmenter le choix offert à l’utilisateur, il peut renforcer la sécurité d’un serveur, car les clients n’exigent qu’un accès minimal.

Actuellement, le stockage de fichiers local, scp / ssh, ftp, rsync, HSI, WebDAV, Tahoe-LAFS et Amazon S3 sont pris en charge, et les autres ne devraient pas être difficiles à ajouter.

pzkpfw
la source
Bien sûr, il supporte la sauvegarde incrémentielle mais pas (encore) différentielle!
Yves Martin
Mon erreur :) Je laisserai ma réponse si personne ne se préoccupe pas de la méthode différentielle / incrémentielle et cherche simplement une solution de sauvegarde opérationnelle ne nécessitant pas de sauvegardes complètes.
pzkpfw
D'accord ... mais pour mes sauvegardes personnelles, je préfère vraiment différentiel. Il ne me reste donc plus qu'à l'implémenter en duplicité ...
Yves Martin
0

Il n'est pas nécessaire d'écrire un script lorsqu'il existe des outils qui font exactement cela.

SVN, GIT

Vous pouvez configurer svn et valider votre répertoire. Chaque fois que vous vous engagez, vous enregistrez la différence. Enregistrer = Sauvegarder dans ce cas.

Vous pouvez remonter dans le temps et restaurer des instantanés des commits précédents.

Cette solution est longuement discutée ici

Communauté
la source
@ChrisF Il a demandé une sauvegarde différentielle, SVN est un outil juste pour ça, n'est-ce pas?
Vous n'avez pas expliqué cela dans votre réponse - vous le faites maintenant, donc c'est une meilleure réponse.
ChrisF
@ChrisF désolé tu as raison, parfois je ne suis pas très clair dans mes pensées :)
2
Vous êtes conscient des exigences de stockage hideuses de cette "solution"? " Si un marteau est votre seul outil, chaque problème commence à ressembler à un clou ... "
DevSolar le
1
Bien que l’utilisation directe de git puisse ne pas être une bonne idée, son principe sous-jacent peut très bien être utilisé à cette fin. Voir bup - Système de sauvegarde de fichiers hautement efficace basé sur le format git packfile .
Petr Pudlák