Sur un système Linux, existe-t-il un moyen de concaténer une série de fichiers en un seul fichier exposé pour la lecture et l'écriture sans réellement occuper un autre N octets d'espace disque? J'espérais quelque chose comme monter ces fichiers via loopback / devmapper pour accomplir cela.
J'ai un problème où il y a des fichiers binaires divisés qui peuvent devenir assez volumineux. Je ne veux pas doubler mes besoins en espace avec des E / S de disque massives juste pour lire / écrire temporairement le contenu de ces fichiers en cat
les regroupant tous dans un énorme fichier.
J'ai trouvé ce projet ici , mais il semble avoir un cas d'utilisation très spécifique et dépend aussi de perl
Réponses:
Vous pouvez le faire en combinant les périphériques de boucle et le mappeur de périphériques, grâce à "tout est un fichier". Mais avec une limitation: la taille du fichier ne peut pas être modifiée (car vous ne pouvez pas augmenter les périphériques de bloc en y écrivant). Donc, si vous souhaitez ajouter des données, vous devez créer un périphérique de bloc plus grand et écraser les données factices ajoutées.
Pour étendre le fichier, vous pouvez créer un gros fichier clairsemé et l'utiliser comme périphérique supplémentaire.
la source
Cela pourrait être fait en utilisant un canal nommé sous Linux.
Supposons que vous ayez des fichiers nommés
file0, file1, file2, file3, file4, file5
En C par programmation, vous pouvez faire
Ensuite, utilisez puis utilisez mynewfile comme nous, vous lirez à partir d'un fichier normal.
monfichier est un fichier FIFO
la source
Pour la lecture, vous pouvez
less
créer plusieurs fichiers, puis utiliser les options:n
et:p
pour les parcourir.Pour l'écriture, sans accéder directement aux fichiers, vous ne pourrez pas y écrire.
Vous pouvez également
vim
plusieurs fichiers, et il passera simplement par l'ordre dansvim fileA fileB fileC
lequel ils ont été appelés (c'est-à-dire - fileB ouvert après fileA fermé, fileC ouvert après fileB fermé).la source