تمرين إعادة البناء
منشئ بيان نسخ احتياطي
أنشئ manifest JSON للملفات مع الحجم والبصمة دون نسخ الملفات.
python
~30 دقيقة
متوسط
أعد بناء الكود
Rebuild
هذا هو الكود. اكتبه بنفسك.
الكود المرجعي
import argparse
import hashlib
import json
from pathlib import Path
def sha256(path: Path) -> str:
digest = hashlib.sha256()
with path.open("rb") as file:
for chunk in iter(lambda: file.read(1024 * 1024), b""):
digest.update(chunk)
return digest.hexdigest()
def build_manifest(root: Path, pattern: str) -> list[dict[str, object]]:
records = []
for path in sorted(root.rglob(pattern)):
if path.is_file():
records.append({
"path": path.relative_to(root).as_posix(),
"size": path.stat().st_size,
"sha256": sha256(path),
})
return records
def main() -> None:
parser = argparse.ArgumentParser(description="Create a JSON backup manifest without copying files.")
parser.add_argument("root", type=Path)
parser.add_argument("output", type=Path)
parser.add_argument("--glob", default="*")
args = parser.parse_args()
manifest = build_manifest(args.root, args.glob)
args.output.write_text(json.dumps(manifest, indent=2), encoding="utf-8")
print(f"Wrote {len(manifest)} records to {args.output}")
if __name__ == "__main__":
main()اكتب هنا