Jump to content

Optionally create sparse image files


Donuts

Recommended Posts

Hi,

 

This suggestion has two aspects:

- add an option to create image files sparsely

- add the ability to scan existing image files, marking the all-zero regions as holes

 

Some discs contain a large amount of all-zero data. For example, many game DVDs contain hundreds of megabytes or gigabytes of all-zero data. When creating an ISO image from a DVD like that, writing all the all-zero data to disk wastes disk space and time (especially if writing to, say a slow USB hard drive).

 

If ImgBurn had an option to write image files sparsely that would save disk space and improve working with the file later (it will read faster since the all-zero data does not need to be actually read from disk). In most respects sparse files work just like the corresponding non-sparse file; MD5 checksums match, and all programs should work with them fine. They just use less disk space.

 

NTFS has supported sparse files since Windows 2000, and most Linux filesystems do too (so anyone using ImgBurn with Wine/Linux could benefit). It should be quite easy to implement:

- Use FSCTL_SET_SPARSE on creating the image file

- For each chunk of data to be written, if the data is all-zero, seek forward by that amount in the output file instead of writing the data.

 

For info about sparse files in Windows see

http://msdn.microsoft.com/en-us/library/aa365566%28v=vs.85%29.aspx

And for better/more detailed coverage see

http://www.flexhex.com/docs/articles/sparse-files.phtml

http://www.codeproject.com/KB/files/SparseFiles.aspx

 

 

I mentioned that many game DVDs contain large amounts of all-zero data. If a user has already backed up many such discs, the image files will occupy many GB more than needed on the hard disk. In Windows, it's possible to create "holes" in an already-existing file using FSCTL_SET_ZERO_DATA. Using that, ImgBurn could optimise the disk space usage of existing image files:

- Use FSCTL_SET_SPARSE to tell Windows that the file is sparse.

- Repeat for the whole image file: Read chunk of data. If it's all-zero, use FSCTL_SET_ZERO_DATA to make a hole there.

 

That would free up all the wasted disk space in the image files.

Edited by Donuts
Link to comment
Share on other sites

  • 1 month later...

Yeah, not going to happen, sorry.

Would a (small) donation improve the chance of a sparse-writing option? It would be trivial to implement with a sometimes big disk space and time benefit.

 

Failing that, how about an option to create .dvd and .mds files for a disc, but not create the ISO image. Then I could use another program (which can write sparsely) to read discs into ISO image files.

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.