In-place data transformations are performed on file data by moving data
blocks from a source file into a temporary file and then from the
temporary file into a destination file each time in a back to front
fashion enabling truncation of the source file while the temporary file
is being expanded and written into. Similar read, write, and truncate
operations are performed between the temporary and destination files as
well resulting in optimized use of available disk and/or memory space. An
initial log file with information such as source file name, size,
transformation type and direction is generated for recovery from a
mid-transaction interruption. Based on a state (truncation, data content)
of the temporary and source files, a status of data transfer prior to
interruption is determined and remaining data transferred.