J'ai deux images de partition (A et B) et je veux les utiliser pour créer un patch que je peux appliquer sur A sur un autre ordinateur afin d'obtenir la nouvelle image B sans inonder le réseau. J'ai les exigences suivantes:
- fonctionne sous Linux
- peut créer des diffs
- peut utiliser des différences pour patcher des fichiers
- peut gérer des fichiers binaires
- peut gérer des fichiers volumineux (quelques centaines de Go devraient fonctionner)
- aucune interaction utilisateur requise (juste une application console)
- idéalement, devrait être capable de lire / écrire dans des tuyaux (pour que je puisse y accéder à partir d'un fichier compressé avec gzip et y écrire)
Existe-t-il quelque chose comme ça?
rdiff
serait utile pour référence future. Exemple: Disonsfile1
etfile2
sont deux fichiers similaires de 1 Go chacun. 1) Comment calculer le rdiff? 2) Comment enregistrer ce rdiff dans unpatch
fichier? 3) Comment appliquer cepatch
fichierfile1
pour récupérerfile2
?Réponses:
Vous devriez probablement jeter un œil aux outils liés à rsync: rdiff et rdiff-backup . La
rdiff
commande vous permet de produire un fichier patch et de l'appliquer à un autre fichier.La
rdiff-backup
commande utilise cette approche pour traiter des répertoires entiers, mais je suppose que vous travaillez avec des images de disque à fichier unique, cerdiff
sera donc celle à utiliser.la source
rdiff signature oldfile | rdiff delta - newfile deltafile
file1
etfile2
sont deux fichiers similaires de 1 Go chacun. 1) Comment calculer le diff? 2) Comment enregistrer ce diff dans un fichier patch? 3) Comment appliquer ce fichier patchfile1
pour récupérerfile2
?xdelta peut faire tout ce que vous voulez. Bon avertissement cependant, si vos images ne sont pas très similaires, vous pouvez vous retrouver avec un très gros patch, car xdelta utilise la moitié de la mémoire tampon définie pour trouver les différences. Plus d'informations sont disponibles sur la page wiki TuningMemoryBudget . L'augmentation de la taille du tampon peut aider un peu.
bsdiff est une autre option, mais il est très gourmand en RAM et totalement inapproprié pour tout ce qui a la taille d'une image disque.
la source
Réponse canonique
En ce qui concerne rdiff le message, librsync 2.0.1 est une bonne lecture pour la clarification des fonctionnalités de la commande, j'ai donc référencé cela ci-dessous pour conserver le contenu de cette réponse si rien d'autre.
Il est important d'essayer de bien comprendre les trois étapes de rdiff pour mettre à jour un fichier: signature , delta et patch, comme indiqué sur la page de manuel rdiff . J'ai également trouvé un
rdiff
exemple de script de commande sur GitHub qui est utile que je vais référencer et citer.Commandes rapides (par
rdiff-example.sh
)la source
JDIFF est un programme qui génère les différences entre deux fichiers (binaires).
la source