파일을 동기화하는 일은 일상적인 개발과정 또는 데이터 백업에 필수적일 수 있습니다.
Python의 shutil
모듈은 파일 및 디렉토리 관리를 위한 다양한 유틸리티 기능을 제공합니다. 이번 기사에서는 shutil
을 사용하여 파일 동기화 도구를 만들어 보겠습니다.
동기화 도구 개요
우리는 파일 동기화 도구를 개발하여 소스 디렉토리와 대상 디렉토리 간 파일의 동기화 기능을 제공할 것입니다. 동기화 도구는 소스 디렉토리에 있는 파일 중에 대상 디렉토리에 존재하지 않거나 변경된 파일을 찾아내고, 해당 파일들을 대상 디렉토리로 복사할 것입니다.
shutil
을 이용한 파일 동기화 기능 구현
Python의 shutil
모듈을 이용하면 파일을 복사하고 디렉토리를 생성할 수 있습니다. 이를 이용하여 파일 동기화 기능을 구현해보겠습니다.
Step 1: 필요한 모듈 가져오기
import shutil
import os
Step 2: 소스 디렉토리와 대상 디렉토리 설정하기
source_dir = "/path/to/source/directory"
target_dir = "/path/to/target/directory"
Step 3: 동기화 함수 구현하기
def sync_directories(source_dir, target_dir):
print("Syncing directories...")
# 대상 디렉토리가 존재하지 않으면 생성합니다.
if not os.path.exists(target_dir):
os.makedirs(target_dir)
# 소스 디렉토리 내의 모든 파일을 검사합니다.
for root, dirs, files in os.walk(source_dir):
# 대상 디렉토리 내에 있는 파일들과 비교합니다.
for file in files:
source_path = os.path.join(root, file)
target_path = os.path.join(target_dir, root.replace(source_dir, ""), file)
# 대상 디렉토리에 해당 파일이 존재하지 않거나 변경된 경우 파일을 복사합니다.
if not os.path.exists(target_path) or \
(os.path.exists(target_path) and os.stat(source_path).st_mtime > os.stat(target_path).st_mtime):
print(f"Copying {source_path} to {target_path}")
shutil.copy2(source_path, target_path)
Step 4: 동기화 도구 실행하기
sync_directories(source_dir, target_dir)
이 코드를 실행하면 소스 디렉토리와 대상 디렉토리 간의 파일 동기화가 수행됩니다. 각 파일이 동기화될 때마다 해당 파일의 경로와 대상 디렉토리로의 복사 작업이 출력됩니다.
파일 동기화 도구 테스트
이제 만든 파일 동기화 도구를 테스트해봅시다. 소스 디렉토리에 새로운 파일을 생성하거나, 기존 파일을 수정한 후 동기화 도구를 실행해봅시다. 이때 동기화된 파일이 대상 디렉토리에 복사되는 것을 확인할 수 있습니다.
결론
Python의 shutil
모듈을 이용하여 파일 동기화 도구를 만들어보았습니다. 이 도구를 사용하면 개발 또는 데이터 백업 과정에서 파일을 효율적으로 동기화할 수 있습니다. shutil
외에도 Python에는 다양한 파일 관리 모듈이 있으므로 필요한 기능에 맞게 적절한 모듈을 선택하여 사용하면 좋습니다.