On 10/04/10 01:28, Heinrich Langos wrote: > Hello Andreas, Samuel and list, > > sorry to pick up such an old thread, but I stumbled upon it while > looking for an efficient way to "re-sparse" files that contain a > lot of zero blocks but > 1) had already been expanded > or > 2) are being expanded due to pipes. > > On Sun, Dec 30, 2007 at 10:19:54AM +0100, Andreas Schwab wrote: >> Samuel Thibault <[email protected]> writes: >> >>> Some time ago, I wrote a conv=sparse option for dd, attached is the >>> patch. >> >> How is it different from cp --sparse=always? > > I'd say in enough ways to make such an option highly desirable. > > a) "dd" will maintain an existing of=target file including the inode > number, thus respecting existing hard links. "cp" will depending > on the other options given (e.g. "-a") maintain or break existing > hard links to an existing target file.
I don't think that's possible as holes can only be created at the end of a file. Well I think NTFS supports punching holes in the "middle" but it's not common. > > b) "dd" could read a stream from a device or stdin and write it directly > to a sparse file. no need to "dd" from e.g. a block device to a file and > afterwards do a "cp --sparse=always file sparse-file". this will save a > lot of disk space, io operations and time. This seems to work: cp --sparse=always /dev/stdin file cheers, Pádraig.
