CDGroup merges related disc images to reduce combined file size.
This program takes a directory of images, processing them to remove redundancies to save space. It does this in four stages:
Stage 1: Split CD images (2352 byte/sector images) into their component parts. Model non-data parts where possible (ecc, edc, etc)
Stage 2: Group each data sector size to remove repeated aligned data (de-duplicate sectors)
Stage 3: Diff grouped files to remove repeated non-aligned data
Stage 4: Compress resulting files
Notes:
Stage 1 takes advantage of redundancies in the CD format
Stage 2 takes advantage of aligned redunduncies across related images
Stage 3 takes advantage of non-aligned redunduncies across related images
Stage 4 takes advantage of uncompressed data in the images
Each stage acts on the output of the previous stage
Features:
Reduces storage footprint by de-duplication of sectors (unique sectors are only stored once)
CDs, DVDs and Blu-Rays can be merged (any .iso with 2048 bytes/sector, and CDs .bin with 2352 bytes/sector)
Smart handling of 2352 byte/sector CD images (recognises audio, M0, M1, M2, M2F1, M2F2 sector types. Removes non-data portions of sectors such as ecc if it can be regenerated losslessly)
A mixture of 2352 and 2048 byte/sector images can be merged together
Identical input images should result in identical merged files
Images represented within the merged files can be renamed without unmerging (names stored in a text file *.hsa)
Supports merging combined image size of up to 4TiB
External diff support (jojodiff)
External compressor / decompressor support (7z)
Settings chosen to try and balance size reduction with practical time / hardware constraints
Usage: Requires java to run. Can be used as supplied in three ways:
Use jar files directly
java -jar CDGroup.jar dir_to_merge
java -jar unCDGroup.jar hsa_fileUse bat files (windows)
CDGroup.bat dir_to_merge
unCDGroup.bat hsa_fileUse sh files (linux)
CDGroup.sh dir_to_merge
unCDGroup.sh hsa_file
Note: v0.4.x marks a new format, different to that of v0.3.x.