기본 콘텐츠로 건너뛰기

추천 가젯

MCP 도입 전에 먼저 정해야 하는 것: 개발팀 에이전트 권한·로그·실패 대응 체크리스트

개발 생산성 MCP 도입 전에 먼저 정해야 하는 것: 개발팀 에이전트 권한·로그·실패 대응 체크리스트 에이전트 성능보다 먼저 필요한 운영 설계를 다룹니다. MCP 도입 시 권한 범위, 실행 로그, 롤백 기준을 어떻게 정해야 팀이 안전하게 자동화를 확장할 수 있는지 실무 관점으로 정리합니다. #MCP #AI 에이전트 #권한 설계 #감사 로그 #실패 복구 #개발 생산성 Focus MCP Audience 현업 백엔드·플랫폼 개발자와 테크리드 Angle MCP 서버를 붙이기 전에 팀 단위로 합의해야 할 최소 운영 원칙을 실무 체크리스트로 제시 왜 지금 이 주제를 봐야 할까 코드 작성뿐 아니라 배포·운영 자동화까지 에이전트 적용 범위가 넓어지면서, 기능 데모보다 거버넌스와 책임 경계 설계가 팀 리스크를 좌우하는 시점입니다. MCP 서버를 붙이기 전에 팀 단위로 합의해야 할 최소 운영 원칙을 실무 체크리스트로 제시라는 질문은 이제 특정 팀만의 고민이 아닙니다. 현업 백엔드·플랫폼 개발자와 테크리드 입장에서 보면 기술 선택은 곧 생산성과 연결되고, 작은 의사결정 하나가 유지보수 비용까지 바꿉니다. 특히 MCP 같은 키워드...

파이썬 shutil 완전 정복 📦 — 복사·이동·삭제·압축까지

파이썬 shutil 완전 정복 📦 — 복사·이동·삭제·압축까지 shutil 아이콘

파이썬 shutil 완전 정복 📦

shutil 모듈은 고수준 파일 연산을 제공합니다. 파일/폴더 복사, 이동, 삭제부터 압축 아카이브 생성까지 운영 자동화 스크립트에 꼭 필요한 기능들이 들어있습니다.

1) 파일 복사

import shutil

shutil.copy("a.txt", "b.txt")     # 콘텐츠 복사
shutil.copy2("a.txt", "b2.txt")   # 메타데이터까지 복사
shutil.copyfile("a.txt", "c.txt") # 대상 이름 지정 (메타데이터X)

2) 파일/폴더 이동

import shutil

shutil.move("b.txt", "backup/")   # 파일 이동
shutil.move("mydir", "archive/")  # 디렉터리 이동

3) 디렉터리 트리 복사

import shutil

# 디렉터리 전체 복사
shutil.copytree("src_dir", "dst_dir")

# 기존 dst_dir에 병합하려면 파이썬 3.8+
shutil.copytree("src_dir", "dst_dir", dirs_exist_ok=True)

4) 삭제: rmtree

import shutil, os

# 디렉터리 전체 삭제
shutil.rmtree("old_dir")

# 파일은 os.remove() / Path.unlink() 사용
주의: rmtree는 매우 위험합니다. 항상 경로를 로그로 확인하고, 중요한 경로에서는 dry-run 로직을 추가하세요.

5) 압축/해제

import shutil

# 압축 (형식: zip, tar, gztar, bztar, xztar)
shutil.make_archive("project_backup", "zip", root_dir="project")

# 압축 해제
shutil.unpack_archive("project_backup.zip", extract_dir="restore")

6) 디스크 사용량 확인

import shutil

total, used, free = shutil.disk_usage("/")
print("총 용량:", total//(2**30), "GB")
print("사용 중:", used//(2**30), "GB")
print("남은 용량:", free//(2**30), "GB")

7) 실전 예제

7-1. 특정 확장자만 백업

import shutil, pathlib

src = pathlib.Path("data")
dst = pathlib.Path("backup")
dst.mkdir(exist_ok=True)

for f in src.glob("*.csv"):
    shutil.copy2(f, dst / f.name)

7-2. 주간 로그 아카이브 자동화

import shutil
import datetime

today = datetime.date.today().strftime("%Y%m%d")
shutil.make_archive(f"logs_{today}", "gztar", root_dir="logs")

7-3. 안전 삭제 패턴

import shutil, pathlib

trash = pathlib.Path("output/tmp")
if trash.exists() and trash.is_dir():
    print("삭제할 디렉터리:", trash)
    shutil.rmtree(trash)

요약

  • copy / copy2 / copyfile로 파일 복사
  • move로 이동, copytree로 전체 디렉터리 복사
  • rmtree로 삭제, 반드시 주의 필요
  • make_archive/unpack_archive로 zip/tar 생성·해제
  • disk_usage로 디스크 상태 확인

자주 묻는 질문(FAQ)

Q1. copytree가 symlink도 따라가나요?
A. 기본은 원본 대상 복사입니다. symlinks=True 옵션을 주면 심볼릭 링크 그대로 복사합니다.

Q2. 압축할 때 특정 파일 제외 가능해요?
A. ignore=shutil.ignore_patterns('*.tmp','*.log')를 copytree에 넘겨서 제외할 수 있습니다.

댓글

가장 많이 본 글

Icons by Flaticon