55 votes

Transfert des fichiers "gros" à partir d'une machine MS-DOS 5.0 (sans retirer le disque dur)

Dans le cadre d'un enregistrement légal, les avocats d'affaires de mon père ont demandé une copie de la base de données des clients à partir d'un ordinateur de travail. Le problème principal est que cet ordinateur de travail est un AOpen datant d'environ 1988...chose, exécutant ce qui semble être une version modifiée de DOS 5.0.

Je suis très faible en MS-DOS réel et en matériel plus ancien en général, mais après quelques manipulations, j'ai enfin trouvé le fichier dont l'avocat avait besoin. Le problème est que la "base de données" des clients (à lire : fichier texte délimité par des espaces) fait environ 3 Mo. C'est trop gros pour une seule disquette, et les données sont dans un seul fichier, ce qui, à ma connaissance très limitée du DOS réel, m'empêcherait de les diviser avec les programmes intégrés à l'ordinateur.

En vérifiant l'arrière de l'ordinateur, j'ai remarqué 1 port série intégré, un port parallèle dans un slot d'extension, et de manière assez inexplicable, une carte réseau avec une prise trop grande pour être du RJ-11. Je n'ai pas vérifié s'il s'agissait réellement d'un RJ-45 car je n'avais pas de câble Ethernet à portée de main à ce moment-là. Cependant, les deux fichiers de programme que j'aurais utilisés (selon mes recherches) pour utiliser le port série sont introuvables sur l'ordinateur. De plus, je n'ai pas la moindre idée de ce que je pourrais faire pour utiliser la carte réseau.

En outre, le simple fait de retirer le disque dur doit être relégué au dernier recours, car l'ordinateur (qui est plus ancien que moi) est utilisé pour les opérations commerciales quotidiennes et devrait être mis hors ligne pendant environ 1 jour en raison de la distance entre l'ordinateur et moi, ce que le "client" ne veut pas particulièrement.

Donc, ma question principale est, avec mes compétences presque inexistantes en DOS (j'ai accidentellement corrompu l'un des "bases de données", et j'aurais été en mauvaise posture si je n'avais pas fait de sauvegarde au préalable), y a-t-il un moyen simple pour moi d'utiliser les ressources susmentionnées (ou quelque chose d'autre que je ne connais pas sur le DOS) pour obtenir ce fichier de 3 Mo hors de l'ordinateur sans retirer le disque dur?

53voto

Rimantas Points 826

Essayez d'utiliser PKZip. C'est un ancien utilitaire DOS qui a fourni certaines des premières capacités de fichiers zip. Vous devriez pouvoir le télécharger sur http://wiki.oldos.org/Downloads/MSDOS. Si la base de données est un fichier texte, alors PKZip devrait vous permettre de compresser suffisamment pour tenir sur une disquette, ou sinon, il devrait permettre de répartir sur plusieurs disques. À ce stade, votre principal problème est de passer de la disquette à un ordinateur plus moderne. Je ne me souviens pas de la syntaxe de PKZip, mais je me souviens qu'il dispose d'une très bonne aide intégrée pour vous montrer exactement comment compresser et décompresser des fichiers. Je recommande la version 2.04g des téléchargements car elle était universellement reconnue comme la meilleure version pendant de nombreuses années.

17voto

Ilmari Karonen Points 1609

Le computer a-t-il QBasic installé? Si c'est le cas, vous pourriez écrire un simple séparateur de fichiers en utilisant un code similaire à celui-ci :

OPEN "database.dat" FOR BINARY AS #1

LET disk% = 1
LET todo& = LOF(1)

DO UNTIL todo& <= 0
    PRINT "Insérez le disque"; disk%; "dans le lecteur A: et appuyez sur entrée.";
    LINE INPUT ""; foo$

    LET file$ = "A:\chunk" + LTRIM$(RTRIM$(STR$(disk%))) + ".dat"
    OPEN file$ FOR BINARY AS #2

    LET done& = 0
    DO UNTIL done& >= 1300000 OR todo& <= 0
        LET buf$ = SPACE$(4096)
        IF todo& < LEN(buf$) THEN LET buf$ = SPACE$(todo&)
        GET #1, , buf$
        PUT #2, , buf$
        LET done& = done& + LEN(buf$)
        LET todo& = todo& - LEN(buf$)
    LOOP

    CLOSE #2
    LET disk% = disk% + 1
    BEEP
LOOP
CLOSE #1

Cela va diviser votre base de données en morceaux de 1,3 Mo, ce qui devrait tenir facilement sur une disquette de 1,44 Mo même après avoir pris en compte les frais administratifs.

Éditer : Voici une version mise à jour utilisant une entrée/sortie binaire, qui fonctionne beaucoup plus rapidement, n'a pas de problèmes avec les caractères Ctrl-Z et traite correctement les fichiers d'entrée dont la taille n'est pas un multiple de la taille du tampon. Je l'ai testé sur DOSBox, et il a correctement séparé un fichier de 3 Mo d'octets aléatoires en morceaux.

10voto

Richard Points 448

Ce n'est que 3 méga-octets, donc utiliser un PKZIP avec du spanning serait la solution la plus simple, comme d'autres l'ont dit. Cependant

Si vous aviez un tel problème et que le lecteur de disquettes NE fonctionnait PAS, utiliser le port série serait assez facile.

Pour utiliser un port série, vous avez besoin d'un programme de terminal DOS, que vous exécuteriez puis utiliseriez un protocole comme ZMODEM, pour transférer le fichier à 115 kbps, ce qui devrait vous prendre moins de 5 minutes à 115200 kbps.

Sur votre ordinateur portable, ou tout autre PC moderne, vous auriez besoin d'un adaptateur USB vers série, d'un câble modem nul, et d'un programme de terminal qui prend en charge le même protocole de transfert de fichiers. Ces câbles devraient vous coûter environ 5 $ chacun dans la plupart des bons magasins d'informatique.

Le meilleur programme de terminal MS-DOS que j'aie jamais utilisé s'appelait Telix version 3.12.

8voto

Adam Rabung Points 3014

PKZIP prend en charge le fractionnement sur plusieurs disquettes et Lenovo dispose d'une application compatible DOS appelée CHOPPER qui permet également d'accomplir cela.

http://support.lenovo.com/en_US/research/hints-or-tips/detail.page?LegacyDocID=DSHY-44QSCB

L'option pkzip pour le fractionnement de disque (à partir des documents) :

-&[f|l|u Fractionner les disques [Format|format Basse densité|Format inconditionnel| ul|w|v] Format inconditionnel basse densité|Effacer le disque|Activer la vérification dos| [s[drive]] Sauvegarder le disque entier avec sous-répertoires (-rp) [lecteur à sauvegarder]]

3voto

gm2 Points 786

Est-ce que l'avocat a spécifié explicitement que la base de données doit être fournie en format électronique?
Sinon, et si ce système essentiel pour la mission a une imprimante fonctionnelle (à matrice de points) attachée, vous pouvez imprimer le fichier texte en utilisant la commande d'impression DOS.
Par exemple:

print c:\file.txt /c /d:lpt1

En supposant une vitesse d'impression de 100 lignes par minute (environ 2.5 pages par minute) et 750 pages de texte (quantité estimée dans un fichier texte de 3Mb selon ce calculateur), vous devriez être en mesure de produire une copie complète en environ 5 heures.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X