Imaginez un fichier créé avec:
truncate -s1T file
echo test >> file
truncate -s2T file
J'ai maintenant un fichier de 2 tebibytes (qui occupe 4 Ko sur le disque), avec "test\n"
écrit au milieu.
Comment pourrais-je récupérer cela "test"
efficacement, c'est-à-dire sans avoir à lire tout le fichier.
tr -d '\0' < file
Me donnerait le résultat mais cela prendrait des heures.
Ce que j'aimerais, c'est quelque chose qui ne génère que les parties non clairsemées du fichier (donc ci-dessus uniquement "test\n"
ou plus probablement, le bloc de 4 Ko alloué sur le disque qui stocke ces données).
Il existe des API pour savoir quelle partie du fichier est allouée (FIBMAP, FIEMAP, SEEK_HOLE, SEEK_DATA ...), mais quels outils les exposent?
Une solution portable (au moins pour les OS qui prennent en charge ces API) serait appréciée.
tr
parce qu'il lit toujours le fichier entier et fait plus que simplement supprimer les octets NUL.
strings
?