En resumen:
--dig-holeshace que un archivo sea disperso sin modificar su contenido (como lo ve un programa que lo lee).--punch-holecrea un agujero en un archivo, posiblemente modificando los datos existentes.
La diferencia es que --dig-holes analiza el archivo en busca de áreas que se pueden hacer dispersas (usando --offset y --length , si se proporciona, para indicar el rango en el archivo a analizar), mientras que --punch-holes usa --offset y --length para realmente poner a cero una parte de un archivo para crear un agujero.
Tenga en cuenta también el plural "cavar agujeros" frente al singular "perforar agujero".
Del manual, con respecto a --dig-holes :
Puedes pensar en esta opción como si hicieras un cp --sparse y luego cambiar el nombre del archivo de destino al original, sin necesidad de espacio adicional en el disco.
--dig-holes no cambia el contenido del archivo, como se determina cuando se lee el archivo:solo identifica series de ceros que se pueden reemplazar con agujeros.
--punch-hole usa el --offset y --length argumentos para perforar un agujero en un archivo, independientemente de lo que contenga el archivo en ese desplazamiento:funciona incluso si el archivo contiene ceros allí, pero el contenido del archivo cambia como resultado. Teniendo en cuenta su archivo de ejemplo, ejecutando fallocate --punch-hole --offset 2 --length 10 reemplazaría diez a caracteres con ceros, comenzando después del segundo.