[파이썬] shutil `shutil.copy2()`: 메타데이터와 함께 파일 복사하기

파이썬의 shutil 모듈은 파일 및 디렉토리 복사와 같은 다양한 파일 작업을 수행하는 데 사용됩니다. shutil.copy2() 함수는 파일을 복사할 때 원본 파일의 메타데이터를 유지합니다. 이 기능은 파일의 생성 및 수정 날짜, 사용 권한, 소유자 및 그룹 등과 같은 다양한 정보를 포함합니다. 이를 통해 복사된 파일은 원본과 동일한 속성을 갖게 됩니다.

shutil.copy2() 함수의 사용법

shutil.copy2(src, dst, *, follow_symlinks=True) 함수는 두 개의 매개변수를 받습니다.

import shutil

src = '/path/to/source/file.txt'
dst = '/path/to/destination/file.txt'

shutil.copy2(src, dst)

위의 코드에서 src 경로에 있는 파일이 dst 경로로 복사됩니다. 복사할 파일이 이미 존재하는 경우, dst 파일은 덮어쓰기됩니다.

메타데이터 복사 확인

복사된 파일의 메타데이터를 확인하기 위해 다음과 같은 방법을 사용할 수 있습니다.

import os
import shutil

src = '/path/to/source/file.txt'
dst = '/path/to/destination/file.txt'

shutil.copy2(src, dst)

src_stat = os.stat(src)
dst_stat = os.stat(dst)

print(f"Source file metadata: {src_stat}")
print(f"Destination file metadata: {dst_stat}")

위의 예제에서 os.stat() 함수는 파일의 메타데이터를 포함하는 객체를 반환합니다. src_statdst_stat 객체를 통해 각 파일의 속성들을 확인할 수 있습니다.

주의사항

shutil.copy2() 함수는 원본 파일의 메타데이터를 유지하지만, 파일 자체의 내용은 복사하지 않습니다. 파일의 내용을 함께 복사하려면 shutil.copy() 메서드를 사용해야 합니다.

또한, dst 경로의 디렉토리가 존재하지 않는 경우, shutil.copy2() 함수는 예외를 발생시킵니다. 따라서 디렉토리가 없는 경우에는 해당 디렉토리를 미리 생성해야 합니다.