क्या लिनक्स में bdiff (1) है?


9

नहीं है bdiff(1)सोलारिस में आदेश है, जो करने के लिए आप की अनुमति देने के diff(1)अपने रैम आकार (से भी बड़ा आकार के साथ फ़ाइलों http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html )।

क्या लिनक्स में ऐसा कुछ है? मैंने googling की कोशिश की, लेकिन मुझे पता नहीं है bdiffकि उबंटू में कौन सा पैकेज है ।



संभव डुप्लिकेट: unix.stackexchange.com/questions/2150/...
SLM

जवाबों:


13

bdiff लिनक्स पर उपलब्ध है (कम से कम Heirloom Toolchest के भाग के रूप में ) प्रतीत होता है

diff

मैं शायद बस इस स्विच के साथ नियमित रूप से पुराने अंतर का उपयोग करूंगा:

diff --speed-large-files bigfileA bigfileB

यह काम क्यों नहीं करता है?

@EvanTeitelman की टिप्पणी देखें, --speed-large-filesयह प्रभावित नहीं करता है कि फ़ाइलों को मेमोरी में कैसे लोड किया जाता है।

निम्न आदेश का उपयोग करके काम न करने की पुष्टि / पुष्टि की जा सकती है:

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

bsdiff

इसकी पुष्टि करना कठिन है, लेकिन मुझे एक उपकरण मिला, जिसे कहा जाता bsdiffहै bdiff। मैंने पुष्टि की है कि यह टूल उबंटू में है, बस apt-get install bsdiff

यह क्यों काम कर सकता है?

टिप्पणियों में फिर से @EvanTeitelman धन्यवाद, bsdiffऊपर द्विआधारी फ़ाइलों के लिए एक अलग उपकरण है। bsdiffएक द्विआधारी अंतर उपकरण है और बड़ी फ़ाइलों से निपट सकता है। यह अभी स्पष्ट नहीं है कि कितना बड़ा है। निम्नलिखित थ्रेड्स को देखें जो चर्चा करता है कि यह उपयोग है।

rdiff

मुझे लगता है कि आप भी ऐसा करने के लिए rdiff का उपयोग कर सकते हैं । Rdiff बहुत बड़ी फ़ाइलों से निपटने में सक्षम है।

  1. एक फ़ाइल का एक हस्ताक्षर बनाएँ:

    rdiff signature A sigs.txt
    
  2. डेल्टा बनाने के लिए उत्पन्न हस्ताक्षर फ़ाइल sigs.txt और दूसरी बड़ी फ़ाइल B का उपयोग करें:

    rdiff delta sigs.txt B deltaAB.txt
    
  3. डेल्टा में वह सारी जानकारी होती है जो आपको फ़ाइल B को फिर से बनाने की आवश्यकता होती है जब आपके पास सिर्फ A और डेल्टा फ़ाइल deltaAB.txt होती है।

    बी को फिर से बनाने के लिए, दौड़ें:

    rdiff patch A deltaAB.txt B
    

यह काम क्यों करता है?

मैंने इस ब्लॉग पोस्ट को शीर्षक दिया: एक बेहतर अंतर या क्या करें जब जीएनयू रन आउट ऑफ़ मेमोरी ("भिन्न: मेमोरी समाप्त हो गया") , जो रिपोर्ट करता है कि 4.5GB फ़ाइलों की एक rdiff केवल ~ 66MB RAM का उपभोग करती है।

lfhex

lfhex हेक्स, ऑक्टल, बाइनरी या एससीआई टेक्स्ट में फाइलों को देखने और संपादित करने के लिए एक एप्लिकेशन है। Lfhex की मुख्य ताकत यह सिस्टम मेमोरी की तुलना में बहुत बड़ी फ़ाइलों के साथ काम करने की क्षमता है। यह एक जीयूआई उपकरण है।

स्क्रीनशॉट

                  sf of lfhex]! [lfhex का ss

संदर्भ


यद्यपि यह हमेशा प्रलेखित नहीं होता है, GNU भिन्न आपको इसके -Hपर्याय के रूप में उपयोग करने की अनुमति देता है --speed-large-files

2
bsdiffएक द्विआधारी अंतर उपकरण है, न कि एक बड़ी फ़ाइल भिन्न उपकरण।

3
दुर्भाग्य से, ऐसा लगता है कि --speed-large-filesझंडा जिस तरीके से मेमोरी में फाइलों को लोड करता है, उसे प्रभावित नहीं करता है। fallocate -l 10G testa; fallocate -l 10G testb && diff --speed-large-files -a testa testbइसकी पुष्टि करने के लिए दौड़ने का प्रयास करें। (या स्रोत कोड पर एक नज़र रखना।)

2
मैं का निर्माण करने में कामयाब रहे bdiffप्रतिस्थापित करने के बाद विरासत Toolchest से /sbin/shद्वारा /bin/shmakefiles में। अब जब मैं इसे लागू करने की कोशिश करता हूं, तो मुझे मिल जाता है bdiff: Can not execute '/usr/5bin/diff'। क्षमा करें, मैं कुछ भी स्थापित नहीं करना चाहता /usr/5bin/। यह एक व्यवहार्य समाधान नहीं है। यहां वर्णित अन्य विकल्प मेरे लिए काम नहीं करते हैं क्योंकि मैं पाठ के रूप में मतभेदों को भांपना चाहता हूं।
क्रिश्चियन पिसेट

1
पुनश्च: हैरानी की बात है, lfhex -c file1 file2दोनों पैन के लिए दृश्य -> ​​संपादन आधार -> ASCII स्थापित करने के बाद मेरे लिए अच्छी तरह से काम करता है।
क्रिश्चियन पिसेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.