Linux'ta bdiff (1) var mı?


9

bdiff(1)Solaris'te diff(1)RAM boyutunuzdan daha büyük boyutlu dosyalara izin veren bir komut vardır ( http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html ).

Linux'ta böyle bir şey var mı? Google'ı denedim ama bdiffUbuntu'da hangi paketin olduğunu bulamıyorum .



Yanıtlar:


13

bdiff'in Linux'ta mevcut olduğu görülmektedir (en azından Heirloom Toolchest'in bir parçası olarak ).

diff

Ben muhtemelen sadece bu anahtar ile düzenli eski fark kullanmak istiyorsunuz:

diff --speed-large-files bigfileA bigfileB

Neden çalışmıyor?

@EvanTeitelman'ın açıklamasına bakın, --speed-large-filesdosyaların belleğe nasıl yükleneceğini etkilemez.

Aşağıdaki komutu kullanarak çalışmadığı gösterilebilir / onaylanabilir:

fallocate -l 10G testa; fallocate -l 10G testb && \
        diff --speed-large-files -a testa testb

bsdiff

Sert bu onaylamak için ama denilen bir araç buldum bsdiffkaynaklanmaktadır bdiff. Bu aracın Ubuntu'da olduğunu doğruladım apt-get install bsdiff.

Neden işe yarayabilir?

Yorumlarda @EvanTeitelman tekrar teşekkürler, bsdiffyukarıdaki ikili dosyalar için farklı bir araçtır. bsdiffikili bir fark aracıdır ve büyük dosyalarla başa çıkabilir. Ne kadar büyük olduğu belli değil. Kullanımının tartışıldığı bir ileti dizisine ilişkin aşağıdaki bağlantılara bakın.

rdiff

Ben de bunu yapmak için rdiff kullanabilirsiniz düşünüyorum . Rdiff çok büyük dosyalarla başa çıkabilir.

  1. Bir dosyanın imzasını oluşturun:

    rdiff signature A sigs.txt
    
  2. Delta oluşturmak için oluşturulan imza dosyası sigs.txt ve diğer büyük B dosyasını kullanın:

    rdiff delta sigs.txt B deltaAB.txt
    
  3. Delta, yalnızca A ve deltaAB.txt delta dosyanız olduğunda B dosyasını yeniden oluşturmanız için gereken tüm bilgileri içerir.

    B'yi yeniden oluşturmak için şunu çalıştırın:

    rdiff patch A deltaAB.txt B
    

Neden çalışıyor?

Bu blog yazısı başlıklı buldum: Daha iyi bir fark ya da GNU fark Ne Zaman Yapmak için Ne Yapılır Bellek yetersiz ("diff: bellek tükenmiş") , hangi 4.5GB dosyaları bir rdiff sadece ~ 66MB RAM tüketir.

lfhex

lfhex , dosyaları hex, octal, binary veya ascii metinde görüntülemek ve düzenlemek için kullanılan bir uygulamadır. Lfhex'in ana gücü, sistem belleğinden çok daha büyük dosyalarla çalışabilmesidir. Ancak bir GUI aracıdır.

ekran görüntüsü

                  ss of lfhex]! [ss of lfhex]

Referanslar


Bu her zaman belgelenmese de GNU diff, -Heşanlamlı olarak kullanmanıza izin verir --speed-large-files.

2
bsdiffbir ikili fark aracıdır, büyük dosya fark aracı değildir.

3
Ne yazık ki, --speed-large-filesbayrak GNU farkının dosyaları belleğe yükleme şeklini etkilemiyor gibi görünüyor . Bunu fallocate -l 10G testa; fallocate -l 10G testb && diff --speed-large-files -a testa testbonaylamak için koşmayı deneyin . (Veya kaynak koduna bir göz atın.)

2
Ben inşa başardı bdiffdeğiştirdikten sonra Heirloom ToolChest dan /sbin/shtarafından /bin/shmakefiles. Şimdi onu yerine getirmeye çalıştığımda anladım bdiff: Can not execute '/usr/5bin/diff'. Maalesef, hiçbir şey yüklemek istemiyorum /usr/5bin/. Bu uygun bir çözüm değildir. Burada bahsi geçen diğer seçenekler benim için çalışmıyor çünkü farklılıkları metin olarak görmek istiyorum.
Christian Pietsch

1
PS: Şaşırtıcı bir şekilde, lfhex -c file1 file2her iki bölme için Görünüm -> Düzenleme tabanı -> ASCII ayarlarını yaptıktan sonra benim için iyi çalışıyor.
Christian Pietsch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.