Il existe une bdiff(1)
commande dans Solaris, qui vous permet de diff(1)
créer des fichiers dont la taille est supérieure à la taille de votre RAM ( http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html ).
Y a-t-il quelque chose comme ça sous Linux? J'ai essayé de googler mais je ne trouve pas quel paquet a bdiff
dans Ubuntu.
Réponses:
bdiff semble être disponible sur Linux (au moins dans le cadre de Heirloom Toolchest ).
diff
J'utiliserais probablement juste un vieux diff régulier avec ce commutateur cependant:
Pourquoi ça ne marche pas?
Voir le commentaire de @EvanTeitelman,
--speed-large-files
n'affecte pas la façon dont les fichiers sont chargés en mémoire.Peut être démontré / confirmé pour ne pas fonctionner en utilisant la commande suivante:
bsdiff
Difficile à confirmer, mais j'ai trouvé un outil appelé
bsdiff
qui dérive debdiff
. J'ai confirmé que cet outil est dans Ubuntu, simplementapt-get install bsdiff
.Pourquoi ça pourrait marcher?
Encore merci à @EvanTeitelman dans les commentaires, ce qui
bsdiff
précède est un outil de diff pour les fichiers binaires.bsdiff
est un outil de comparaison binaire et peut traiter des fichiers volumineux. On ne sait pas exactement quelle taille. Voir les liens suivants vers un fil qui explique son utilisation.rdiff
Je pense que vous pouvez également utiliser rdiff pour le faire également. Rdiff est capable de gérer de très gros fichiers.
Créez une signature d'un fichier:
Utilisez le fichier de signature généré sigs.txt et l'autre gros fichier B pour créer le delta:
Delta contient toutes les informations dont vous avez besoin pour recréer le fichier B lorsque vous avez juste A et le fichier delta deltaAB.txt.
Pour recréer B, exécutez:
Pourquoi ça marche?
J'ai trouvé ce billet de blog intitulé: Un meilleur diff ou ce qu'il faut faire lorsque diff diff GNU manque de mémoire ("diff: mémoire épuisée") , qui signale qu'un rdiff de fichiers de 4,5 Go ne consomme que ~ 66 Mo de RAM.
lfhex
lfhex est une application pour visualiser et éditer des fichiers en texte hexadécimal, octal, binaire ou ascii. La principale force de lfhex est sa capacité à travailler avec des fichiers beaucoup plus volumineux que la mémoire système. C'est un outil GUI cependant.
capture d'écran
Références
la source
-H
comme synonyme de--speed-large-files
.bsdiff
est un outil de comparaison binaire, pas un outil de comparaison de fichiers volumineux.--speed-large-files
indicateur n'affecte pas la manière dont GNU diff charge les fichiers en mémoire. Essayez de l'exécuterfallocate -l 10G testa; fallocate -l 10G testb && diff --speed-large-files -a testa testb
pour le confirmer. (Ou jetez un œil au code source.)bdiff
partir du Heirloom Toolchest après avoir remplacé/sbin/sh
par/bin/sh
dans les Makefile. Maintenant, quand j'essaie de l'exécuter en place, je comprendsbdiff: Can not execute '/usr/5bin/diff'
. Désolé, je ne veux rien installer sur/usr/5bin/
. Ce n'est pas une solution viable. Les autres options mentionnées ici ne fonctionnent pas pour moi parce que je veux observer les différences sous forme de texte.lfhex -c file1 file2
fonctionne bien pour moi après avoir défini Affichage -> Base d'édition -> ASCII pour les deux volets.