Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

Rclone crypt 원격 무결성 확인? --checksum을 믿기 전에 해시부터 감사하세요

명령 성공만으로 완전한 검증을 뜻하지는 않습니다. crypt 구조와 백엔드 해시 지원을 확인하고 cryptcheck 또는 다운로드 비교를 선택하며 모든 결과를 기록하세요. 오류나 지원되지 않는 객체는 검증 완료에 포함하지 않습니다.

평문이 암호화 게이트를 거쳐 검증된 클라우드 객체와 미해결 객체로 나뉘는 원본 개념 일러스트
원본 개념 일러스트: 평문 소스, crypt 계층과 실제 체크섬 경로를 확인한 뒤 암호화 객체를 검증 완료로 판단합니다. Watch at Ease

암호화 백업이 정상처럼 보여도 검증이 파일명·크기 비교나 일부 객체만 확인하는 수준으로 내려갔을 수 있습니다. 평문 소스, crypt 래퍼와 실제 저장 백엔드를 하나의 끝점으로 취급하면 각각 노출하는 해시 차이를 놓치기 쉽습니다.

전용 cryptcheck는 대상 객체의 nonce를 읽어 같은 nonce로 소스 파일을 암호화하고, 그 암호문의 체크섬과 실제 암호화 백엔드가 제공하는 체크섬을 비교합니다. 결과에 포함하는 모든 객체에 사용 가능한 체크섬이 있어야 충분한 증거가 됩니다.

무결성 비교 단계는 읽기 전용이며 원격 데이터를 동기화·복사·정리·삭제하지 않습니다. 별도의 표본 복원은 다른 작업이며 격리 경로를 사용해야 합니다. 범위 안 각 객체는 중복 없이 기록된 한 분류에 들어가야 하며, 읽기·해시 오류, 미지원 체크섬, 건너뛴 객체나 설명되지 않는 개수 차이가 있으면 완전 검증이라 부르지 않습니다.

1. 범위를 고정하고 세 계층을 기록하세요

평문 소스, 설정한 crypt 원격과 그 원격이 가리키는 실제 저장 경로를 적습니다. 정확한 rclone 버전, 설정 이름, 하위 경로, 필터와 소스가 로컬인지 다른 원격인지 기록합니다. 암호, obscured 처리한 자격 증명이나 토큰은 노출하지 않습니다.

실행 전에 방향을 확인합니다. `rclone cryptcheck source:path cryptedremote:path`의 두 번째 끝점은 설정한 crypt 원격이며 원시 저장 백엔드 경로가 아닙니다. 두 원시 암호문 저장소나 두 복호화 뷰 비교는 다른 질문에 답하므로 설명 없이 대체할 수 없습니다.

신뢰하는 소스에서 예상 목록을 만들고 객체 수, 총 바이트, 필터 집합과 알려진 제외 항목을 기록합니다. 이 분모는 깨끗한 로그가 검사에 들어오지 않은 파일을 가리는 일을 막습니다.

2. 암호화 백엔드가 필요한 해시를 제공하는지 확인하세요

공식 cryptcheck 문서는 crypt 대상의 실제 원격이 어떤 형태로든 체크섬을 지원해야 한다고 요구합니다. crypt 래퍼가 있다는 이유로 해시가 있다고 가정하지 말고 백엔드와 객체 종류를 확인합니다.

설치한 rclone 버전에 맞는 읽기 전용 기능·메타데이터 확인을 사용하고 출력을 보관합니다. 작은 객체의 체크섬이 있다고 다중 부분 업로드, 청크나 특수 객체까지 같은 범위를 보장하지는 않습니다.

해시를 검사할 수 없다는 보고, 호환 해시 부재나 특정 객체 종류의 체크섬 누락이 있으면 해당 객체에 cryptcheck 합격을 선언하지 않습니다. 정확한 미지원 수를 기록하고 다른 검증 경로를 선택합니다.

3. 실제 질문에 맞는 비교 방법을 고르세요

신뢰하는 소스가 평문이고 대상은 crypt 원격이며 실제 백엔드가 체크섬을 제공할 때 cryptcheck를 사용합니다. 로컬 소스라면 대상 nonce를 읽은 뒤 로컬에서 암호화와 해시 계산을 할 수 있습니다.

소스가 다른 원격이면 모든 소스 파일 다운로드가 필요할 수 있다고 공식 문서는 경고합니다. 같은 명령을 저렴한 서버 내부 비교로 생각하지 말고 전송량, 데이터 반출 요금, 시간과 로컬 자원을 먼저 추산합니다.

일반 `rclone check`는 일반 끝점 사이에서 데이터를 바꾸지 않고 목록과 공통 해시를 비교합니다. `--download`는 해시가 없는 경우 등에 다운로드한 데이터를 비교하지만 대역폭을 많이 쓰는 별도 경로입니다. 크기만 비교하는 것은 목록 증거이지 바이트 무결성 증명이 아닙니다.

4. 전체 읽기 전용 검사 전에 작은 canary를 실행하세요

작은 파일, 큰 파일, 운영 환경 밖에서 안전하게 준비할 수 있는 같은 크기의 변경 파일, 해시 동작이 다를 것으로 의심되는 객체 종류를 포함한 대표 canary를 선택합니다. 파일과 경로에는 민감한 정보를 넣지 않습니다.

고정한 집합에만 cryptcheck를 실행하고 combined, match, differ, missing-on-source, missing-on-destination, error 보고서를 따로 저장합니다. 명령, 시작·종료 시간, 버전과 종료 상태도 보관합니다.

combined 기호를 정확히 해석합니다. `=`는 동일, `-`는 대상에만 있음, `+`는 소스에만 있음, `*`는 내용 차이, `!`는 읽기나 해시 오류입니다. 느낌표는 내용 불일치가 아니며 검증 완료에 넣지 않습니다.

5. 증거를 약화하지 않고 범위를 넓히세요

canary에서 의도한 해시 경로를 확인하면 같은 끝점 방향과 필터로 전체 범위를 검사합니다. 속도 제한, 메모리 압박이나 백엔드 제한 때문에 검사 범위 오류가 배경 잡음에 묻히지 않도록 checker 동시 실행 수를 보수적으로 설정합니다.

`--one-way`가 복원 질문에 맞는지 결정합니다. 소스 파일이 대상에 존재하고 일치하는지 확인하지만 대상에만 있는 추가 객체는 의도적으로 보고하지 않습니다. 오래되거나 예상 밖인 암호문도 중요하면 단방향 합격을 사용하지 않습니다.

보고서를 변경하지 않는 실행 증거로 보관합니다. 경고와 NOTICE에 해시 부족이나 대체 동작의 증거가 들어갈 수 있으므로 표준 출력만 리디렉션하는 것으로는 부족합니다.

6. 검증 완료라고 하기 전에 대상 수 대장을 맞추세요

각 소스 객체를 한 번만 세어 일치, 차이, 소스에만 존재, 읽기·해시 오류의 영향, 또는 해시 미지원·건너뜀으로 미검증에 분류합니다. 기록한 제외 항목도 명시합니다. 대상에만 있는 객체는 별도 분류이며 겹치는 보고서의 같은 객체를 두 번 세지 않습니다.

완전 합격에는 차이 0개, 예상 밖 누락 0개, 읽기·해시 오류 0개, 미지원 객체 0개와 설명 가능한 분모가 필요합니다. 종료 상태와 요약은 보조 증거이며 객체 분류 대장을 대체하지 않습니다.

개수가 맞지 않으면 필터, 권한 실패, 잘못된 이름, 제한이나 해시 없는 객체를 확인한 뒤 범위를 줄여 다시 실행합니다. 비율을 좋아 보이게 하려고 미해결 객체를 일치 합계로 옮기지 않습니다.

대장 분류: 일치(`=`). 의미: 소스와 암호화 대상의 동일성을 검증. 처리: 검증 완료에 포함.

대장 분류: 차이(`*`). 의미: 양쪽에 존재하지만 검증한 내용이 다름. 처리: 실패, 조사.

대장 분류: 대상 누락(`+`). 의미: 소스에 있으나 대상 객체가 없음. 처리: 백업 완전성 실패.

대장 분류: 소스 누락(`-`). 의미: 대상의 추가 객체. 처리: 의도적인 제외가 아니면 조사.

대장 분류: 읽기·해시 오류(`!`). 의미: 읽기나 해시 계산을 할 수 없음. 처리: 미검증, 이번 실행 실패.

대장 분류: 미지원 체크섬. 의미: 필요한 실제 백엔드 해시가 없음. 처리: 미검증, 다른 방법 선택.

7. 전송 안전성과 복원 신뢰를 구분하세요

2026년 7월 커뮤니티 사례는 전송 옵션과 검증을 따로 기록할 이유를 보여 줍니다. 공통 해시가 없다는 NOTICE 때문에 checksum 기반 동기화가 크기만 비교했고, 같은 크기의 수정이 반영되지 않다가 cryptcheck로 차이가 드러났습니다. 실제 구조에 관한 경고이며 모든 백엔드로 일반화하지 않습니다.

cryptcheck는 한 시점에 선택한 소스 바이트와 암호화 대상의 동등성을 증명합니다. 소스가 원하는 과거 버전인지, 자격 증명을 복구할 수 있는지, 애플리케이션 수준 복원이 성공하는지는 증명하지 않습니다.

별도의 복원 시험으로 표본을 격리 경로에 복원하고 예상 설정으로 복호화해 소스를 덮어쓰지 않고 앱에서 보이는 파일을 확인합니다. cryptcheck 대장과 복원 증거는 따로 기록합니다.

8. 비밀 없는 지원 요청 기록을 만드세요

비식별화한 구조, rclone 버전, 백엔드 유형, 정확한 읽기 전용 명령, 필터, 예상 수, 보고서별 수, 미지원 객체 수, 종료 상태와 실행 시간을 보관합니다. 소스가 로컬인지 원격인지, one-way 사용 여부도 적습니다.

설정 암호, 토큰, 계정 식별자와 개인 파일명은 제외합니다. 재현 사례를 공유할 때는 생성한 시험 파일과 민감 정보를 가린 설정 출력을 사용합니다.

끝점 방향, 실제 백엔드 해시 능력, 필터, 객체 종류와 보고서 분모를 명확히 한 뒤 문제를 보고합니다. 유지보수자가 진짜 결함, 사용 불가 체크섬, 비용이 큰 원격 소스나 불완전 목록을 구분할 수 있습니다.

자주 묻는 질문

`rclone check`는 crypt의 평문 해시를 검증하나요? 그 자체로는 아닙니다. 공식 문서는 암호화 파일 체크섬 비교에 cryptcheck를 안내합니다. 일반 check는 읽기 전용 목록 정보를 제공하고 `--download`는 전송 비용이 드는 별도 내용 비교 경로입니다.

cryptcheck는 모든 파일을 다운로드하나요? 로컬 평문 소스면 대상 nonce를 받은 뒤 로컬에서 읽고 암호화할 수 있습니다. 다른 원격이 소스면 모든 소스 파일을 다운로드해야 할 수 있습니다.

combined의 `!`는 무엇인가요? 소스나 대상 읽기·해시 오류입니다. 내용 차이가 아니며 해결 전까지 미검증으로 남깁니다.

`--one-way`만으로 백업을 검증할 수 있나요? 합격 질문에서 대상에만 있는 추가 객체를 제외할 때만 가능합니다. 소스가 대상에 있고 일치해야 하지만 대상 추가 파일은 보고하지 않습니다.

성공 요약은 모든 암호화 바이트 검사를 증명하나요? 예상 목록과 모든 보고서 분류가 맞고 미지원 체크섬, 건너뜀, 읽기·해시 오류가 없을 때만 가능합니다. 성공 한 줄보다 분모가 있는 대장을 남깁니다.

일치, 차이, 누락, 읽기 오류와 미지원 체크섬을 분리한 원본 개념 일러스트
원본 개념 일러스트: 객체마다 결과를 분리하고 오류나 미지원 해시는 검증 완료에 포함하지 않습니다. Watch at Ease