stat — 파일 메타데이터 확인

Linux / 파일 및 디스크 관리 / stat.html

파일 및 디스크 관리원문등록 2026-10-18

💬 "stat 명령어"

ls -l은 요약이고, stat은 파일의 모든 메타데이터를 정확히 보여줍니다. 권한·시각·inode 문제를 볼 때 씁니다.

특히 접근/수정/변경 시각(Atime/Mtime/Ctime)을 구분해서 보는 것이 장애 분석에 중요합니다.

  • 개념: 파일의 크기, inode 번호, 링크 수, 소유자, 권한, 시각 정보를 모두 출력합니다.
  • Access: 마지막으로 읽은 시각입니다. relatime 옵션 때문에 항상 갱신되지는 않습니다.
  • Modify: 내용이 마지막으로 바뀐 시각입니다. 로그/배포 시점 판단에 가장 유용합니다.
  • Change: 메타데이터(권한·소유자)가 바뀐 시각입니다.
  • Size / Blocks: 논리 크기와 실제 할당 블록입니다. 스파스 파일 확인에 씁니다.

자주 쓰는 옵션

옵션설명
-c <형식>지정한 형식으로 원하는 항목만 출력
-f파일이 아니라 파일시스템 정보를 출력
--printf개행을 직접 제어해 출력

필수 명령어 조합 3가지

  • stat -c '%n %s %U:%G %a' /var/www/html/index.php — 이름·크기·소유자·권한만 한 줄로 뽑기
  • stat -c '%n %y' /var/log/nginx/*.log — 로그별 마지막 수정 시각 비교
  • stat -f -c '%T %a %b' / — 파일시스템 타입과 블록 통계 확인

💬 "이슈 티켓에 남길 근거를 만드는 예시 알려줘"

실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.

1단계 · 파일 기준 정보 확인

대상 파일의 권한과 소유자, 시각을 확인합니다.

stat /var/www/html/index.php

2단계 · 필요한 항목만 추출

여러 파일을 비교할 때 형식 출력을 씁니다.

stat -c '%n %U:%G %a %y' /var/www/html/*.php

3단계 · 배포 전후 비교

배포 시각과 파일 수정 시각이 맞는지 검증합니다.

stat -c '%n %y' /opt/app/current/public/index.php

실무에서는 이렇게 씁니다

1. 권한 원인 추적

상황 — 웹서버가 특정 파일을 읽지 못해 403이 발생합니다.

stat -c '%n %U:%G %a' /var/www/html/uploads

결과 — 소유자가 root:root이고 권한이 700이면 www-data가 접근할 수 없음을 바로 확인합니다.

포인트 — 403/500 문제의 절반은 권한입니다. stat으로 소유자와 권한을 먼저 봅니다.

2. 배포 시각 검증

상황 — 롤백 후 실제로 이전 파일이 반영됐는지 확인해야 합니다.

stat -c '%n %y' /opt/app/current/public/index.php

결과 — Modify 시각이 롤백한 릴리스 시각과 일치하는지 확인합니다.

포인트 — 캐시가 남아 있으면 시각만 봐서는 부족합니다. 링크 대상과 함께 확인합니다.

주의할 점

  • Access 시각은 relatime 설정 때문에 항상 갱신되지 않아 신뢰도가 낮습니다.
  • 심볼릭 링크는 기본적으로 대상 파일의 정보를 보여줍니다. 링크 자체를 보려면 -L 대신 기본 동작을 확인합니다.
  • Ctime은 변경 시각이지 생성 시각이 아닙니다. 리눅스에는 생성 시각을 기본 제공하지 않는 파일시스템이 있습니다.

실제 실행 화면

파일의 소유자·권한·시각과 로그 파일의 크기·시각을 확인한 결과입니다.

stat 명령어 실행 결과: 파일 메타데이터와 시각 정보

실제 운영 중인 서버

이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.