On dirait que vous avez un fichier épars là.
Un fichier épars est un type de fichier informatique qui tente d'utiliser plus efficacement l'espace du système de fichiers lorsque le fichier lui-même est en grande partie vide. Pour ce faire, de brèves informations (métadonnées) représentant les blocs vides sont écrites sur le disque au lieu de l'espace "vide" réel qui constitue le bloc, ce qui permet d'utiliser moins d'espace disque. La taille complète du bloc n'est écrite sur le disque comme taille réelle que lorsque le bloc contient des données "réelles" (non vides).
Il y a cette réponse qui dit :
En /var/lib/docker/devicemapper/devicemapper
Le répertoire contient les fichiers sparse loop qui contiennent toutes les autres données que docker monte.
Votre fichier se compose principalement de blocs vides (tous les zéros) et, en tant que fichier épars, il peut tenir dans votre petite partition. Apparemment, tar
lit simplement tous les zéros et les traite. Ils se compressent très bien, de sorte que le fichier résultat ne s'agrandit que très peu lorsque le flux de zéros se termine.
Il existe une option de ligne de commande pour tar
ce qui le rend conscient des fichiers épars. Il est décrit aquí .
-S
--sparse
Dans votre cas, ce qui suit est très important, je pense :
Lors de l'extraction ( ), de tels fichiers ont également été créés à l'endroit où les trous ont été trouvés. ( ) Envisagez d'utiliser --sparse
lors des sauvegardes de systèmes de fichiers, afin d'éviter d'archiver les formes étendues des fichiers stockés de manière éparse dans le système.
Je suppose que vous n'avez pas utilisé le --sparse
donc lorsqu'il s'agit d'extraire votre 100G
sera créé en tant que non-sparse et il ne tiendra pas dans le fichier 20G
partition.