Comment créer un système de fichiers peu coûteux

4

J'ai un trousseau USB avec une taille de 7,5 Go et je dois copier un fichier dessus avec une taille de 7,4 Go. Mais je ne peux pas parce que les superblocs consomment 0,5 Go d'espace.

kravemir
la source
1
Est - ce qu'il a à être spécifiquement ext4? J'essaierais probablement ext2: quelque chose comme mke2fs -t ext2 -N 64 -O sparse_super. Cela dit, je ne suis pas sûr que vous puissiez réduire le temps système du système de fichiers autant que nécessaire (jusqu'à moins de 1,3% de la capacité du périphérique).
un CVn
Je me fiche du système de fichiers s'il est capable de gérer des fichiers dont la taille est supérieure à 4 Go.
Kravemir
3
Avez-vous besoin d'un système de fichiers? Pourquoi ne pas placer tous les fichiers dans une archive tar et écrire cette archive directement sur le périphérique bloc?
Marco
@Marco C'est une approche intéressante qui est suffisamment folle pour que cela fonctionne. Vous voudrez peut-être répondre à cette question, car elle répond clairement à l'énoncé du problème du PO, même s'il ne s'agit pas de la question littérale.
un CVn
@ MichaelKjörling "C'est une approche intéressante qui est suffisamment folle pour que cela fonctionne." Rien de fou à ce sujet. C'était très courant en enregistrant des choses sur une bande.
dmckee

Réponses:

5

Vous n'avez pas besoin d'un système de fichiers pour écrire des données sur un périphérique. Vous pouvez simplement utiliser tarpour créer une archive qui stocke votre structure de répertoire et toutes les métadonnées et l'écrire sur le périphérique.

Écriture de données

Voici sdbun exemple de la clé USB de mon système, ajustez-la en fonction de votre configuration.

tar cf /dev/sdb <some_directory>

Lecture de données

Vous pouvez directement utiliser tarpour lire les données de l'appareil:

tar xf /dev/sdb

Dans mes expériences, cela lit toujours le périphérique de bloc entier, pas seulement les données de l'archive tar. Si vous savez que votre appareil a 8 Go mais que vous n’avez sauvegardé que, disons 3 Go, vous pouvez utiliser ddpour éviter de lire tout l’appareil:

dd if=/dev/sdb bs=1M count=3072 | tar xf -

Notes de côté

Essayez de compresser les données autant que possible. Cela peut prendre beaucoup de temps, mais peut-être que tout ira bien sur un lecteur avec un système de fichiers ordinaire. Je conseillerais d'utiliser 7-Zip, c'est lent mais il a un taux de compression élevé. Voici un exemple:

7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z <some_directory>
Marco
la source
1
Il s'agit d'une vidéo HD comprimée, de sorte qu'une autre compression serait une perte de temps. Comment puis-je l'écrire sans compression?
kravemir
1
Utilisez simplement les méthodes tardécrites dans “Ecriture de données” et “Lecture de données” et ignorez ce que j'ai écrit dans “Notes annexes”. Tar ne compresse pas par défaut.
Marco
Je vais l'essayer aujourd'hui. Si cela fonctionne, j'accepterai votre question :)
kravemir
5

Étant donné que vous n'avez pas vraiment besoin d'un système de fichiers ext4, mais que vous posez vraiment des questions sur un système de fichiers permettant de réduire les frais généraux au-dessous de 1,3% de la capacité du périphérique (100 Mo sur 7,5 Go), il y a plusieurs solutions. options de frais généraux. Les deux solutions les plus évidentes qui répondent à vos critères de capacité à gérer un fichier unique de 7,4 Go sont soit ext2 avec un faible nombre d'inodes et de superblocs crépus, soit un système de fichiers FAT32 peu onéreux.

EDIT: Il semble que je me suis trompé au sujet de la taille maximale du fichier FAT32, mais je le laisse ici au cas où quelqu'un le verrait et pourrait vivre avec la limitation qu'un fichier unique ne puisse pas dépasser 2 ^ 32 - 1 (4 Go - 1) octets.

Pour un système de fichiers ext2 peu onéreux, essayez quelque chose du genre mke2fs -t ext2 -N 8 -O sparse_super. Le -N 8spécifie le nombre d'inodes sur le système de fichiers. Je ne sais pas à quel point ça va baisser, alors ce bouton peut nécessiter un peu de tournage.

Pour un système de fichiers FAT32 allégé, essayez quelque chose comme mkdosfs -F 32 -f 1 -r 8 -S 32768 -s 128 -a. Cela créera un -F 32FAT32 (qui permet la taille de fichier dont vous avez besoin), avec -f 1un seul FAT, -r 88 entrées de répertoire racine, -S 32768une taille de secteur logique de 32 Ko, -s 128128 secteurs par cluster (vous pourrez peut-être l'augmenter davantage) et -adésactiver alignement de la structure de données.

un CVn
la source
1
FAT32 ne fonctionnera pas (il doit copier des fichiers> 4 Go).
Renan
1
@ Renan Bonne prise. Je pensais que l'augmentation de la taille du secteur logique contournerait cette limitation, mais il semble que ce ne soit pas le cas en raison du champ de taille d'octet de fichier 32 bits.
un CVn