I'm just going to post this and see if there's any interest.
So, I recently made the jump from WBFS to FAT32 with .WBFS files, and then to NTFS with .ISO files.
I learned a lot about sparse files along the way. I was not familiar with them at all. The basic concept is that the file system can encode a long string of zero-bytes in a condensed format to save space on disk. The down-side to sparse files is that they can become fragmented when they are modified, and have more overhead for operations that write to the file.
Sparse files are useful for scrubbed Wii ISOs on NTFS because it allows the user to have a 4.3gig ISO on the drive but have it only take up it's scrubbed size on disk.
Unfortunately, I've found that copying a sparse file from one NTFS partition to another NTFS partition creates a non-sparse file in the destination.
So, I've written a program that will take a bunch of ISOs (or any files really), and copy them to a specified destination folder. But, instead of just doing a normal copy, it will re-write the destination file as a sparse file. This can be confirmed by right-clicking on the file and choosing 'Properties'. The .ISO file will show that it is 4,699,979,776 bytes. The size on disk will be less than this, possibly by a significant amount.
Interestingly, VB.Net 2008 does not seem to expose the required methods to perform this task using managed code. I've included the source code with the app. Basically, if a string of zero-bytes is encountered that is more than 128,000 bytes (the threshold I came decided to use), the program encodes the string of zero-bytes as sparse zeros. Optionally, the program can also compare the content of the input and output files to ensure they match.
To confirm that this works correctly, I've processed a few .ISO files and then run the input and the output through a file-compare. Everything has come out OK (100% match). However, if you are interested in trying this, I recommend keeping your original file and performing a compare with a third-party tool before getting rid of any of your original ISO files.
Maybe there's already a tool for this that I'm not aware of. Either way, maybe the source will be useful to someone. (if you've never used CopyMemory in VB, this code will be a new experience for you). I'd like to know if there's any interest in this program.
I haven't tested on Vista or Win7 yet.
Application SourceCode and Executable:
http://www.megaupload.com/?d=H0UMU6Y9
So, I recently made the jump from WBFS to FAT32 with .WBFS files, and then to NTFS with .ISO files.
I learned a lot about sparse files along the way. I was not familiar with them at all. The basic concept is that the file system can encode a long string of zero-bytes in a condensed format to save space on disk. The down-side to sparse files is that they can become fragmented when they are modified, and have more overhead for operations that write to the file.
Sparse files are useful for scrubbed Wii ISOs on NTFS because it allows the user to have a 4.3gig ISO on the drive but have it only take up it's scrubbed size on disk.
Unfortunately, I've found that copying a sparse file from one NTFS partition to another NTFS partition creates a non-sparse file in the destination.
So, I've written a program that will take a bunch of ISOs (or any files really), and copy them to a specified destination folder. But, instead of just doing a normal copy, it will re-write the destination file as a sparse file. This can be confirmed by right-clicking on the file and choosing 'Properties'. The .ISO file will show that it is 4,699,979,776 bytes. The size on disk will be less than this, possibly by a significant amount.
Interestingly, VB.Net 2008 does not seem to expose the required methods to perform this task using managed code. I've included the source code with the app. Basically, if a string of zero-bytes is encountered that is more than 128,000 bytes (the threshold I came decided to use), the program encodes the string of zero-bytes as sparse zeros. Optionally, the program can also compare the content of the input and output files to ensure they match.
To confirm that this works correctly, I've processed a few .ISO files and then run the input and the output through a file-compare. Everything has come out OK (100% match). However, if you are interested in trying this, I recommend keeping your original file and performing a compare with a third-party tool before getting rid of any of your original ISO files.
Maybe there's already a tool for this that I'm not aware of. Either way, maybe the source will be useful to someone. (if you've never used CopyMemory in VB, this code will be a new experience for you). I'd like to know if there's any interest in this program.
I haven't tested on Vista or Win7 yet.
Application SourceCode and Executable:
http://www.megaupload.com/?d=H0UMU6Y9