파이썬 shutil.copy()와 shutil.copystat()로 파일 복사하기
파이썬 shutil.copy()와 shutil.copystat()로 파일 복사하기
파이썬 파일 복사 기초
파이썬 shutil 모듈은 파일 복사와 메타데이터 보존을 위한 직관적인 함수를 제공합니다. 두 주요 유틸리티는 shutil.copy()와 shutil.copystat()입니다.
copy(src, dst)
src 위치의 파일을 dst 목적지로 복사. 파일 내용은 복제되지만 권한과 타임스탬프는 보존되지 않습니다.
copystat(src, dst)
권한, 타임스탬프, 기타 OS별 속성 등 파일 메타데이터를 src에서 dst로 복사. 성공적인 copy() 후에 호출해 전체 파일 상태를 복제해야 합니다.
단계별 예제
- 소스 파일 위치 확인
현재 작업 디렉터리에 guru99.txt가 존재하는지 확인하고 절대 경로 획득.

import os
from os import path
src_path = path.realpath("guru99.txt")
print("소스:", src_path)
- 백업 이름 생성
원본 파일명에 .bak을 추가해 목적지 경로 구성.
dst_path = src_path + ".bak"
print("목적지:", dst_path)
- 파일 내용 복사
shutil.copy()로 파일 데이터 복제.
import shutil
shutil.copy(src_path, dst_path)
- 메타데이터 복사
내용 복사 후 원본 파일의 권한과 타임스탬프 복제.
shutil.copystat(src_path, dst_path)
- 복사 검증
os.path.getmtime()으로 백업 파일의 최종 수정 시간 표시.
import datetime
mod_time = path.getmtime(dst_path)
print("최종 수정:", datetime.datetime.fromtimestamp(mod_time))
스크립트 실행 시 원본과 같은 권한과 타임스탬프를 가진 guru99.txt.bak이 같은 디렉터리에 생성됩니다.
실용 팁
- 항상
shutil.copy()를 shutil.copystat() 전에 수행—후자는 기존 목적지 파일 필요.
- 다른 파일 시스템 간 작업 시 모든 메타데이터 속성이 지원되지 않을 수 있음;
copystat()는 OS가 노출하는 것만 복사.
- 디렉터리 재귀 복사엔
shutil.copytree()나 copy()와 copystat()를 한 번에 수행하는 shutil.copy2() 고려.
요약
shutil.copy(src, dst)로 파일 내용 복제.
shutil.copystat(src, dst)로 권한, 타임스탬프, 기타 메타데이터 복제.