Skip to content
Mbox Viewer Pro
mbox아카이브product

50 GB짜리 MBOX 파일 여는 법

큰 MBOX 파일이 리더를 쓰러뜨리는 이유는 파일이 손상돼서가 아닙니다. 대부분의 리더가 파일 전체를 먼저 메모리에 올리기 때문입니다. 스트리밍 파서와 인덱스가 무엇을 바꾸는지, 실제 수치와 함께 정리했습니다.

David Carrero ·

파일을 통째로 올리는 대신 스트리밍으로 읽는 리더를 쓰세요. 그런 리더라면 메시지 50만 통 남짓한 50 GB 메일박스가 5분 안에 열리고, RAM은 600 MB 아래에 머물며, 그다음부터는 1초가 걸리지 않아 다시 열립니다. 그런 리더가 아니라면 내 파일이 얼마나 큰지는 의미가 없습니다. 어차피 500 MB에서 2 GB 사이 어딘가에서 주저앉습니다.

다른 프로그램들은 왜 버티지 못할까요?

메일 리더를 만드는 가장 손쉬운 방법이 파일을 파싱해 메시지 목록을 메모리에 만들어 두고 보여 주는 것이기 때문입니다. 샘플 메일박스가 40 MB인 테스트 환경에서는 더할 나위 없이 잘 돌아갑니다.

그러다 누군가 Gmail 내보내기를 엽니다. 이제 파서는 메시지 50만 통을 한꺼번에 RAM에 들고 있으려 하고, 프로세스는 컴퓨터가 가진 것보다 커지며, 끝나지 않는 회전 커서나 강제 종료를 보게 됩니다. 최악은 20분 뒤에 창이 뜨긴 하는데 클릭할 때마다 버벅이는 경우입니다.

문제는 파일이 아닙니다. 50 GB짜리 MBOX는 지극히 평범한 MBOX입니다. 이 형식에는 크기 제한이 없었고 지금도 없습니다. 제한이 있는 쪽은 모든 것이 메모리에 들어간다는 가정입니다.

스트리밍이 실제로 뜻하는 것

스트리밍 파서는 파일을 작은 조각으로 훑으면서 — Mbox Viewer는 1 MB 버퍼를 씁니다 — 메시지 자체를 들고 있는 대신 각 메시지가 어디서 시작하는지를 기록합니다. 메모리 사용량은 메시지가 얼마나 큰지가 아니라 몇 통인지에 달려 있고, 지금 실제로 읽고 있는 몇 통만 캐시에 올라옵니다.

여기서 따라 나오는 실질적인 결과는 이렇습니다. 50 GB 아카이브를 여는 데 드는 RAM이 500 MB 아카이브를 여는 것과 비슷합니다. 기능 페이지에 공개해 둔 수치입니다.

크기메시지첫 열기다시 열기RAM
500 MB약 5,000통5초 미만1초 미만100 MB 미만
5 GB약 50,000통30초 미만1초 미만200 MB 미만
50 GB약 500,000통5분 미만1초 미만600 MB 미만

두 번째부터는 왜 즉시 열릴까요

그 첫 번째 훑기가 남길 만한 것을 만들어 내기 때문입니다. 모든 메시지가 어디서 시작하는지 적어 둔 이진 인덱스 말입니다. 다시 여는 것은 인덱스를 읽는 일이지, 50 GB를 다시 읽는 일이 아닙니다.

인덱스는 SHA-256으로 검증됩니다. 그래서 밑에 있는 메일박스가 바뀌면 — 파일을 갈아 끼웠거나 뒤에 덧붙였다면 — 앱이 알아채고 낡은 목록을 보여 주는 대신 다시 만듭니다. 인덱스는 메일박스 바깥에 살고, 메일박스는 바이트 하나까지 그대로 남습니다.

한 번은 5분, 그 뒤로는 매번 1초. 몇 년에 걸쳐 가끔씩 들여다보는 아카이브라면 이 비율이야말로 실제로 쓰는 파일과 자꾸 미루게 되는 파일을 가르는 전부입니다.

그 크기에서도 검색이 되나요?

됩니다. 그리고 그것이 이 수고를 들이는 이유입니다. 50만 통은 스크롤할 대상이 아니라 질의할 대상입니다. from:, to:, subject:, body:, date:, has:attachment, size:>, 정확한 구절, OR와 부정 조건까지 — 전체 목록은 치트 시트에 있습니다.

본문 검색은 실제로 메일을 읽어 들여야 하므로, 아주 큰 아카이브에서는 즉시가 아니라 몇 초 단위로 걸립니다. 보낸 사람, 제목, 날짜 같은 헤더 검색은 곧바로 돌아오고, 대부분의 질문은 이쪽으로 답이 나옵니다.

차라리 파일을 나누는 게 나을까요?

그럴 때도 있지만, 사람들이 생각하는 것보다는 드뭅니다. 나누는 것이 값어치를 하는 때는 조각들이 정말로 따로 필요할 때입니다. 연도별로 한 파일씩 보관한다든가, 일부만 잘라 누군가에게 건네야 한다든가 하는 경우죠. 단지 파일을 열리게 만들려고 나누는 것은 값어치가 없습니다. 리더가 문제라면 나누는 것으로는 아무것도 해결되지 않기 때문입니다.

정말 나누고 싶다면 큰 Thunderbird 메일박스를 위한 가이드가 있습니다. 그리고 필요한 것이 일부만 넘겨주는 일이라면, 선택한 메시지를 새 MBOX로 내보내는 쪽이 더 깔끔합니다. 검색이나 필터로 범위 안의 것만 추린 다음 그 메시지들을 새 파일로 쓰고, 원본은 건드리지 않으면 됩니다.

아주 큰 아카이브를 다룰 때의 실무 메모

  • 디스크 공간: 메일 사본이 아니라 인덱스를 위한 자리가 필요합니다. 메일박스 크기의 아주 일부입니다.
  • 첫 열기는 네트워크 드라이브에서 하지 마세요. 스트리밍은 파일 전체를 한 번 읽는다는 뜻이고, 그걸 Wi-Fi로 하면 5분짜리 작업이 반나절이 됩니다. 로컬로 복사해서 열고 다시 돌려 두세요.
  • 여러 개로 쪼개진 Takeout 내보내기: Google은 아주 큰 메일박스를 여러 파일로 나눠 줍니다. 각각 따로 열리고, 하나의 메일박스로 합칠 수도 있습니다. 조각들이 겹치면 Message-ID로 중복 메시지를 걸러 냅니다.
  • 무료 버전은 1 GB까지 엽니다. 그 위로는 한 번만 결제하면 됩니다. 구독도 계정도 없습니다.

Mbox Viewer로 아카이브 열기

네이티브 Mac과 Windows 앱. 크기에 상관없이 MBOX 및 EML 파일을 완전히 오프라인으로 스트리밍합니다.