Mam dwa obrazy partycji (A i B) i chcę ich użyć do utworzenia poprawki, którą mogę zastosować na A na innym komputerze, aby uzyskać nowy obraz B bez zalewania sieci. Mam następujące wymagania:
- działa w systemie Linux
- może tworzyć różnice
- może używać diffs do łatania plików
- obsługuje pliki binarne
- może obsługiwać duże pliki (powinno działać kilkaset GB)
- nie wymaga interakcji użytkownika (tylko aplikacja konsoli)
- idealnie, powinienem być w stanie czytać z / zapisywać do potoków (tak, że mogę do niego pobierać z pliku skompresowanego gzip i zapisywać do jednego)
Czy coś takiego istnieje?
rdiff
byłaby cenna do wykorzystania w przyszłości. Przykład: powiedzmy Miejmyfile1
afile2
są dwa podobne pliki 1GB każdy. 1) Jak obliczyć rdiff? 2) Jak zapisać tenpatch
plik rdiff w pliku? 3) Jak zastosować tenpatch
plikfile1
do odzyskaniafile2
?Odpowiedzi:
Prawdopodobnie powinieneś rzucić okiem na narzędzia związane z rsync: rdiff i rdiff-backup .
rdiff
Komenda pozwala produkować plik poprawki i stosować go do innego pliku.rdiff-backup
Komenda używa tego podejścia do czynienia z całych katalogów, ale zgaduję, że pracujesz z obrazów dysków pojedynczych plików, takrdiff
będzie z nich korzystać.źródło
rdiff signature oldfile | rdiff delta - newfile deltafile
file1
ifile2
są dwa podobne pliki 1GB każdy. 1) Jak obliczyć różnicę? 2) Jak zapisać ten plik różnicowy w pliku łatki? 3) Jak zastosować ten plik łatkifile1
do odzyskaniafile2
?xdelta może zrobić wszystko, co chcesz. Ostre ostrzeżenie, jeśli twoje obrazy nie są bardzo podobne, możesz skończyć z bardzo dużą łatką, ponieważ xdelta wykorzystuje połowę zdefiniowanego bufora pamięci do znajdowania różnic. Więcej informacji jest dostępnych na stronie wiki TuningMemoryBudget . Zwiększenie rozmiaru bufora może nieco pomóc.
bsdiff to kolejna opcja, ale jest bardzo wymagająca pamięci RAM i całkowicie nieodpowiednia dla jakiegokolwiek rozmiaru obrazu dysku.
źródło
Odpowiedź kanoniczna
Jeśli chodzi o rdiff post, librsync 2.0.1 to dobra lektura dla wyjaśnienia funkcji komend, więc wspomniałem o tym poniżej, aby zachować treść tej odpowiedzi, jeśli nic więcej.
Ważne jest, aby postarać się dobrze zrozumieć trzy etapy aktualizacji pliku rdiff : podpis , delta i łatka, o czym mówiono na stronie podręcznika rdiff . Znalazłem również
rdiff
przykładowy skrypt polecenia na GitHub, który jest pomocny, do którego odwołam się i zacytuję.Szybkie polecenia (na
rdiff-example.sh
)źródło
JDIFF to program, który wyświetla różnice między dwoma plikami (binarnymi).
źródło