Sauvegardes incrémentielles des images ntfsclone

2

J'essaie de faire des sauvegardes incrémentielles compressées d'une partition Windows à l'aide de ntfsclone sous Linux. Actuellement, je crée des images ntfsclone complètes à l'aide de la commande suivante:

sudo ntfsclone -s -t -o - /dev/sda2 | xz -zc > new-backup.ntfsclone.xz

Ce que je voudrais faire est d'effectuer des sauvegardes incrémentielles en créant un fichier delta en utilisant la sauvegarde précédente et le flux de sortie ntfsclone plutôt que de créer une nouvelle image ntfsclone à chaque session de sauvegarde.

Je comprends que créer des différences de binaires n’est pas facile, et qu’il existe plusieurs outils (rdiff, xdelta, bsdiff, etc.) à cet effet; Cependant, ils exigent tous la présence des deux fichiers sources sur le disque et ne peuvent pas comparer les données directement à partir des flux de sortie.


En d'autres termes, existe-t-il des solutions pour les flux binaires qui font quelque chose comme la commande suivante?

diff -u <(xz -dc old-backup.ntfsclone.xz) \
<(sudo ntfsclone -s -t -o - /dev/sda2) \
| xz -zvc > new-backup.ntfsclone.delta.xz

Évidemment, la commande ci-dessus ne fonctionne pas, mais j'aimerais pouvoir décompresser l'ancienne image, la comparer à une représentation ntfsclone de la partition Windows et créer une image delta compressée à partir de la comparaison en une seule étape.


Quelques conditions sont:

  • Le processus doit utiliser ntfsclone
  • Les deltas doivent pouvoir être accédés directement sur le disque
  • De préférence, tout se passe en une seule étape

Il est également possible (et peut être préférable) de créer un fichier delta en restaurant l'image de ntfsclone et en créant un diff en le comparant directement /dev/sda2, ce qui créerait probablement un fichier de sortie plus petit, mais cela compliquerait le filtrage des disques non alloués. espace.

(Autrement dit, nous devrions mettre à zéro l'espace disque inutilisé ou faire quelque chose diff -u <(xz -dc old-backup.ntfsclone.xz | ntfsclone -r -t -o - -) <(sudo ntfsclone -t -o - /dev/sda2) | xz -zc > new-backup.img.delta.xzpour empêcher l'archivage de toutes les données de fichier supprimées. Beurk!)

N'importe quels preneurs?


NOTE: Un outil appelé ntfsddup par Wei Dong existe pour accomplir presque exactement cela, mais j'ai de la difficulté à faire en sorte que la moindre chose fonctionne. Le logiciel est très tôt et a besoin de BEAUCOUP de travail.


utilisateur339676
la source

Réponses:

2

J'ai utilisé avec succès un outil appelé bup (basé sur git) qui permet de stocker efficacement des fichiers binaires volumineux ne différant que légèrement. Cela fonctionne aussi très bien avec nfs, ce qui me convient car j'ai un serveur nfs avec beaucoup d'espace où je conserve des données:

par exemple, pour sauvegarder des images ntfs à partir de mon ordinateur portable (diaz)

export BUP_DIR=/mnt/t3/big1/diaz/ntfsbup
ntfsclone -s -o - /dev/sda2 | bup split -n sda2.img

restaurer (sur un autre lecteur):

bup join sda2.img | ntfsclone -r -O /dev/sdb9 -

ou une version précédente:

bup join sda2.img^ | ntfsclone -r -O /dev/sdb9 -

ou

bup join sda2.img~2 | ntfsclone -r -O /dev/sdb9 -
Gregor
la source
0

Il y a quelque temps, j'ai écrit un programme qui crée des deltas efficaces entre les images ntfsclone.

https://github.com/koljanowak/ntfscloneimgdelta

C'était particulièrement facile, car le format de fichier des images ntfsclone est assez simple. Il s’agit essentiellement d’une série d’octets indiquant soit "1: voici le prochain cluster ntfs", suivi d’un cluster ntfs, soit "0: le prochain cluster était inutilisé", suivi de rien. Mon fichier delta utilise exactement le même format de fichier, en ajoutant un troisième cas «2: le cluster suivant était identique dans les deux images», suivi de rien.

Usage: ntfscloneimgdelta delta OLDFILE [NEWFILE [DELTA]]
       ntfscloneimgdelta patch OLDFILE [DELTA [NEWFILE]]

OLDFILE et NEWFILE n'ont pas besoin d'être dans un ordre chronologique croissant, vous pouvez simplement les échanger pour créer des deltas inverses. Cela vous permet de toujours conserver la dernière sauvegarde sous forme de sauvegarde complète et de conserver les anciennes sauvegardes sous forme de deltas.

Omettre les noms de fichiers ou les remplacer par "-" utilise stdin ou stdout. De cette façon, vous pouvez créer un nouveau dump d’une partition et créer un delta inverse entre ce dump et le précédent dump en une seule fois.

Kolja Nowak
la source