기능가격문서블로그
mote 받기
← 블로그
개발·2026년 9월 3일·읽는 시간 6분

저장 중에 꺼져도 파일이 깨지지 않게 만든 방법

저장하는 순간에 노트북이 꺼지면 문서는 어떻게 되나요. mote에서 그 답은 "저장 전이거나 저장 후이거나, 둘 중 하나"예요.

m
mote
상태 폴더의 백업 목록. 저장 직전의 파일이 문서 이름과 읽을 수 있는 시각으로 남아 있고, 문서 폴더에는 아무것도 생기지 않아요.
상태 폴더의 백업 목록. 저장 직전의 파일이 문서 이름과 읽을 수 있는 시각으로 남아 있고, 문서 폴더에는 아무것도 생기지 않아요.

파일을 저장하는 순간, 전원이 꺼지면 어떻게 될까요?

보통은 파일이 절반만 저장될 수 있어요. 오래 쓰는 에디터라면 이런 일이 없어야 해요. 그래서 mote는 저장에 실패해도 원래 파일을 지켜요.

먼저 문서와 같은 폴더에 임시 파일을 만들어요. 내용을 모두 쓴 뒤 디스크에 반영하고, 원래 파일의 권한을 복사해요. 준비가 끝나면 임시 파일을 원래 이름으로 바꿔요.

이름을 바꾸는 작업은 한 번에 일어나요. 도중에 전원이 꺼져도 남는 건 이전 파일이나 새 파일이에요. 절반만 저장된 파일은 남지 않아요.

권한도 그대로 유지해요. 저장은 내용을 바꾸는 일이지, 누가 파일을 읽을 수 있는지 바꾸는 일이 아니니까요.

문서의 바이트도 손대지 않아요. CRLF 줄바꿈, BOM, 섞여 있는 줄바꿈, 마지막 줄바꿈의 유무까지 그대로 저장해요. 파일을 열고 아무것도 고치지 않았다면, 다시 저장해도 바이트 하나 달라지지 않아야 해요. mote는 출시할 때마다 이 원칙을 테스트해요.

링크는 끊지 않아요

안전한 저장 방식도 모든 파일에 그대로 쓸 수는 없어요.

심볼릭 링크를 일반 파일처럼 교체하면 링크가 사라져요. 편집한 내용도 링크가 가리키던 문서에 반영되지 않아요. mote는 링크를 따라가 실제 파일을 저장해요. 링크는 그대로 남아요.

하드링크는 여러 이름이 같은 파일을 가리켜요. 한쪽 이름만 새 파일로 바꾸면 연결이 끊겨요. 그래서 하드링크가 있는 파일은 제자리에서 덮어써요. 원자성은 포기하지만, 저장 직전에 만든 백업으로 위험을 줄여요.

읽지 못한 파일은 저장하지 않아요

mote는 저장하기 전에 디스크의 파일을 먼저 읽어요.

파일이 없으면 새로 만들어요. 읽을 수 있으면 백업한 뒤 저장해요. 파일은 있지만 읽을 수 없다면 저장을 멈춰요.

인코딩을 지원하지 않는 옛 문서나 폴더, 권한이 없는 파일이 여기에 해당해요. 읽지 못한 파일을 빈 문서처럼 보여 준 뒤 덮어쓰면, 사용자가 보지 못한 내용까지 모두 사라질 수 있어요.

읽을 수 없으면 백업도 만들 수 없어요. 그래서 저장하지 않는 게 파일을 지키는 유일한 방법이에요.

백업과 초안은 문서 옆에 만들지 않아요

저장하기 전의 파일은 상태 폴더에 백업해요. 이름에는 문서명과 저장 시각을 담아요.

문서이름.2026-09-07-153914.md

문서마다 최근 백업 20개를 보관하고, 오래된 것부터 지워요. 파일명만 봐도 언제 만든 백업인지 알 수 있고, 평소 쓰던 에디터로 바로 열 수 있어요.

한 번도 저장하지 않은 문서는 백업할 원본이 없어요. 대신 초안을 만들어요. 편집을 멈춘 지 1초가 지나면 상태 폴더에 사본을 저장해요. 이름에는 시각과 문서의 첫 제목을 넣어요.

파일을 저장하거나 사용자가 문서를 버리면 초안도 지워져요. 앱이 종료될 때도 같아요. 저장할 위치가 있으면 파일로 저장하고, 없으면 초안으로 남겨요.

크래시로 남은 임시 파일도 다음에 문서를 열 때 정리해요. 다만 해당 파일을 만든 프로세스가 아직 실행 중이라면 건드리지 않아요. 다른 창이 저장하고 있을 수 있기 때문이에요.

/tmp나 캐시 폴더의 문서는 재부팅할 때 사라질 수 있어요. 이런 문서를 열면 다른 곳에 저장하라는 안내를 보여 줘요.

그 밖에는 문서 폴더에 어떤 보조 파일도 만들지 않아요. 설정과 백업, 초안, 마지막으로 연 파일 정보는 모두 사용자 홈의 상태 폴더에 보관해요. 마크다운에 담을 수 없는 상태를 따로 저장해야 하는 기능은 넣지 않았어요.

임시 폴더의 문서를 열었을 때 뜨는 배너 — 재부팅하면 사라질 수 있으니 다른 곳에 저장해 두라는 문장 옆에 다른 이름으로 저장과 계속 편집 버튼이 있어요
임시 폴더의 문서를 열었을 때 뜨는 배너 — 재부팅하면 사라질 수 있으니 다른 곳에 저장해 두라는 문장 옆에 다른 이름으로 저장과 계속 편집 버튼이 있어요

백업은 실행 취소로 돌아갈 수 없을 때 필요해요. 앱을 다시 연 뒤나, 잘못 저장한 사실을 한참 뒤에 알아챘을 때요. 백업 파일을 열면 각 저장이 덮어쓰기 직전의 문서를 그대로 확인할 수 있어요.

파일과 네트워크는 사용자가 허락할 때만 건드려요

자동 저장은 설정에서 직접 켜야 해요. 저장까지 기다리는 시간도 고를 수 있어요.

켜 두면 편집을 멈춘 뒤 설정한 시간이 지나 저장해요. 저장 방식은 직접 저장할 때와 같아요. 먼저 백업하고, 임시 파일을 만든 뒤 원래 파일과 바꿔요. 자동 저장은 별도의 저장 기능이 아니라, 같은 저장을 대신 시작해 주는 타이머예요. 편집할 때만 작동해요.

설정 카드의 일반 탭 — 자동 저장 스위치와 그 아래 자동 저장 지연 시간(초) 1, 맨 아랫줄에 시작할 때 업데이트 확인 스위치가 있어요. 이 캡처에서는 둘 다 꺼 둔 상태예요
설정 카드의 일반 탭 — 자동 저장 스위치와 그 아래 자동 저장 지연 시간(초) 1, 맨 아랫줄에 시작할 때 업데이트 확인 스위치가 있어요. 이 캡처에서는 둘 다 꺼 둔 상태예요

업데이트 확인도 직접 켜야 해요. 꺼 두면 mote는 네트워크를 사용하지 않아요.

켜 두면 앱을 시작한 뒤 백그라운드에서 한 번 확인해요. ‘하루 한 번’은 앱이 시간을 세는 게 아니라 상태 폴더의 스탬프 파일로 지켜요. 켜 둔 동안 다시 확인하지 않고, 계속 도는 타이머도 없어요.

새 버전이 있어도 바로 내려받지 않아요. 화면 오른쪽 아래에 알림만 보여 줘요. 사용자가 누르기 전에는 다운로드도, 설치도, 재시작도 하지 않아요.

앱이 직접 업데이트할 수 있는 형식은 AppImage뿐이에요. 파일 하나를 교체하면 끝나기 때문이에요. apt나 Flatpak으로 설치했다면 알맞은 명령어만 안내해요. 실행은 사용자가 직접 해요.

업데이트를 확인할 때는 플랫폼과 배포 채널만 보내요. 사용자를 식별하는 정보나 열어 둔 문서 정보는 보내지 않아요.

안전한 저장은 언제나 성공하는 저장이 아니에요. 실패해도 잃지 않는 저장이에요.

← 이전 글내가 친 바이트만 저장되도록 파일을 진실로 삼았다다음 글 →git checkout 뒤에도 문서가 비지 않도록, 시계 대신 바이트를 본다
RSS로 새 글 받기
글을 위한 기본
한국어
© 2026 mote
멘토그래드 (MentorGrad) · 대표 윤상빈 · 사업자등록번호 475-15-02958 · 통신판매업신고 2026-서울도봉-0075 · 서울특별시 도봉구 마들로13길 61, 씨드큐브 창동, 4층 C동 411H호 · 010-2012-3741 · support@motemd.com