바이너리 파일을 크기별로 분할하는 최신 기술은 무엇입니까?

바이너리 파일을 크기별로 분할하는 최신 기술은 무엇입니까?

건너뛸 수 있는 일부 배경

약 20년 전, 웹 검색 비용이 많이 들었을 때, Windows 전용 사용자였을 때, CD/DVD가 대용량 저장 수단이었고, 친구나 친척과 비디오 파일을 공유할 때 파일을 여러 개로 복사하려면 분할이 필요할 때도 있었습니다. CD/DVD를 다른 컴퓨터에 복사한 다음 클립을 다시 결합하는 데 사용했습니다.HJ 스플릿. 매력처럼 작동합니다.

동기 부여

scp20년이 지난 지금 저는 최근 Linux에서 이러한 유틸리티가 필요하다는 사실을 깨달았습니다. 연결이 느리거나 신뢰할 수 없기 때문에 물리적으로 멀리 떨어져 있는 Linux 시스템 간에 데이터를 쉽게 전송할 수 없었기 때문입니다 . 제가 생각해낸 해결책은 파일을 분할하고 부분을 전송한 다음 다시 결합하는 것이었습니다.

이것이 HJSplit이 Windows에서만 작동한다는 것을 알게 된 이유입니다.lxsplit존재하고 매력처럼 작동하므로 모두 좋습니다.

내 질문

하지만lxsplit2008년 이후 폐기되었으므로 15년 동안 다른(더 나은?) 솔루션이 등장했을 수도 있습니다.

Linux에서 이 영역(예: 대용량 바이너리 파일 분할 및 재병합)의 최첨단 기술은 무엇입니까?

추가 동기 부여

또한 개념적으로 파일을 분할하고 다시 결합하는 것은 매우 간단한 작업이라고 생각하므로 이를 수행하는 프로그램을 직접 작성할 수 있는지 궁금합니다. 나는 그것을 시도하고 몇 시간 안에 뭔가를 얻었지만 적어도 lxsplit.lxsplit


(1) 두 시스템 간에 대용량 파일을 전송하는 원래 작업에 대한 대체 워크플로에는 관심이 없습니다. 예, 오늘은 한 시스템에서 Dropbox/Onedrive/GoogleDrive 등 무엇이든 업로드하고 다른 시스템에서 다운로드할 수 있습니다.

답변1

이것split이 명령은 고대부터 Unix의 일부였으며 원래는 줄 분할 텍스트 처리 명령이었지만 현대 구현에서는 바이너리 파일도 처리할 수 있습니다. split -b에 있습니다POSIX그리고바쁜 상자.

분할하려면 세그먼트 크기(마지막 세그먼트가 나머지 세그먼트가 됨)와 세그먼트 파일 이름의 접두사를 선택합니다. (번호 스타일이나 파일 이름 확장자는 선택할 수 없습니다.)

split -b 1440k myfile.bin part-

부품을 연결하려면 cat부품에 .shell 와일드카드를 사용하면 올바른 순서가 됩니다.

cat part-?? >myfile.bin

올바른 순서로 부품을 받으실 수 있음을 보장하지만 누락된 부품이 있는지 확인하지는 않습니다. 또한 서로 다른 파일의 부분이 혼합되는 것을 방지할 수 있는 방법이 없습니다. cksum, 또는 두 시스템 모두에서 사용할 수 있는 명령과 같은 명령을 md5sum사용 하여 원본 파일과 리어셈블된 파일의 체크섬을 계산합니다.md5

답변2

제가 생각해낸 해결책은 파일을 분할하고 부분을 전송한 다음 다시 결합하는 것이었습니다.

글쎄, 이것은 XY 문제처럼 들립니다. 그냥 rsync를 사용하세요:

rsync -avzh verybigfileordirectory [email protected]:/home/user/destination/

필요에 따라 중지하고 시작할 수 있습니다. 원격 측에서 누락된 데이터(작은 협상 오버헤드)를 파악하고 해당 데이터만 복사합니다. 양쪽 끝에 rsync가 필요합니다.

답변3

특히 바이너리 파일용인 zip을 사용하는 것이 좋습니다.

일부 사용자는 특정 DOS 냄새로 인해 이에 주의할 수도 있습니다. :-)

관련 정보