Não sei se entendi o que você está tentando alcançar. Eu acho que o cenário é como:
- Existe um arquivo de texto grande
A
. - Existe um arquivo de texto grande
B
, que compartilha a maioria das linhas comA
, mas há diferenças. - Você deseja fazer backup de todas as informações, mas não deseja copiar / transmitir / armazenar os dois arquivos como estão. Em vez disso, sua idéia é armazenar
A
e as informações mínimas suficientes para reproduzirB
deA
.
Se sim, então diff
e patch
são as ferramentas que você precisa.
O procedimento básico é bastante simples. Supondo que você tenha A
e B
(e nenhum arquivo chamado A2B.patch
porque será sobrescrito) em seu diretório atual, execute:
diff A B > A2B.patch
Então, se você tiver A
e A2B.patch
(e não B
), poderá recriar B
com:
patch -o B A A2B.patch
Nota: " A2B.patch
" é apenas um nome arbitrário que eu escolhi; pode ser " foo
".
As ferramentas funcionam com linhas. Quanto menos linhas comuns você tiver, menos eficaz será essa solução.
Se eu interpretar seu script corretamente, seu B
é a saída de sqlite3-to-mysql.py A
. Eu não sei o que o sqlite3-to-mysql.py
faz exatamente, nem sou profundo o suficiente no SQL para adivinhar de forma confiável. Se mudar a maioria das linhas de A
para criar B
, minha solução será inútil. Quero dizer: ainda deve funcionar, mas patch
será maior que B
, por isso vai perder o ponto.
Talvez seja só executar diff A B > patch
uma vez e verificar se patch
é pequeno o suficiente para o seu propósito.
Estude man 1 patch
e man 1 diff
para saber mais. Eu também estava consultando este site enquanto escrevia minha resposta.