C드라이브 용량이 부족할 때 지우기 전에 확인할 것
C드라이브 용량이 부족하다고 나오면, 경고가 난 드라이브와 실제 여유 공간부터 확인하세요. D드라이브의 파일을 지워도 C의 여유 공간이 늘지 않고, 임시 파일 목록에도 보존이 필요한 항목이 있을 수 있습니다.
설정의 저장소 항목을 읽어 중요한 자료·복구용 파일·용도 모르는 항목을 따로 적습니다. 이 글의 첫 단계에서는 삭제하거나 자동 정리를 켜지 않습니다. 무엇을 보존해야 하는지 확인한 뒤에 정리를 검토합니다.
첫 점검과 기록표 작성은 Python 없이 할 수 있으며 JSON·Python 검산은 말미의 선택 부록입니다.
먼저 부족한 드라이브와 보존할 항목 하나 적기
- 저장이 가능한 열린 문서는 정상 저장합니다. 저장 오류가 나면 원래 경로와 오류를 남기고, 유일한 원본을 덮어쓰거나 용도 모르는 파일을 지우지 않습니다.
- 파일 탐색기의 내 PC에서 경고가 나온 드라이브 문자와 여유 공간·단위를 읽습니다. 설정 → 시스템 → 저장소에서는 현재 어느 볼륨을 설명하는지도 함께 확인합니다.
- 눈에 보이는 항목 하나를 골라 ‘대상 볼륨 / 항목 이름 / 크기와 단위 / 보존 이유 / 미확인’만 적습니다. 임시 파일 목록은 설명을 읽되 선택을 바꾸거나 파일 제거·정리를 누르지 않습니다.
설명용 입력 ‘C: / 유일한 보고서 / 별도 사본 없음’의 기대 기록은 ‘보존’입니다. ‘용도 모르는 캐시’는 ‘확인 보류’입니다. 이 단계의 기대 결과는 기록 한 줄이며 여유 공간 증가가 아닙니다. 분류 크기와 그 안의 파일 크기를 한 합계에 더하지 않습니다.
읽기만 했다면 창을 닫으면 됩니다. 크기가 계산 중이거나 볼륨·경로가 맞지 않으면 미확인으로 두고 삭제를 보류합니다. 실수로 항목을 선택했다면 제거를 실행하지 말고 원래 선택 상태와 대조해 취소합니다. Storage Sense를 켜는 작업은 이 과제에 포함하지 않습니다.
저장소 화면에서 실제 대상 볼륨부터 확인하기
먼저 작업 중인 문서를 저장합니다. 저장 자체가 실패하면 새 파일로 원본을 덮어쓰려 하지 말고 오류 문구와 원래 경로를 남깁니다. 확실한 보존 사본 없이 원본·유일한 사본·복구 자료를 정리 대상으로 잡지 않습니다. 동기화 아이콘만으로 별도 백업이 있다고 판단하지 마세요.
- 파일 탐색기를 열어 내 PC의 장치 및 드라이브에서 경고가 나온 볼륨 문자와 여유 공간을 읽습니다. 저장 실패 경로가 C:인지 D:인지도 별도로 확인합니다. Microsoft 여유 공간 확인 안내
- 설정 → 시스템 → 저장소를 열어 화면이 어느 드라이브를 설명하는지 확인합니다. 설치된 앱, 임시 파일, 시스템 및 예약, 문서 등 보이는 분류와 크기를 기록합니다. 분류 계산이 진행 중이면 완료 전 숫자를 확정값으로 옮기지 않습니다. Microsoft 저장소 설정
- Windows 11에서는 고급 저장소 설정 → 다른 드라이브에서 사용된 저장소로 대상 드라이브를 선택해 분류를 대조할 수 있습니다. Windows 10에서는 같은 저장소 화면의 다른 드라이브 사용량 보기 항목 등 해당 버전의 표시를 확인합니다. 메뉴가 보이지 않으면 폴더 삭제나 관리 명령으로 대신하지 않고 버전·화면 차이를 남깁니다.
- 임시 파일 또는 Windows 11의 정리 권장 사항은 항목 이름과 설명을 읽는 데까지만 진행합니다. 선택 상태를 바꾸거나 “파일 제거”, “정리”를 누르지 않습니다. Storage Sense의 현재 켜짐·꺼짐과 정리 조건도 읽되 이번 확인을 위해 켜지 않습니다.
한 번 저장소 항목을 연 뒤 기대 관찰은 해당 볼륨의 항목별 목록과 크기입니다. 공간이 늘어날 것을 기대하는 단계가 아닙니다. 이 조회 전후에도 자동 정리나 다른 앱의 쓰기가 진행되면 숫자는 달라질 수 있습니다. 그 변화를 이 조회의 정리 효과라고 기록하지 않습니다.
Storage Sense는 Windows가 설치된 시스템 드라이브에 작동하며 보통 C:입니다. 다른 드라이브의 저장소 사용량과 적용 범위를 구분해야 합니다. 다운로드·클라우드 콘텐츠에 적용되는 설정도 실제 값을 확인해야 하며, 기본값이라는 기억만으로 보존을 보장하지 않습니다. Microsoft Storage Sense 안내
분류 크기와 파일 목록을 같은 합계에 더하지 않기
분류와 그 안의 파일을 더하면 중복 계산합니다. 예를 들어 문서 분류 5,000MB 안에 보고서 500MB가 포함되어 있다면 두 값의 합 5,500MB는 사용량이 아닙니다. 설치된 앱 크기를 보고 프로그램 폴더를 수동으로 지우는 것도 이 절차의 결과가 아닙니다.
아래는 서로 겹치지 않는다고 가정한 합성 C볼륨 분류입니다. 모든 숫자는 MB로 통일했습니다. 실제 Windows 화면의 GB·GiB 표기나 반올림을 재현한 값이 아닙니다.
| 구분 | 합성 크기 MB |
|---|---|
| 설치된 앱 | 17,000 |
| 시스템 및 예약 | 12,000 |
| 문서 | 5,000 |
| 임시 파일 | 2,000 |
| 기타 | 4,000 |
| 사용량 합계 | 40,000 |
| 전체 용량 | 48,000 |
| 여유 공간 | 8,000 |
다음 개별 항목표는 별개의 연습 목록입니다. 위 분류표의 하위 항목이라고 연결하거나 분류 합계에 더하지 않습니다. 보존 이유나 실제 점유량이 아직 불명확한 행을 후보에 포함하지 않는 연습입니다.
| ID | 볼륨 | 항목 별칭 | 논리 크기 MB | 디스크 점유 MB | 보존 조건 | 판정 |
|---|---|---|---|---|---|---|
| T | C: | 공식 임시 항목 | 400 | 400 | 설명·불필요 여부·복구 조건 확인 | 검토 후보 |
| U | C: | 출처 모르는 캐시 | 9,000 | 9,000 | 용도 미확인 | 확인 보류 |
| P | C: | 유일한 보고서 | 5,000 | 5,000 | 별도 보존 사본 없음 | 보존 |
| R | C: | 휴지통 자료 | 600 | 600 | 복원이 필요한지 미확인 | 보존 |
| W | C: | 이전 Windows 설치 | 3,000 | 3,000 | 이전 버전 복구 가능성 확인 필요 | 보존 |
| D | D: | 별도 드라이브 임시 항목 | 7,000 | 7,000 | C: 대상 아님 | 다른 볼륨 |
| O | C: | 온라인 전용 문서 표시 | 12,000 | 24 | 클라우드 파일·상태 보존 | 보존 |
검토 후보 T의 400MB는 삭제 승인이나 확보된 공간이 아닙니다. 후보의 근거가 기록되었다는 뜻입니다. U를 이름만 보고 안전한 캐시라고 인정하면 결과가 9,400MB로 부풀어 오릅니다.
이전 Windows 설치를 제거하면 이전 버전으로 돌아가는 데 필요한 자료가 사라지며 이 삭제를 되돌릴 수 없습니다. 따라서 W는 우선 보존합니다. Microsoft 이전 버전 삭제의 주의 사항
OneDrive의 온라인 전용 파일은 전체 파일 내용이 PC에 저장된 상태와 다릅니다. 표시되는 파일 크기를 그대로 확보 가능한 로컬 공간이라고 적지 않습니다. 파란 구름·로컬 사용 가능·항상 사용 가능 상태를 구분하고, 파일을 열거나 “항상 이 장치에 유지”로 바꾸면 로컬 다운로드가 발생할 수 있으므로 이번 읽기 전용 확인에서는 바꾸지 않습니다. O의 12,000MB·24MB는 설명용 숫자이며 OneDrive의 실제 점유율이 아닙니다. Microsoft OneDrive Files On-Demand
확인이 끝나도 삭제를 바로 실행하지 않기
이 기록 다음에 정리를 검토한다면 공식 UI의 정확한 항목 설명, 대상 볼륨, 자료 보존, 예상 변화와 되돌릴 수 없는 손실을 먼저 확인해야 합니다. 후보를 승인했다는 기록과 실제 삭제는 별개입니다. 프로그램 제거, 임의 AppData·시스템 폴더 삭제, 캐시 일괄 삭제, 포맷이나 재설치는 이 글의 기본 해법이 아닙니다.
크기가 계속 계산 중이거나 분류·파일 경로·볼륨이 불일치하면 그 항목을 보류합니다. 모르는 값을 0으로 채우지 않습니다. 읽기만 한 경우에는 창을 닫으면 되며 저장소 설정 복구는 필요 없습니다. 실수로 항목을 선택했다면 제거 버튼을 누르기 전에 원래 선택 상태를 기록과 대조하고 취소합니다. 자동 정리 설정을 이미 바꿨다면 실행 전에 원래 조건으로 복구하되, 실행된 삭제가 토글을 되돌리는 것만으로 복원되지는 않습니다. 자료를 이미 잃었다면 추가 삭제를 멈추고 확인된 백업·휴지통·지원 절차에서 복원 가능성을 따로 판단하세요.
삭제 전 보존 기록
관찰 시각 / Windows 에디션·버전·빌드:
경고 또는 저장 실패 경로 / 실제 대상 볼륨:
전체·사용·여유 공간과 단위 / 계산 완료 여부:
저장소 분류 / 항목 별칭 / 실제 경로는 개인 기록에만:
논리 크기 / 디스크 점유 / 구분하지 못한 값:
유일한 사본·복구·업무 보존 이유:
별도 보존 사본 위치와 열어 본 확인 결과:
공식 UI 항목 설명 / 검토 후보 또는 보류 이유:
Storage Sense 원래 상태·정리 조건 / 변경 여부:
실행한 정리: 없음 또는 별도 승인한 정확한 조치
중단·선택 취소·원래 설정 복구 결과:
동일 볼륨에서 재관찰한 여유 공간 / 아직 미확인:
기술 기준일은 2026-10-04 KST입니다. Windows 10 22H2의 일반 지원은 2025-10-14에 종료됐고 ESU는 자격·등록 조건이 있는 별도 보안 업데이트 경로입니다. LTSB·LTSC는 같은 종료일을 일괄 적용하지 않고 해당 에디션의 수명 주기를 별도로 확인합니다. Microsoft Windows 10 릴리스·에디션별 지원 표 Microsoft 지원 종료 안내 Windows 11도 에디션·버전별 지원과 메뉴가 다르므로 현재 릴리스 표와 PC의 버전을 대조합니다. 화면 표기가 다르면 절차를 보류합니다.
파일의 역할과 보존을 정한 뒤 폴더 이동을 별도로 연습하려면 Python 폴더 정리의 드라이런과 되돌리기를 볼 수 있습니다. 그 글의 연습 이동은 이 글의 저장소 조회·정리 승인을 대신하지 않습니다. 여기서 검증한 것은 합성 목록의 분류와 산술이며 실제 공간 확보량·Windows 정리 성공·성능 향상은 아닙니다.
선택 부록 Python과 합성 입력을 따로 검산하기
앞의 작은 점검과 빈 기록표를 완성했다면 이 부록을 실행하지 않아도 됩니다. 아래 코드는 합성 기록의 기대 분류를 검사하며 Windows·기기·서비스를 복구하지 않습니다. 먼저 표의 입력과 기대값을 눈으로 대조하세요. Python이 이미 설치되어 있고 기본 실행 방법을 아는 경우에만 선택해서 재현합니다.
기존 설치에 맞춰 python --version 또는 py --version 등으로 실행 이름과 버전을 확인합니다. Python 3.12가 확인됐다면 python, py -3.12 또는 python3.12 중 실제 설치에서 동작하는 명령을 사용합니다. 본문의 python3.12 표기는 작성 환경의 실행 이름이며 모든 Windows 설치의 명령을 보장하지 않습니다. 실행 이름을 찾지 못하면 이 부록을 멈추고 표를 수동 대조합니다. 이 점검을 위해 새 설치·PATH·보안 설정 변경은 필요하지 않습니다.
삭제 없이 후보와 보존 항목을 검산하는 코드
이미 준비된 Python 3.12 환경에서 전체 코드를 storage_preflight_check.py에 복사하고 python3.12 storage_preflight_check.py로 실행합니다. Windows 드라이브를 탐색하거나 파일을 삭제하는 코드가 아닙니다. 후보 표의 숫자와 상태만 계산합니다. reviewed=True는 합성 자료에 부여한 조건이며 실제 사용자의 검토·승인을 대신하지 않습니다.
from copy import deepcopy
import json
volume = {"drive": "C:", "capacity_mb": 48000, "used_mb": 40000}
categories = [17000, 12000, 5000, 2000, 4000]
# id, drive, logical MB, on-disk MB, reason, reviewed, recovery_confirmed
rows = [
["T", "C:", 400, 400, "official_temp", True, True],
["U", "C:", 9000, 9000, "unknown_cache", False, False],
["P", "C:", 5000, 5000, "only_copy", False, False],
["R", "C:", 600, 600, "recycle_review", False, False],
["W", "C:", 3000, 3000, "rollback_needed", False, False],
["D", "D:", 7000, 7000, "official_temp", True, True],
["O", "C:", 12000, 24, "cloud_placeholder", False, False],
]
original = deepcopy(rows)
def classify(items):
seen = set()
result = []
for item in items:
if len(item) != 7:
raise ValueError("항목 칸 수 확인")
ident, drive, logical, disk, reason, reviewed, recovery = item
if ident in seen:
raise ValueError("중복 ID 확인")
seen.add(ident)
if drive not in {"C:", "D:"}:
raise ValueError("볼륨 확인")
if any(type(x) is not int or x < 0 for x in [logical, disk]):
raise ValueError("MB는 0 이상 정수")
if type(reviewed) is not bool or type(recovery) is not bool:
raise ValueError("검토 상태 확인")
if reason not in {"official_temp", "unknown_cache", "only_copy",
"recycle_review", "rollback_needed", "cloud_placeholder"}:
raise ValueError("보존 이유 확인")
if drive != volume["drive"]:
status = "다른 볼륨"
elif reason == "unknown_cache":
status = "확인 보류"
elif reason == "official_temp" and reviewed and recovery:
status = "검토 후보"
else:
status = "보존"
result.append({"id": ident, "판정": status, "디스크 MB": disk})
candidate = sum(x["디스크 MB"] for x in result if x["판정"] == "검토 후보")
return {"행": result, "후보 MB": candidate, "삭제 실행": False}
assert sum(categories) == volume["used_mb"]
assert volume["capacity_mb"] - volume["used_mb"] == 8000
result = classify(rows)
assert result["후보 MB"] == 400
assert [x["판정"] for x in result["행"]] == [
"검토 후보", "확인 보류", "보존", "보존", "보존", "다른 볼륨", "보존"]
not_reviewed = deepcopy(rows)
not_reviewed[0][5] = False
assert classify(not_reviewed)["후보 MB"] == 0
wrong_volume = deepcopy(rows)
wrong_volume[0][1] = "D:"
assert classify(wrong_volume)["후보 MB"] == 0
bad_cases = [deepcopy(rows), deepcopy(rows), deepcopy(rows)]
bad_cases[0][0][3] = -1
bad_cases[1].append(deepcopy(rows[0]))
bad_cases[2][0][1] = "?"
for bad in bad_cases:
try:
classify(bad)
except ValueError:
pass
else:
raise AssertionError("잘못된 목록을 통과시킴")
restored = deepcopy(not_reviewed)
restored[0] = deepcopy(original[0])
assert classify(restored) == result
assert rows == original
print(json.dumps(result, ensure_ascii=False, indent=2))
print("여유 8000MB / 후보 400MB / 조건누락·볼륨변경은 0MB")
print("오류 거부 3건 / 원자료 복구 1건 / 원본 유지 / 삭제 없음")
기대 출력은 후보 400MB이며 보존 4행, 확인 보류 1행, 다른 볼륨 1행입니다. T의 검토 조건을 비우거나 볼륨을 D:로 바꾸면 후보는 0MB입니다. 음수·중복 ID·알 수 없는 볼륨은 거부해야 합니다. 원자료에서 T의 원래 조건을 복구하면 400MB로 돌아옵니다. Linux의 Python 3.12.14에서 정상 목록, 두 조건 반례, 오류 거부 세 건, 복구와 원본 유지 단언을 실제 확인했습니다. 여유 공간 8,000MB는 합성 분류표의 산술값이며 코드가 디스크에서 읽은 값이 아닙니다.
