E2compr works by conceptually dividing a file into sections of n blocks (where n is constant for a given file). We call these sections `clusters', and n the `cluster size'. E2compr replaces non-hole data in a cluster with blocks of compressed data followed by one or more holes. Suppose we have a file that looks like this (11 blocks of data), and that the cluster size is 4 blocks:
block#
------
[0] data
[1] data
[2] data
[3] data
[4] data
[5] data
[6] data
[7] data
[8] data
[9] data
[10] data
If we want to compress the file, we cut the file into clusters and compress every cluster individually:
block#
------
[0] data <- cluster #0
[1] data
[2] data
[3] data
[4] data <- cluster #1
[5] data
[6] data
[7] data
[8] data <- cluster #2
[9] data
[10] data
Suppose the cluster #0 compressed into 1 block, the cluster #1 into 2 blocks and the cluster #3 into 2 blocks. We just replace the uncompressed blocks with the compressed one, at the same place, and remove the unneeded blocks. The file becomes like this:
block# bytes
------ -----
[0] compressed data <- cluster #0
[1] missing block
[2] missing block
[3] missing block
[4] compressed data <- cluster #1
[5] compressed data
[6] missing block
[7] missing block
[8] compressed data <- cluster #2
[9] compressed data
[10] missing block
The file now uses only 5 blocks on the disk.
Go to the first, previous, next, last section, table of contents.