From 028b48cd9a3198633ba8f4f64010f92680ac61e5 Mon Sep 17 00:00:00 2001 From: swrring Date: Mon, 9 Nov 2026 10:48:38 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=80=EC=A6=9D=20=EC=82=AC=EB=B3=B8=20?= =?UTF-8?q?=EB=AF=B8=EB=9F=AC=20=EB=8F=84=EA=B5=AC(Tools/mirror=5Fverify.p?= =?UTF-8?q?y)=20=E2=80=94=20Assets=C2=B7Packages=C2=B7ProjectSettings=20?= =?UTF-8?q?=EB=B0=94=EB=80=90=20=ED=8C=8C=EC=9D=BC=EB=A7=8C=20=EB=B3=B5?= =?UTF-8?q?=EC=82=AC=20=C2=B7=20=EC=97=86=EB=8A=94=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C(UI=20=EC=9E=AC=EC=84=A4=EA=B3=84=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EC=9D=B4=EA=B4=80=EC=9A=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- Tools/mirror_verify.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Tools/mirror_verify.py 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)