W bdiff(1)
systemie Solaris dostępna jest komenda, która pozwala na tworzenie diff(1)
plików o rozmiarze większym niż rozmiar pamięci RAM ( http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html ).
Czy jest coś takiego w Linuksie? Próbowałem google, ale nie wiem, który pakiet ma bdiff
w Ubuntu.
Odpowiedzi:
bdiff wydaje się być dostępny w systemie Linux (przynajmniej jako część Heirloom Toolchest ).
różn
Prawdopodobnie użyłbym jednak zwykłego starego diff z tym przełącznikiem:
Dlaczego to nie działa?
Zobacz komentarz @EvanTeitelman,
--speed-large-files
nie wpływa na sposób ładowania plików do pamięci.Można wykazać / potwierdzić, że nie działa, używając następującego polecenia:
bsdiff
Trudno to potwierdzić, ale znalazłem narzędzie o nazwie,
bsdiff
które pochodzibdiff
. Potwierdziłem, że to narzędzie jest w Ubuntu, po prostuapt-get install bsdiff
.Dlaczego to może działać?
Jeszcze raz dziękuję @EvanTeitelman w komentarzach,
bsdiff
powyższe jest narzędziem do różnicowania plików binarnych.bsdiff
to binarne narzędzie do porównywania i może obsługiwać duże pliki. Nie jest jasne, jak duży. Zobacz poniższe linki do wątku, który omawia jego użycie.rdiff
Myślę, że możesz również użyć rdiff, aby to zrobić. Rdiff radzi sobie z bardzo dużymi plikami.
Utwórz podpis jednego pliku:
Użyj wygenerowanego pliku podpisu sigs.txt i drugiego dużego pliku B, aby utworzyć różnicę:
Delta zawiera wszystkie informacje potrzebne do odtworzenia pliku B, gdy masz tylko A i plik delta deltaAB.txt.
Aby odtworzyć B, uruchom:
Dlaczego to działa?
Znalazłem ten post na blogu zatytułowany: Lepsza pamięć lub co robić, gdy GNU diff zabraknie pamięci („diff: pamięć wyczerpana”) , która donosi, że pliki o pojemności 4,5 GB zużyły tylko ~ 66 MB pamięci RAM.
lfhex
lfhex to aplikacja do przeglądania i edycji plików w tekście szesnastkowym, ósemkowym, binarnym lub ascii. Główną zaletą lfhex jest możliwość pracy z plikami znacznie większymi niż pamięć systemowa. Jest to jednak narzędzie GUI.
zrzut ekranu
Bibliografia
źródło
-H
jako synonimu--speed-large-files
.bsdiff
to binarne narzędzie do porównywania, a nie narzędzie do porównywania dużych plików.--speed-large-files
flaga nie wpływa na sposób, w jaki GNU diff ładuje pliki do pamięci. Spróbuj uruchomić,fallocate -l 10G testa; fallocate -l 10G testb && diff --speed-large-files -a testa testb
aby to potwierdzić. (Lub spójrz na kod źródłowy.)bdiff
z Heirloom Toolchest po zastąpieniu/sbin/sh
go/bin/sh
w plikach makefiles. Teraz, gdy próbuję wykonać to w miejscu, rozumiembdiff: Can not execute '/usr/5bin/diff'
. Przepraszam, nie chcę niczego instalować/usr/5bin/
. To nie jest realne rozwiązanie. Inne wymienione tutaj opcje nie działają dla mnie, ponieważ chcę sprawdzić różnice jako tekst.lfhex -c file1 file2
działa dobrze dla mnie po ustawieniu Widok -> Podstawa edycji -> ASCII dla obu paneli.