bdiff(1)Solaris에는 diff(1)RAM 크기보다 큰 파일 을 허용하는 명령 이 있습니다 ( http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html ).
리눅스에 그런 것이 있습니까? 인터넷 검색을 시도했지만 bdiff우분투에 어떤 패키지가 있는지 찾지 못했습니다 .
bdiff(1)Solaris에는 diff(1)RAM 크기보다 큰 파일 을 허용하는 명령 이 있습니다 ( http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html ).
리눅스에 그런 것이 있습니까? 인터넷 검색을 시도했지만 bdiff우분투에 어떤 패키지가 있는지 찾지 못했습니다 .
답변:
bdiff 는 Linux (적어도 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에서 파생 된 도구를 찾았습니다 bdiff. 이 도구가 우분투에 있다는 것을 확인했습니다 apt-get install bsdiff.
의견에 @EvanTeitelman에게도 감사드립니다. bsdiff위의 바이너리 파일 용 diff 도구입니다. bsdiff이진 diff 도구이며 큰 파일을 처리 할 수 있습니다. 얼마나 큰지 불분명합니다. 쓰레드에 대한 다음 링크를 참조하십시오.
rdiff 를 사용 하여이 작업을 수행 할 수도 있다고 생각합니다 . Rdiff는 매우 큰 파일을 처리 할 수 있습니다.
한 파일의 서명을 작성하십시오.
rdiff signature A sigs.txt
생성 된 서명 파일 sigs.txt와 다른 큰 파일 B를 사용하여 델타를 작성하십시오.
rdiff delta sigs.txt B deltaAB.txt
델타에는 A 만 있고 델타 파일 deltaAB.txt가있을 때 파일 B를 다시 작성하는 데 필요한 모든 정보가 들어 있습니다.
B를 다시 만들려면 다음을 실행하십시오.
rdiff patch A deltaAB.txt B
이 블로그 게시물에서 GNU diff의 메모리 부족 ( "diff : 메모리 소진")시 더 나은 diff 또는해야 할 일을 발견했습니다. 4.5GB 파일의 rdiff는 ~ 66MB의 RAM 만 소비했다고보고합니다.
lfhex 는 16 진, 8 진, 2 진 또는 ASCII 텍스트로 파일을보고 편집하기위한 응용 프로그램입니다. lfhex의 주요 장점은 시스템 메모리보다 훨씬 큰 파일로 작업 할 수 있다는 것입니다. 그러나 GUI 도구입니다.
![lfhex의 ss]! [lfhex의 ss](https://i.stack.imgur.com/vOx0a.jpg)
--speed-large-files플래그는 GNU diff가 파일을 메모리에로드하는 방식에 영향을 미치지 않는 것처럼 보입니다 . fallocate -l 10G testa; fallocate -l 10G testb && diff --speed-large-files -a testa testb이것을 확인하기 위해 달리기 를 시도하십시오 . (또는 소스 코드를 살펴보십시오.)
bdiff교체 /sbin/sh한 후 Heirloom Toolchest에서 빌드 할 수 있었습니다 /bin/sh. 이제 제자리에서 실행하려고하면 얻을 수 bdiff: Can not execute '/usr/5bin/diff'있습니다. 죄송합니다 /usr/5bin/.에 아무 것도 설치하고 싶지 않습니다 . 이것은 실용적인 해결책이 아닙니다. 여기에 언급 된 다른 옵션은 텍스트와의 차이점을 눈으로보고 싶기 때문에 작동하지 않습니다.
lfhex -c file1 file2두 창 모두에 대해 View –> Editing base –> ASCII를 설정 한 후에 나에게 잘 작동합니다.