diff --git a/Tools/mirror_verify.py b/Tools/mirror_verify.py new file mode 100644 index 00000000..4fb917f1 --- /dev/null +++ b/Tools/mirror_verify.py @@ -0,0 +1,31 @@ +"""검증 사본 동기화 — 본체의 Assets · Packages · ProjectSettings 를 사본(기본 E:/Nerdnavis/_tks_verify)에 미러(바뀐 파일만 복사 · 본체에 없는 파일 삭제). + +PD 에디터가 본체를 열고 있어도 사본에서 배치·GUI 캡처를 돌리기 위한 것(프로젝트 CLAUDE.md 「에디터가 열려 있을 때」 · robocopy 는 bash 에서 깨져 python 으로). +실행: -I Tools/mirror_verify.py [본체] [사본] +""" +import os +import shutil +import sys + +src = sys.argv[1] if len(sys.argv) > 1 else os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +dst = sys.argv[2] if len(sys.argv) > 2 else r"E:/Nerdnavis/_tks_verify" +cp = rm = 0 +for top in ["Assets", "Packages", "ProjectSettings"]: + s0, d0 = os.path.join(src, top), os.path.join(dst, top) + for root, dirs, files in os.walk(s0): + dd = os.path.join(d0, os.path.relpath(root, s0)) + os.makedirs(dd, exist_ok=True) + for f in files: + a, b = os.path.join(root, f), os.path.join(dd, f) + if not os.path.exists(b) or os.path.getsize(a) != os.path.getsize(b) or int(os.path.getmtime(a)) != int(os.path.getmtime(b)): + shutil.copy2(a, b) + cp += 1 + for root, dirs, files in os.walk(d0, topdown=False): + sr = os.path.join(s0, os.path.relpath(root, d0)) + for f in files: + if not os.path.exists(os.path.join(sr, f)): + os.remove(os.path.join(root, f)) + rm += 1 + if not os.path.exists(sr): + os.rmdir(root) +print("copied", cp, "removed", rm, "->", dst)