2011-10-06 4 views
0

Je voudrais générer des différences pour effectuer des sauvegardes incrémentielles d'une base de données sql. L'utilisation de l'outil standard 'diff' d'unix génère des fichiers volumineux inutiles, car ils contiennent le texte intégral des lignes supprimées. J'ai seulement besoin de support pour pouvoir patcher dans une direction (pour générer le db dump actuel à partir de la sauvegarde complète et d'un patch incrémental).Fichier de diff unidirectionnel

Comment ferais-je cela? J'ai essayé jusqu'ici en utilisant diff -e et patch -e, mais cela ne semble pas fonctionner correctement, car le fichier résultant est corrompu (peut-être un problème avec l'outil 'ed' utilisé dans cygwin)

+1

Je ne comprends pas pourquoi vous n'avez pas besoin des lignes supprimées pour recréer le vidage complet. Si les lignes disparaissent, n'avez-vous pas besoin de les supprimer? – drysdam

+0

J'ai besoin de l'information que les lignes ont été supprimées, mais pas le contenu réel de ces lignes. Par exemple 1.txt: 1 \ n 2 \ n 3 \ n 4 2.txt: 1 \ n 3 \ n 4 \ n 5 Donner la diff 2d1 <2 4a4> 5 Stocker que le texte "2" a été supprimé est inutile, car je n'ai besoin que du fait que le numéro de ligne 2 (quel qu'il soit) a été supprimé. Le garder est nécessaire si je dois aller dans les deux directions (c'est-à-dire appliquer le diff à 2.txt pour finir avec 1.txt), mais pas si j'ai seulement besoin d'une direction – idle

Répondre

1

retour dans les vieux jours, avant Vim, il y avait un éditeur UNIX orienté ligne appelée « ed » ..

diff a une option intégrée dans (option -e), avec laquelle vous pouvez créer un script d'édition de la diff.

Vérifiez ici: et recherchez la section "Modifier le script"

http://en.wikipedia.org/wiki/Diff

http://docs.freebsd.org/info/diff/diff.info.ed_Scripts.html

est ici un exemple:

http://www.araxis.com/merge/topic_diff_report_editscript.html


une autre façon de faire ce est de créer un fichier patch (voir 'man patch')

+0

Je pense que c'est la meilleure option. Il semble que la version cygwin de ed pourrait avoir quelques problèmes qui sont la seule raison pour laquelle il n'a pas fonctionné correctement pour moi. – idle

+0

["Ed est l'éditeur de texte standard."] (Http://www.gnu.org/fun/jokes/ed-msg.html) – PLL

Questions connexes