Solaris에는 RAM 크기보다 큰 파일을 bdiff(1)
읽을 수 있는 명령이 있습니다 (diff(1)
문서).
Linux에도 비슷한 것이 있나요? 인터넷 검색을 시도했지만 bdiff
Ubuntu에서 어떤 패키지를 찾을 수 없습니다.
답변1
bdiff를 사용할 수 있는 것 같습니다.Linux에서는(적어도가보 도구 상자).
차이점
그러나 아마도 이 스위치에는 일반적인 이전 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
BSDIF
이를 확인하기는 어렵지만 이라는 도구를 찾았습니다.bsdiff
bdiff
이 도구는 Ubuntu에 있음을 확인 했습니다 apt-get install bsdiff
.
왜 작동할까요?
의견에 있는 @EvanTeitelman에게 다시 한 번 감사드립니다. bsdiff
위는 바이너리에 대한 diff 도구입니다. bsdiff
대용량 파일을 처리할 수 있는 바이너리 비교 도구입니다. 정확히 얼마나 큰지는 불분명하다. 아래 링크에서 해당 사용법을 논의하는 스레드를 참조하세요.
차이점
활용하셔도 좋을 것 같아요차이점이것도 가능합니다. Rdiff는 매우 큰 파일을 처리할 수 있습니다.
파일에 대한 서명을 만듭니다.
rdiff signature A sigs.txt
생성된 서명 파일 sigs.txt와 또 다른 대용량 파일 B를 사용하여 델타를 만듭니다.
rdiff delta sigs.txt B deltaAB.txt
A와 델타 파일 deltaAB.txt만 있는 경우 Delta에는 파일 B를 다시 만드는 데 필요한 모든 정보가 포함됩니다.
B를 다시 생성하려면 다음을 실행합니다.
rdiff patch A deltaAB.txt B
왜 작동합니까?
다음과 같은 제목의 블로그 게시물을 찾았습니다.더 나은 diff 또는 GNU diff에 메모리가 부족할 때 수행할 작업("diff: out of memory"), 4.5GB 파일의 rdiff는 약 66MB의 RAM만 소비한다고 보고합니다.
16진수
16진수16진수, 8진수, 2진수 또는 ASCII 텍스트 파일을 보고 편집하기 위한 응용 프로그램입니다. lfhex의 가장 큰 장점은 시스템 메모리보다 훨씬 큰 파일을 처리할 수 있다는 것입니다. 그러나 이는 GUI 도구입니다.
스크린샷