Przesyłanie „dużego” pliku poza maszynę MS-DOS 5.0 (bez wyjmowania dysku twardego)


55

W ramach pewnego rodzaju legalnej ewidencji prawnicy biznesowi mojego ojca poprosili o kopię bazy danych klientów z komputera roboczego. Zasadniczy problem polega na tym, że ten komputer roboczy to około AOpen z 1988 roku, działający jak zmodyfikowana wersja DOS 5.0.

Jestem bardzo słaby w stosunku do rzeczywistego MS-DOS i ogólnie starszego sprzętu, ale po jakimś kręceniu się w końcu znalazłem plik, którego potrzebował prawnik. Problem polega na tym, że „baza danych” klienta (czytaj: plik tekstowy rozdzielany spacją) ma wielkość około 3 MB. Jest to za duże na jedną dyskietkę, a dane znajdują się w jednym pliku, co, przy mojej bardzo ograniczonej wiedzy na temat rzeczywistego DOS, uniemożliwiłoby mi podzielenie go za pomocą wbudowanych programów na komputerze.

Sprawdzając tył komputera, zauważyłem 1 wbudowany port szeregowy, port równoległy w gnieździe rozszerzeń i nieco niewytłumaczalne, kartę sieciową z gniazdem zbyt dużym, aby mogła być RJ-11. Nie testowałem, czy to rzeczywiście RJ-45, ponieważ nie miałem wtedy pod ręką kabla Ethernet. Jednak na komputerze nie ma dwóch plików programu, których używałbym (zgodnie z moimi badaniami) do korzystania z portu szeregowego. Co więcej, nie mam najmniejszego pojęcia, co zrobiłbym, aby wykorzystać NIC.

Co więcej, komplikowanie problemów, po prostu wyciągnięcie dysku twardego musi zostać przeniesione do ostateczności, ponieważ komputer (starszy ode mnie) jest używany do codziennych operacji biznesowych i musiałby zostać wyłączony na około 1 dzień z powodu odległości między komputer i ja, których „klient” szczególnie nie chce.

Więc sedno mojego pytania polega na tym, że przy mojej prawie żadnej nieistniejącej umiejętności w DOS (przypadkowo zepsułem jedną z „baz danych” i byłbym w złym stanie, gdybym wcześniej nie zrobił kopii zapasowej), czy istnieje prosty sposób Czy mogę wykorzystać wyżej wymienione zasoby (lub coś innego, czego nie wiem o DOS), aby usunąć ten 3-megapikselowy plik z komputera bez konieczności wyciągania dysku twardego?


13
Najłatwiejszym rozwiązaniem byłoby po prostu pobranie najnowszej pełnej kopii zapasowej. Nie mów mi, że nie ma kopii zapasowej tego pliku o znaczeniu krytycznym i żyje on na komputerze należącym do domu spokojnej starości.
emory

14
+1 za dosprawidłowe użycie tagu!
CVn

13
To powinno być przebudzenie. Jeśli nie mogą oszczędzić komputera przez krótki czas, ponieważ jest w codziennym użytkowaniu, co zrobią, gdy się przekręci i straci wszystkie swoje dane? Im dłużej go zostawiają, tym bardziej prawdopodobne jest, że tak się stanie. Skorzystaj z okazji, aby zmusić ich do aktualizacji i regularnych kopii zapasowych (które następnie można łatwo skopiować i wysłać do prawnika)
JamesRyan

3
Po prostu żal mi biednego faceta używającego dosboxa z lat 80. jako swojej codziennej stacji roboczej
beznadziejnie

2
„Komputer (starszy ode mnie) służy do codziennych operacji biznesowych”: to zdanie sprawiło, że zadrżałem.
Ten Brazylijczyk

Odpowiedzi:


53

Spróbuj użyć PKZip. To stare narzędzie DOS, które zapewniło jedne z najwcześniejszych możliwości plików zip. Powinieneś być w stanie pobrać go na http://wiki.oldos.org/Downloads/MSDOS . Jeśli baza danych jest plikiem tekstowym, to PKZip powinien pozwolić ci skompresować wystarczająco dużo, aby dostać się na dyskietkę, a jeśli nie, to powinien pozwolić na łączenie wielu dysków. W tym momencie głównym problemem jest przejście z dyskietki na bardziej nowoczesny komputer. Nie pamiętam składni PKZip, ale pamiętam, że ma bardzo dobrą wbudowaną pomoc, która pokazuje dokładnie, jak spakować i rozpakować pliki. Z pobrań polecam wersję 2.04g, ponieważ od wielu lat jest ona uważana za najlepszą wersję.


12
Nawet jeśli nie możesz go skompresować wystarczająco, aby zmieściło się na jednej dyskietce, powinieneś być w stanie utworzyć zestaw woluminów zip.
daxlerod

2
jeśli jest to czysty tekst, powinien dość dobrze się kompresować
Keltari,

24
@Tarkenfire: Wszystko w DOS-ie nie jest zwykłym tekstem! Jak istniałyby programy, nie mówiąc już o praktycznie każdym formacie pliku binarnego?
Karan

1
Usunięcie danych z dyskietki nie powinno być zbyt trudne; Napędy dyskietek USB są dość tanie.
Aaron Miller,

5
Aby zaktualizować, pkzip działał jak urok; to skompresowany plik ~ 3000kb około 300 KB, prawdopodobnie dlatego, że był to plik tekstowy czasoprzestrzeni wytyczone z 2700kb białych znaków ...
Tarkenfire

17

Czy na komputerze jest zainstalowany QBasic ? Jeśli tak, możesz napisać w nim prosty rozdzielacz plików, coś takiego:

OPEN "database.dat" FOR BINARY AS #1

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

DO UNTIL todo& <= 0
    PRINT "Insert disk"; disk%; "into drive A: and press enter.";
    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

Spowoduje to podzielenie bazy danych na fragmenty o wielkości 1,3 MB, które powinny wygodnie zmieścić się na dyskietce 1,44 MB, nawet po uwzględnieniu obciążenia FAT.

Edycja: Oto zaktualizowana wersja wykorzystująca binarne operacje we / wy, która działa o wiele szybciej, nie ma problemów ze znakami Ctrl-Z i poprawnie obsługuje pliki wejściowe, których rozmiar nie jest wielokrotnością wielkości bufora. Przetestowałem to pod DOSBox i poprawnie podzieliło 3 MB losowych bajtów na części.


IIRC, fragmenty można ponownie złożyć za pomocą flagi binarnej i kopii dos, np copy /b foo_1.chunk + /b foo_2.chunk {...}. Nie pamiętam, czy wersja kopii Dos 5 ma flagę binarną ...
horatio

1
także, jeśli ty open for binaryi czytasz / piszesz za pomocą geti put, nie masz żadnych „problemów z magicznymi postaciami”
horatio

@horatio: Dzięki za wskazówkę. Okazuje się również, że jest znacznie szybszy (chociaż podejrzewam, że różnica może być nieistotna przy pisaniu na prawdziwe dyskietki).
Ilmari Karonen,

10

To tylko 3 megabajty, więc użycie PKZIP z rozpinaniem byłoby najłatwiejszym rozwiązaniem, jak powiedzieli inni. jednak

Gdybyś miał taki problem, a stacja dyskietek NIE działała, użycie portu szeregowego byłoby dość łatwe.

Aby użyć portu szeregowego, potrzebujesz programu terminalowego DOS, a następnie uruchom go, a następnie użyj protokołu takiego jak ZMODEM, aby przesłać plik z prędkością 115 kb / s, co powinno zająć mniej niż 5 minut przy 115200 kb / s.

Na laptopie lub innym nowoczesnym komputerze potrzebny byłby adapter USB-szeregowy, kabel zerowy modem i program terminalowy obsługujący ten sam protokół przesyłania plików. Te kable powinny dać ci około 5 dolarów za każdy w większości porządnych sklepów komputerowych.

Najlepszy program terminalowy MS-DOS, jaki kiedykolwiek użyłem, nazywał się Telix wersja 3.12.


1
Telix był naprawdę fajnym programem i pamiętam też korzystanie z Terminate. Zastanawiam się, czy kiedykolwiek tego używałeś? Czasami tęsknię za moimi ulubionymi modemami BBSes i USR. Pamiętaj, że kiedyś miałeś obsesję na punkcie tworzenia animowanej sztuki ASCII!
Karan


3

Czy pełnomocnik wyraźnie stwierdził, że baza danych ma być dostarczana w formie elektronicznej?
Jeśli nie, a jeśli ten krytyczny system ma podłączoną funkcjonalną drukarkę (matrycę punktową), możesz wydrukować plik tekstowy za pomocą polecenia drukowania DOS .
Na przykład:

wydrukuj c: \ plik.txt / c / d: lpt1

Zakładając prędkość drukarki 100 l / min (~ 2,5 str./min) i 750 stron tekstu (szacunkowa ilość w pliku tekstowym 3 Mb zgodnie z tym kalkulatorem ), to powinieneś być w stanie wykonać pełną kopię w ciągu około 5 godzin.


2

Być może mógłbyś podzielić plik tekstowy ręcznie za pomocą narzędzi już obecnych w DOS i zrekombinować je na komputerze docelowym? Ponieważ to wszystko ASCII, powinno to być o wiele łatwiejsze niż próba podzielenia pliku binarnego.


3
Próbowałem dwóch edytorów, które mogłem znaleźć w systemie, ale obaj wyrzucili mi błędy „zabrakło pamięci”, zakładam, ponieważ próbowali załadować cały plik 3 MB do pamięci w tym samym czasie.
Tarkenfire,

Nie użyłbym edytora, ale myślę, że niektóre argumenty na XCOPY, WIĘCEJ, a może nawet TYPE mogą pozwolić ci na brutalne podzielenie pliku. (oczywiście PKZIP jest znacznie łatwiejszy i prawie na pewno działa, ale może to być fajna próba)
Javier


2

Przed upragnionymi dniami wszechobecnych układów USB i karty sieciowej na każdym komputerze pamiętam, że z miłością podłączyłem dwa komputery za pomocą kabli szeregowych i równoległych do przesyłania danych na dużą skalę.

Musiałem znaleźć w Google najwygodniejszą metodę w obecnym wieku, ale wygląda ona trochę podobnie do tego, co pamiętam.

File Maven to narzędzie do przesyłania plików, które umożliwia wykonywanie transferów kablem szeregowym lub równoległym. Prawdopodobnie nie masz już nic wokół portu szeregowego, więc adapter szeregowy na USB zapewni Ci połączenie z nowoczesną technologią.

Ten kabel może potrzebować adaptera zmiany płci, nie pamiętam, którą część miał komputer.

Chcę wstać i oklaskiwać każdego producenta odpowiedzialnego za dysk twardy. Dysk twardy 25-letni nadal działa. Czy możesz sobie wyobrazić, że dzisiejsze dyski SATA nadal działają w 2038 roku?


1

Zawsze możesz znaleźć 25-pinowy napęd Zip / Jaz na craigslist lub ebay. Istnieją jednak lepsze metody niż to. :)


1

Co powiesz na próbę znalezienia starej wersji Laplink, przy czym klient jest nową wersją działającą na komputerze, na której chcesz te dane. Oprogramowanie dostępne tutaj: http://www.briggsoft.com/fmdos.htm


Nowoczesne komputery nie miałyby nawet portu szeregowego, nie mówiąc już o porcie równoległym, ale myślę, że dzięki adapterowi USB-na-seryjny laplink byłby dobrym pomysłem. O wiele łatwiejszy sposób na przeniesienie zawartości całego dysku twardego lub zawartości całego folderu niż pomysł Telix + ZMODEM, ale czy takie podejście jest technicznie PRAWNE? „LapLink” marka wciąż istnieje i być może nie lubią ludzi pobierających swoje pliki DOS.
Warren P
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.