Une alternative plus rapide à ArchiveMount?

Pour l'instant, j'utilise ArchiveMount pour monter une archive de 123 000 kb contenant plus de 3 millions de files à l'intérieur. Jusqu'à présent, il a été monté pendant 5+ heures et n'est toujours pas terminé.

Y a-t-il une meilleure façon de monter un file .tar.gz ? J'essaie de monter dans un dossier, et décompressé il faut quelques concerts. Je n'ai même pas besoin de mode d'écriture, juste en lecture seule est suffisant.

Vous pouvez également créer une image compressée de squashfs

 mksquashfs /etc squashfs.img -comp xz mkdir img mount -o squashfs,ro squashfs.img img 

Pour ce faire, vous devrez extraire votre archive tar.gz.

L'avantage est aussi que l'image a une meilleure tolérance aux fautes que gz.

Le problème est ici avec le format, le format TAR (Tape ARchive) est conçu pour un access séquentiel, pas un access random. Et gzip est un bon complément à tar, puisqu'il s'agit d'un format de compression basé sur un stream, et non pas pour un access random.

Donc, un outil de haut niveau qui n'interagit pas directement avec les blocs compressés, devra parsingr le file entier à chaque fois qu'il a besoin de lire quelque chose, d'abord pour get la list des files, puis le cache peut-il être invalidé et il le lit à nouveau , puis pour chaque file que vous copyz, il pourrait le lire à nouveau. Vous pouvez créer un outil qui mémorise la position de chaque file, et quels blocs il a besoin de décompresser pour l'get, mais il semble que peu d'entre eux s'en soient souciés.

Si vous voulez que ça aille plus vite, faites un tar tzf file.tar.gz > filelist , ouvrez cette list de files dans vim , gedit ou autre, supprimez les lignes des files dont vous n'avez pas besoin, enregistrez et extrayez-les avec tar xzf file.tar.gz -T filelist -C extracted/ .

Pour get un access random à un file compressé, vous devriez peut-être utiliser zip avec des extensions posix, rar, ou dru8274, squashfs ou même ZFS avec compression activée, ou btrfs si btrfs a obtenu une compression au moment de la lecture.

Mon approche. Si vous disposez de suffisamment d'espace disque disponible sur un lecteur USB externe ou un lecteur de disque dur externe / secondaire avec assez d'espace, il suffit d'extraire votre file .tar.gz. En pensant que vous ne voulez probablement pas 3 millions de files sur votre disque système principal, cela pourrait ralentir les choses. Je recommand que le disque externe dans ce cas a un système de files qui gère un grand nombre de files facilement: penser ReiserFS, ext4 (avec l'option dir_index), XFS, peut-être BtrFS. Il pourrait prendre 1-2 heures pour faire l'extrait, mais vous pourriez simplement aller déjeuner entre-time ou laissez-le fonctionner pendant la nuit; lorsque vous revenez, l'access aux files extraits doit être performant.

Cela ne couvrira pas tous les cas d'utilisation car il limite l'utilisation à un éditeur de text. Mais, si vous ne vous souciez que de l'access en lecture, vous pourriez find cela utile dans certaines situations. vim , lorsqu'il est exécuté sur un tarball, vous montrera la hiérarchie de contenu de l'archive (similaire à la façon dont il affichera une hiérarchie de files s'il est exécuté sur un directory). En sélectionnant un des files de la list, il ouvrira le file sélectionné dans un tampon en lecture seule.

Encore une fois, cela n'offre pas forcément l'access aux images ou autres médias, mais si vous n'avez besoin que de voir le contenu ou d'accéder à des files text uniquement, cela devrait être utile.

Remarque : cela ne fonctionnera pas sur tous les formats d'archive.