Extract and reconstruct files from Windows Backup zip sets (Windows 7/8/10 .zip volumes).
Windows Backup splits large files across multiple zip volumes and stores all file content with paths relative to the original drive. This tool scans an entire backup set, groups split-file chunks by original path, reconstructs them in the correct byte order, deduplicates by MD5, categorizes output, and skips large/multi-part cinema videos.
Fully resumable — re-running after an interruption skips already-extracted files.
- Reconstructs split files from multiple zip volumes (correct byte order via zip number sort)
- MD5 deduplication for Photos, Videos, Audio, Documents
- Classifies videos as Camcorder (personal camera rolls) or Cinema (downloads/releases)
- Skips videos above a configurable size threshold (default 700 MB)
- Skips multi-part files (Part2, CD2, Disc3, Vol2, Ep04, etc.)
- Cross-references against an existing movies collection to avoid re-extracting known films
- Retains Java artifacts, Outlook PST files, iPhone backup data, and archives as-is
- Dry-run mode shows what would be extracted without writing anything
- Optional: delete source zips after a clean zero-error run
- Python 3.8+
- No third-party packages — uses standard library only (
zipfile,hashlib,os,re,sys)
# Dry run — see what would be extracted
python winbackup_extract.py --source "D:\Backup Set 2012-05-25" --dest "D:\Extracted"
# Actually extract
python winbackup_extract.py --source "D:\Backup Set 2012-05-25" --dest "D:\Extracted" --execute
# Also cross-reference against an existing movies folder
python winbackup_extract.py \
--source "D:\Backup Set 2012-05-25" \
--dest "D:\Extracted" \
--movies-dir "D:\Movies" \
--execute
# Extract and delete source zips after a clean run
python winbackup_extract.py --source "..." --dest "..." --execute --delete-zips
# Adjust the large-video size threshold (default 700 MB)
python winbackup_extract.py --source "..." --dest "..." --execute --video-size-mb 500<dest>/
Photos/
Audio/
Documents/
Videos/
Camcorder/ ← personal camera roll videos
Cinema/ ← downloaded/release videos
JavaArtifacts/
Outlook_PST/
iPhoneBackups/
Archives/
A video is classified as Camcorder if its filename matches common camera naming patterns (IMG_NNNN, MVI_NNNN, DSC_NNNN, VID_NNNN, MOV_NNNN) and the folder path suggests a camera roll (contains pictures, dcim).
A video is classified as Cinema if its filename contains release signals (720p, 1080p, BluRay, BRRip, x264, XviD, S01E01, etc.) or the folder path suggests a downloads directory.
Cinema videos are skipped if they are already present in the --movies-dir collection (by filename), exceed the size threshold, or match the multi-part pattern.
Re-run with the same --source and --dest flags. The script preloads MD5 hashes of all files already in the destination and skips anything already present by size match or hash match.
Apache License 2.0 — see LICENSE.