Portál AbcLinuxu, 3. května 2025 10:22
Ještě něco o magnetických páskách pro poučení budoucích generací.
Několik let jsme zapisovali na pásky DLT v OS Solaris 7 pomocí cpio
.
Mechaniku jsme přenesli k linuxovému stroji a chtěli jsme data
(pokud možno) přečíst.
Zápis v Solarisu se dělal takhle:
find . -type f -print | cpio -oacB > /dev/rmt/1n
To B ve volbách má znamenat prodloužení délky bloku na 5120B místo defaultních 512B .
Teď v linuxu máme pásku připojenou jako /dev/nst1, ovladač je modul st čili
Generic SCSI tape. Udělal jsem pár neúspěšných pokusů. Čtení z pásky pomocí cat,
cpio, cp, <, hlásilo podle délky bloku nastavené pomocí
mt setblk
buď I/O error nebo Cannot allocate memory. V messages se objevovaly
legrační hlášky:
st1: Failed to read 5120 byte block with 4096 byte transfer
nebo
st1: Failed to read 5120 byte block with 512 byte transfer
Tak vidíte, modul st věděl, že má číst blok délky 5120, ale nějak sám od sebe to neuměl. Odkud to věděl? Nejspíš že na pásce před blokem dat je nějaký identifikační blok, který se vždycky přečte. Proč to ale neuměl přečíst? Asi potřebuje ještě nějakou pomoc od aplikace, která ho využívá.
Zkusil jsem to číst i tarem, což samozřejmě nejde, protože tar podporuje jen svoje vlastní formáty. Ale chybová hláška v messages se při tomhle pokusu neobjevila. Jen hlášení od taru, že tohle není ten správný formát. Z toho můžeme usoudit, že dostatečně šikovně napsaná aplikace to musí zvládnout. V nejhorším vykuchat zdroják taru ...
Když dovolíte osobní poznámku, byl jsem zpocenej jako myš, protože těch dat máme docela dost. Potom se to najednou povedlo takhle:
mt setblk 0
cpio -icdmv -C 5120 --file=/dev/nst1 -E soubor
kde soubor obsahuje jména souborů k obnově.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.