Il s'agit de la commande vdm_decode qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
vdmfec - Bloquer ECC pour les fichiers
SYNOPSIS
vdmfec [-v] [-d] [-b taille de bloc] [-n N] [-k K] [déposer]
vdm_encode [-v] [-b taille de bloc] [-n N] [-k K] [déposer]
vdm_decode [-v] [-b taille de bloc] [-n N] [-k K] [déposer]
DESCRIPTION
vdmfec lit un flux d'entrée et ajoute des blocs de correction d'erreur de sorte que
des sections du flux de sortie peuvent être corrompues et les données récupérées. Par exemple,
les disquettes perdent généralement des secteurs entiers à la fois, ou des groupes de secteurs connexes, ou même
pistes entières. Les données écrites sur une disquette avec ce programme peuvent être récupérées même avec
beaucoup d'erreurs de lecture.
L'algorithme utilisé est un code de correction d'erreur directe (FEC) basé sur Vandermonde (VDM)
matrices dans GF(2^8) dues à Luigi Rizzo. Étant donné les paramètres FEC K et N, avec N plus grand
que K, N blocs sont écrits pour chaque K blocs d'entrée de telle sorte que tous les K blocs soient
suffisant pour reconstruire les données. C'est-à-dire que jusqu'à N - K blocs sur chaque groupe de N
les blocs peuvent être perdus sans perte de données.
La quantité de surcharge dans le flux de sortie est facilement réglable en faisant varier K. N et
blocksize contrôle la quantité totale de données écrites. Selon les types d'erreurs que vous
attendez, différents paramètres peuvent être plus ou moins utiles. Par exemple, vous ne pouvez pas vous attendre à
avoir deux ou trois secteurs défectueux sur chaque piste (si vous le faites, il est temps de remplacer le
disquette !), mais vous pouvez vous attendre à trois secteurs défectueux sur deux ou trois pistes contiguës
(les erreurs de disquette ont tendance à se regrouper).
OPTIONS
-v Imprimer des messages informatifs sur le processus d'encodage ou de décodage pour stderr,
y compris le facteur d'expansion. Utilisation -vv pour obtenir des informations sur chaque bloc étant
lu ou écrit.
-d Décoder l'entrée plutôt que de l'encoder. L'utilisation de cette option équivaut à
invoquer le programme comme vdm_decode.
-b taille de bloc
Définissez la taille du bloc FEC sur blocksize bytes. La taille du bloc peut avoir un « k » ou « K »
ajouté, auquel cas la taille du bloc est définie sur blocksize * 1024 octets. Cette
devrait généralement être un multiple de la taille du bloc de support de sortie ou du secteur (par exemple, 512,
1024, 18K, etc.), et doit être d'au moins 26 octets dans la version 1. Par défaut 1024.
-n N -k K
Réglez les paramètres FEC N et K. N doit être supérieur à 2 et inférieur ou égal à
256. K doit être supérieur à 0 et inférieur à N. Par défaut N=18, K=14.
Notez que les paramètres N, K et Blocksize ne sont PAS écrits sur la sortie ! Vous devez
spécifie le même paramètres lorsque vous exécutez le décodeur. (En fait, le décodeur est capable
de détecter explicitement une valeur K invalide, mais une taille de bloc ou des valeurs N incorrectes
entraîner de mauvais blocs et un échec de décodage.)
Le décodeur est capable de lire à partir de supports non recherchables tels que des tuyaux, cependant, un tampon
les sous-exécutions ne sont pas détectées et entraîneront un échec. De plus, lors de la lecture d'un tuyau, le
le fichier entier doit être lu. La lecture à partir d'un flux pouvant être recherché peut être plus rapide car seul K
les bons blocs sur N doivent être lus.
L'encodeur stocke les identifiants de blocs et de blocs qui sont utilisés pour détecter les blocs dans le désordre, mais
ces erreurs (qui peuvent parfois se produire en raison de la corruption du système de fichiers) ne sont pas corrigées.
Le seul type d'erreur qui peut être corrigé est in endroit corruption de données. Dans
En particulier, les blocs manquants (comme pour les paquets perdus) entraînent un échec du décodage, même lorsque K
de bons blocs sont disponibles. Ce programme est principalement destiné à récupérer les données perdues en raison de
lire les erreurs sur les supports fixes tels que les disquettes ; plusieurs autres programmes et bibliothèques sont
disponibles qui utilisent FEC pour gérer les autres erreurs (généralement des paquets réseau).
EXEMPLES
Considérons une disquette avec 80 pistes, 2 têtes et 18 secteurs de 512 octets par piste (un
disquette 1.44 Mo).
bzip2 < fichier | vdmfec > /dev/fd0
utilise les paramètres par défaut de -b1k -n18 -k14, stocke jusqu'à ~ 1.1 Mo d'entrée compressée
données, écrit une piste (double face) (18K) à la fois, et permet 4 mauvais clusters (8
secteurs) par piste.
vdmfec -d /dev/fd0 | bunzip2 > fichier
récupère le fichier d'origine.
vdm_encode -b18k -n80 -k70 fichier.img > /dev/fd0
écrit l'intégralité de la disquette, stocke jusqu'à ~1.23 Mo de données et autorise plusieurs erreurs sur 10
différentes pistes recto-verso.
vdm_decode -b18k -n80 -k70 /dev/fd0 > fichier.img
récupère les données et lit pas moins de 70 pistes. Notez que vdm_decode se termine avec un
statut non nul en cas de défaillance, de sorte que les constructions telles que
vdm_decode /dev/fd0 > moo && tar -xvf moo
sont possibles.
dd if=/dev/tape ibs=1024 conv=noerror,sync | \
vdm_decode > fichier
Cela peut être nécessaire pour récupérer des données à partir de certains supports non interrogeables. Vous pouvez bien sûr
écrivez simplement la sortie encodée dans un fichier normal, comme dans
tar -cf -rép | gzip | vdm_encode -v > dir.tgz.vdm
DE LA LIGNE BOGUES
Signaler des bogues à Tom Holroyd[email protected]>.
Utilisez vdm_decode en ligne à l'aide des services onworks.net