Filewatcher File Search
FTP Search
  
Directory 
  
Content Search 
   
pkg://Ftape-HOWTO.html.tgz:50081/Ftape-HOWTO-11.html  downloads

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>The Linux Ftape-HOWTO: FAQ: domande relative all'«utilizzo di Ftape»!</TITLE>
 <LINK HREF="Ftape-HOWTO-12.html" REL=next>
 <LINK HREF="Ftape-HOWTO-10.html" REL=previous>
 <LINK HREF="Ftape-HOWTO.html#toc11" REL=contents>
</HEAD>
<BODY>
<A HREF="Ftape-HOWTO-12.html">Avanti</A>
<A HREF="Ftape-HOWTO-10.html">Indietro</A>
<A HREF="Ftape-HOWTO.html#toc11">Indice</A>
<HR>
<H2><A NAME="s11">11. FAQ: domande relative all'«utilizzo di Ftape»!</A></H2>

<P>
<P>
<H2><A NAME="ss11.1">11.1 Quanto va veloce Ftape?</A>
</H2>

<P>
<P>&Egrave; possibile ottenere velocit&agrave; di backup e ripristino abbastanza
rispettabili con <EM>Ftape</EM>: con un Colorado DJ-20 ed un controller
Adaptec 1542CF sono state misurate delle velocit&agrave; di trasferimento
continuative di 4.25MB/min (senza compressione) con un archivio tar da
70MB, mentre si stava confrontando l'archivio sul nastro con i dati su
di un disco IDE.  La velocit&agrave; di <EM>Ftape</EM> dipende fortemente dalla
velocit&agrave; di trasferimento del proprio FDC: l'AHA1542CF &egrave; un FDC di
tipo "post-1991 82077" che permette di inviare 1Mb/s di dati
all'unit&agrave;.  Se si possiede un FDC che permette di spedire 500kb/s di
dati, si otterr&agrave; una velocit&agrave; di trasferimento dimezzata (beh, ovvio).
<P>
<P>
<H2><A NAME="ss11.2">11.2 Quando scrivo su alcuni dei miei nastri, sembra che perda un sacco di tempo a ``lustrarsi le scarpe'' o nel riposizionamento, invece di trasferire dati.  C'&egrave; qualcosa che non va nel mio sistema?</A>
</H2>

<P>
<P>Ci sono stati un paio di casi di ``lustramento di scarpe''.  Questo
accade quando il nastro sembra correre avanti ed indietro senza fine.
Ci&ograve; &egrave; stato notato con un Jumbo 250
(&lt;74407.3051@compuserve.com&gt;) e con uno Iomega 250 Ditto Insider
(&lt;tom@opus.cais.com&gt;).  Nell'ultimo caso si stava utilizzando
Linux ELF con hard-disk SCSI (connesso ad un Adaptec 1542cf).
Pregerei di contattarmi nel caso si abbia un aggiornamento al
riguardo.
<P>&lt;dall'Ftape-HOWTO&gt;
<P>Probabilmente no.  Se si sta eseguendo il backup di un gran numero di
file di dimensione inferiore ai 2kB, bisogner&agrave; abituarsi a conviverci.
In questo caso il riposizionamento &egrave; causato da un accesso
spropositato al file system.  Se si sta eseguendo il backup di file di
sistema normali, questo pu&ograve; essere dovuto a sporco o stiratura del
nastro della cartuccia.  Con una semplice ritensionatura del nastro
tutto dovrebbe sparire.  Provare con
<P>
<BLOCKQUOTE><CODE>
<PRE>
ftmt -f /dev/zqft0 reten
</PRE>
</CODE></BLOCKQUOTE>
<P>per ritensionare il nastro.  Se la ritensionatura non risolve il
problema e accade solo con certi nastri, pu&ograve; essere opportuno
sostituire il nastro in questione.
<P>&lt;risposta di Tim Jones&gt;
<P>Se si utilizza <CODE>afio</CODE> come strumento di backup, &egrave; possibile fargli
scrivere un gran numero di buffer in un colpo solo utilizzando il flag
<CODE>-c</CODE>.  Utilizzare un valore opportuno in modo da fornire dati
sufficienti per molti dei singoli passaggi punto-a-punto sopra il
nastro.  Per il mio sistema, le seguanti impostazioni vanno abbastanza
bene, in quanto fanno fermare il nastro, a sistema scarico, un numero
di volte relativamente basso ad ogni passaggio:
<P>
<BLOCKQUOTE><CODE>
<PRE>
find /usr/local -xdev -print | afio -o -v -f -b 10240 -c 800 /dev/qft0
</PRE>
</CODE></BLOCKQUOTE>
<P>Nel mio caso sto scrivendo 800x1024 byte per ogni scrittura sul
nastro, cio&egrave; cira 8MB.
<P>Non ho fatto molte esperienze con queste impostazioni, cos&iacute; qualcuno
potrebbe volerne cercare di migliori.
<P>Probabilemente altre utility di backup possono essere modificate per
utilizzare una tecnica simile.
<P>&lt;risposta di Michael Hamilton&gt;
<P>Il <CODE>tar</CODE> di GNU non utilizza i buffer in questo modo.  Il programma
di backup commerciale <CODE>bru</CODE> &egrave; in grado di trattare buffer multipli
utilizzando memoria condivisa; questo funziona solo quando si sta
scrivendo archivi compressi con <CODE>bru</CODE> (indipendentemente dal fatto
che si stia utilizzando la compressione di <EM>Ftape</EM>).
<P>Un altro modo per sopperire al problema potrebbe essere quello di
utilizzare pi&uacute; buffer DMA nel <EM>driver Ftape del kernel</EM>:
<P>
<BLOCKQUOTE><CODE>
<PRE>
mt -f /dev/qft0 setdrvbuffer $((6*32786))
</PRE>
</CODE></BLOCKQUOTE>
<P>$((6*32786)) dovrebbe venir espansa dalla propria shell quando
se ne utilizzi una Bourne-compatibile.  Questo produce un impatto
negativo sulla memoria di sistema: i buffer DMA di <EM>Ftape</EM> non
possono essere utilizzati da nessun'altra parte del kernel, n&eacute; da
nessun'altra applicazione.  E la memoria contenente il kernel non pu&ograve;
essere messa nella partizione di swap.  Se si decidesse di utilizzare
questo tipo di bufferizzazione multipla, &egrave; conveniente scaricare il
driver non appena il suo utilizzo &egrave; terminato.
<P>&lt;risposta di Claus Heine&gt;
<P>
<H2><A NAME="ss11.3">11.3 Devo far ripartire il mondo DOS per formattare i nastri?</A>
</H2>

<P>
<P>No, se si sta usando l'ultima versione dei <EM>driver di Ftape</EM>
disponibile all'
<A HREF="http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape/">home-page di Ftape</A>.
<P>Per formattare un nastro QIC-80, TR-1, TR-3, QICWide 3010 o 3020,
procurarsi l'ultima versione di <CODE>ftape</CODE> e l'ultima
versione del pacchetto <CODE>ftape-tools</CODE> (dallo stesso sito)
e leggere la documentazione dell'utility <CODE>ftformat</CODE>
inclusa nel pacchetto <CODE>ftape-tools</CODE>.
<P>
<H4>Comment</H4>
Non provare a formattare nastri Ditto 2GB.
<H4>Comment</H4>
Non provare a formattare nastri Ditto Max o Max Pro.
<P>&lt;risposta di Tim Jones e Claus Heine&gt; 
<P>
<P>
<H2><A NAME="ss11.4">11.4 &Egrave; possibile formattare nastri Ditto 2GB con ftape?</A>
</H2>

<P>
<P>Non &egrave; possibile formattare nastri <CODE>Ditto 2GB</CODE> con unit&agrave; a nastro
<CODE>Ditto 2GB</CODE>, cos&iacute; come non &egrave; assolutamente possibile riformattare
nastri <CODE>Ditto 2GB</CODE> in modo tale da poter essere utilizzati ancora
da unit&agrave; a nastro <CODE>Ditto 2GB</CODE>.
<P>Questa &egrave; una limitazione hardware dell'unit&agrave; a nastro <CODE>Ditto 2GB</CODE>.
Non c'&egrave; possibilit&agrave; di aiuto a livello software, cio&egrave; non &egrave; una
mancanza di <CODE>ftape</CODE>.
<P>
<P>
<H2><A NAME="ss11.5">11.5 &Egrave; possibile formattare nastri Ditto Max o Max Pro con ftape?</A>
</H2>

<P>
<P>No, il <CODE>Ditto Max</CODE> non pu&ograve; formattare nastri.
<P>Questa &egrave; una limitazione hardware dell'unit&agrave; a nastro <CODE>Ditto 2GB</CODE>.
Non c'&egrave; possibilit&agrave; di aiuto a livello software, cio&egrave; non &egrave; una
mancanza di <CODE>ftape</CODE>.
<P>
<P>
<H2><A NAME="ss11.6">11.6 Ftape rileva pi&uacute; settori danneggiati con nastri QIC-3020 di quanto non faccia DOS.</A>
</H2>

<P>
<P>Se si presta attenzione alla differenza, si noter&agrave; che <EM>Ftape</EM>
rileva sempre 2784 settori in pi&uacute; di DOS.
<P>Il numero che <EM>Ftape</EM> riporta &egrave; corretto (ovviamente <CODE>:-)</CODE>.
Tutti i nastri QIC-3020 correttamente formattati hanno 2784 settori in
posizioni predefinite che sono marcati nella mappa dei settori
danneggiati.  Quotando dalle specifiche:
<P>
<BLOCKQUOTE>
Le tracce 5,7,9,11,13,15,17,19,21,23,25 e 27 comprese nei 4 segmenti o
dell'EOT o del BOT sono disposte per aumentare i tassi d'errore per
via delle hole imprints [impronte del buco?].  Per questo motivo
queste regioni devono essere mappate come danneggiate nel momento
della formattazione ed ascritte nella mappa dei settori danneggiati
per indicare che tutti i settori all'interno dei segmenti identificati
sono danneggiati.??
</BLOCKQUOTE>
<P>Questo fornisce 12 tracce * 2 * 4 segmenti * 29 settori = 2784
settori.
<P>Cos&iacute; <EM>Ftape</EM> preferisce riportare il numero effettivo di settori
che non possono essere utilizzati sul nastro, mentre DOS fornisce un
numero pi&uacute; ottimistico indicando una migliore qualit&agrave; del nastro.  Il
comportamento di <EM>Ftape</EM>, comunque, potrebbe cambiare in futuro per
rilevare una formattazione corretta e mostrare due numeri separati.
In ogni caso a questo, per ora, non &egrave; riservata un'alta priorit&agrave;.
<P>I nastri QIC-3010 sono simili ai QIC-3020 al riguardo.
<P>&lt;dall'Ftape-HOWTO&gt;
<P>
<P>
<H2><A NAME="ss11.7">11.7 Non ci sono problemi se non sento il nastro muoversi quando impartisco un comando <CODE>fsf</CODE> o <CODE>bsf</CODE> con <CODE>mt</CODE>?</A>
</H2>

<P>
<P>No.  L'unit&agrave; semplicemente aggiorna un contatore interno quando riceve
questi comandi.  Il nastro dovrebbe muoversi alla posizione corretta
con l'accesso in lettura o scrittura all'unit&agrave; successivo.
<P>&lt;dall'Ftape-HOWTO&gt;
<P>
<P>
<H2><A NAME="ss11.8">11.8 Perch&eacute; il mio programma di backup <I>XYZ</I> si lamenta di errori di tipo ``Invalid argument'' [argomento non valido]?</A>
</H2>

<P>
<P><CODE>zftape</CODE> richiede che i dati vengano scritti come multipli della
dimensione dei blocchi minima fissata.  Questo &egrave; un comportamento
tipico per una periferica a nastro.  Ci sono tre modi per eliminare
questi errori:
<UL>
<LI>impostare la dimensione dei blocchi di <EM>Ftape</EM> alla
dimensione dei blocchi utilizzati dal programma di backup.  L'esempio
sottostante &egrave; applicabile ad <CODE>afio</CODE>:

<BLOCKQUOTE><CODE>
<PRE>
mt -f /dev/qft0 setblk 5120
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI>se non si vuole utilizzare la compressione di <EM>Ftape</EM>, &egrave;
anche possibili usare:

<BLOCKQUOTE><CODE>
<PRE>
mt -f /dev/qft0 setblk 0
</PRE>
</CODE></BLOCKQUOTE>


per attivare la modalit&agrave; di dimensione variabile dei blocchi di
<EM>Ftape</EM> ed essere in grado di scrivere i dati sul nastro in
porzioni arbitrarie (<B>ma</B> la compressione interna non funziona con
questa impostazione).  Quando si avesse l'intenzione di utilizzare
<CODE>KBackup</CODE>, questo &egrave; il solo modo per farlo lavorare assieme ad
<EM>Ftape</EM> (perlomeno dovrebbe funzionare, ma non so con esattezza se
lo fa).
</LI>
<LI>informare il proprio programma di backup circa la dimensione di
default di 10kB dei blocchi di <EM>Ftape</EM> (che &egrave; anche il valore
tipico per GNU <CODE>tar</CODE>).  Per <CODE>afio</CODE> &egrave; possibile utilizzare il
seguente comando:

<BLOCKQUOTE><CODE>
<PRE>
afio -b 10k ...
</PRE>
</CODE></BLOCKQUOTE>
</LI>
</UL>
<P>&Egrave; opportuno leggersi la sezione ``Tape blocks'' del manuale
(utilizzare l'indice analitico per andare direttamente alla sezione
relativa).
<P>Quando si utilizza la compressione interna di GNU <CODE>tar</CODE> con
versione di GNU <CODE>tar</CODE> antecedente la tar-1.12, &egrave; necessario
lanciare <CODE>tar</CODE> con l'opzione <CODE>--block-compress</CODE> impostata su
<CODE>re-block</CODE>.  In caso contrario <CODE>tar</CODE> comprimer&agrave; i dati che
legge e li scriver&agrave; in porzioni arbitrarie sul nastro.
<P>Eesempio:
<BLOCKQUOTE><CODE>
<PRE>
tar -czvf /dev/qft0 --block-compress /etc
</PRE>
</CODE></BLOCKQUOTE>
<P><B>Attenzione:</B> non si dovrebbe utilizzare la compressione interna di
<CODE>tar</CODE> con grandi backup, in quanto ci&ograve; produce un enorme blocco
compresso del flusso di dati.  Se un tale archivio viene rovinato
proprio all'inizio, &egrave; veramente difficile ripristinarlo.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.9">11.9 Errori I/O e FDC: alcune spiegazioni.</A>
</H2>

<P>
<P>Se si ottengono i seguenti messaggi, questo &egrave; ci&ograve; che fa per te!
<UL>
<LI>fdc-io.c (ft_handle_perpend) - Your FDC does not support
QIC-3020 [l'FDC non supporta il QIC-3020].
</LI>
<LI>Cannot write to /dev/qft0: I/O error [non posso scrivere su
/dev/qft0: errore di I/O].</LI>
</UL>
<P>La spiegazione:
<P>``FDC'' significa ``Floppy Disk Controller'' [controllore per dischi
floppy].  Il problema &egrave; che il proprio controller floppy deve essere
in grado di supportare qualcosa chiamato ``perpendicular mode'' [modo
perpendicolare], per essere in grado di leggere e scrivere cartucce
QIC-3020/QIC-3010 (cio&egrave; cartucce TR-3).  Per quanto ne sappia, tutti
gli FDC che sono in grado di trasferire dati ad almeno 1Mb/s
supportano anche il ``perpendicular mode'' (l'aggettivo
``perpendicolare'' si riferisce alla direzione della magnetizzazione
delle particelle ferro magnetiche sul nastro).
<P>Questo significa che &egrave; necessario procurarsi un altro FDC.  Oppure
dare un'occhiata in qualche negozio per computer e chiedere di una
scheda di controllo I/O che sia in grado di supportare floppy da
2.88MB (che implica un velocit&agrave; di trasferimento di 1Mb/s ed il modo
perpendicolare).
<P>&Egrave; possibile anche procurarsi i cosiddetti ``controller ad alta
velocit&agrave;'', che supportano anche trasferimenti da 2Mb/s.  Questi
controller sono basati su un FDC Intel 82078.  Iomega vende tali
schede sotto il nome di ``Ditto Dash''.  Penso che anche Exabyte venda
i suoi controller da 2Mb/s separatamente, mentre Seagate fornisce
l'unit&agrave; TR-3 (cio&egrave; TST-3200) con questi controller inclusi.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.10">11.10 Perch&eacute; ottengo errori del tipo «<CODE>/dev/qft0: No such device</CODE>» [/dev/qft0: nessun device come questo]?</A>
</H2>

<P>
<P>Supponiamo che il problema sia il seguente. Il modulo <EM>Ftape</EM> &egrave;
caricato correttamente nel kernel:
<P>
<BLOCKQUOTE><CODE>
<PRE>
/usr/src/ftape-3.03b-970603# lsmod
 Module         Pages    Used by
 ftape             22          0
</PRE>
</CODE></BLOCKQUOTE>

ma accade che:
<BLOCKQUOTE><CODE>
<PRE>
$ ftmt -f /dev/qft0 status
ftmt: /dev/qft0: No such device
</PRE>
</CODE></BLOCKQUOTE>
<P>La soluzione: &egrave; necessario anche caricare il modulo <EM>zftape.o</EM>.
Con Ftape-3.* il modulo <EM>ftape.o</EM> non implementa l'interfaccia VFS.
Questo &egrave; fatto da <EM>zftape.o</EM>.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.11">11.11 Ottengo un ``device busy'' [periferica occupata] quando eseguo backup multipli su di un nastro utilizzando alcuni script.</A>
</H2>

<P>
<P>I messaggi di ``periferica occupata'' possono verificarsi mentre le
<EM>file di periferica di Ftape</EM> sono ancora mantenute aperte da
alcuni programmi.  Non appena la chiamata di sistema close() viene
completata, il flag di occupato viene azzerato.  Potrebbe darsi che
<CODE>bru</CODE>, o altri programmi, abbiano eseguito un fork di un figlio che
ritarda a morire?
<P>S&iacute;, questo riproduce il problema:
<BLOCKQUOTE><CODE>
<PRE>
tar -cvvzf /dev/nqft0 --block-compress ; mt rewind
</PRE>
</CODE></BLOCKQUOTE>
<P>&Egrave; possibile omettere <CODE>--block-compress</CODE> se si sta utilizzando
un versione di GNU <CODE>tar</CODE> pi&uacute; recente.
<P>Comunque questo non &egrave; un baco di <EM>Ftape</EM>.  Sembra che il processo
<CODE>tar</CODE> genitore esca prima che suo figlio abbia chiuso il device del
nastro.  So comunque, per aver studiato il codice di <CODE>tar</CODE> alcuni
anni fa, che <CODE>tar</CODE> attende correttamente che il proprio genitore
muoia.
<P>In ogni caso, il messaggio di occupato significa semplicemente che la
variabile ``busy'' [occupato] &egrave; ancora mantenuta ad un valore logico 1
(<CODE>zftape/zftape-init.c</CODE>), e questo significa semplicemente che
c'&egrave; ancora un processo in giro che tiene il device del nastro aperto.
<P>Penso di aver capito il motivo (solo nel caso di <CODE>tar</CODE> in quanto di
questo ho il codice sorgente).
<P>Se si utilizza <CODE>tar</CODE> con la compressione abilitata, allora viene
eseguito un fork di un figlio che diventer&agrave; il compressore tramite
l'esecuzione di <CODE>gzip</CODE> o qualcos'altro.  Prima della chiamata a
execlp(), il figlio eseguir&agrave; un fork di un nipote di suo padre
<CODE>tar</CODE>.  Questo nipote eseguir&agrave; l'effettvo lavoro di I/O sul nastro.
<P>
<BLOCKQUOTE><CODE>
<PRE>
tar - fork() - scrive verso il figlio di tar
        |
  figlio di tar - fork() - gzip (eseguir&agrave; un pipe al nipote di tar)
                    |
              nipote di tar - apre l'archivio
</PRE>
</CODE></BLOCKQUOTE>
<P>Ora, il genitore <CODE>tar</CODE> aspetta che suo figlio muoia.  <CODE>gzip</CODE>
sicuramente non aspetta il nipote in quanto <CODE>gzip</CODE> &egrave; il risultato
di un execlp().
<P>Ci&ograve; che non so &egrave; se il nipote dovrebbe essere implicitamente aspettato
dal genitore <CODE>tar</CODE> o se la funzione wait() aspetta anche i nipoti.
<P>Comunque questo sembra essere il problema: il genitore <CODE>tar</CODE> &egrave;
uscito mentre suo nipote &egrave; ancora occupato a chiudere l'archivio.  In
condizioni normali difficilmente si noter&agrave; questo problema se la
funzione close() viene portata a termine velocemente (cio&egrave; file
regolari, periferiche a blocchi e magari altri device per nastri?), ma
non &egrave; un baco di <EM>Ftape</EM>, mentre lo &egrave; nei programmi di backup, nel
kernel o forse nel codice d'uscita delle libc.
<P>Non so se le considerazione fatte in precedenza si possono essere
applicate anche a <CODE>bru</CODE>.  Se non ci sono nipoti e il processo padre
attende in maniera corretta suo figlio, allora non ci dovrebbero
essere problemi.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.12">11.12 Come faccio a... con <CODE>tar</CODE>?</A>
</H2>

<P>
<P>Queste sono propriamente domande per <CODE>tar</CODE>: si prega di leggersi la
pagina <CODE>man</CODE> e la pagina <CODE>info</CODE> realtive.  Se non sono
installate sul sistema, provare con
<P>
<BLOCKQUOTE><CODE>
<PRE>
tar  --help 2>&amp;1 | less
</PRE>
</CODE></BLOCKQUOTE>
<P>Se la propria versione di <CODE>tar</CODE> &egrave; la v1.11.1 o precedente, si
consideri l'opportunit&agrave; di aggiornarla alla v1.11.8.  Questa versione
pu&ograve; chiamare GNU <CODE>zip</CODE> direttamente (cio&egrave; supporta l'opzione
<CODE>-z</CODE>) e possiede un elaborato help incluso.  Inoltre tutto pu&ograve;
essere compilato in ambiente Linux.
<P>&lt;dall'Ftape-HOWTO&gt;
<P>
<P>
<H2><A NAME="ss11.13">11.13 Che dimensione per i blocchi devo utilizzare con <CODE>tar</CODE>?</A>
</H2>

<P>
<P>Se si fa uso della compressione (ed anche pi&uacute; in generale), pu&ograve;
tornare a proprio favore specificare a <CODE>tar</CODE> che deve
spezzettare l'uscita in blocchi grossi.  Poich&eacute; <EM>Ftape</EM>
taglia i dati in blocchi da 29kB, un ``<CODE>-b58</CODE>'' dovrebbe
essere ottimo.
<P>«Perch&eacute; 29kB?» mi sembra di sentir gridare.  Beh, lo standard QIC-80
specifica che tutti i dati debbano essere protetti da un Error
Correcting Code [codice per la correzione d'errore] (ECC).  Il codice
specificato nello standard QIC-80 &egrave; conosciuto come codice
Reed-Solomon (R-S).  Il codice R-S considera 29 byte di dati e genera
3 byte di parit&agrave;.  Per aumentare le prestazioni del codice ECC, i byte
di parit&agrave; sono generati su 29 settori da 1kB.  Cos&iacute; <EM>Ftape</EM> prende
29kB di dati, aggiunge 3kB di parit&agrave; ECC e scrive 32kB sul nastro alla
volta.  Per questa ragione <EM>Ftape</EM> scriver&agrave; e legger&agrave; sempre
blocchi da 32kB per essere in grado di rilevare (e correggere)
eventuali errori.
<P>Se si possiede una spiccata curiosit&agrave; e si vuole conoscere di pi&uacute;, &egrave;
possibile dare un'occhiata ai file <CODE>ecc.c</CODE> ed <CODE>ecc.h</CODE> per una
spiegazione del codice e un riferimento a testi sui codici
Reed-Solomon.
<P>&lt;dall'Ftape-HOWTO&gt;
<P>
<P>
<H2><A NAME="ss11.14">11.14 Dove posso trovare i binari, i sorgenti e le pagine <CODE>man</CODE> di <CODE>tar</CODE>, <CODE>mt</CODE>, <CODE>cpio</CODE> e <CODE>dd</CODE>?</A>
</H2>

<P>
<P>Tutti questo strumenti sono stati sviluppati dal progetto GNU ed i
sorgenti (cos&iacute; come le pagine <CODE>man</CODE>) possono essere prelevate da
praticamente ogni sito ftp nel mondo (inclusi <CODE>ftp.funet.fi</CODE>,
<CODE>tsx-11.mit.edu</CODE>, e <CODE>sunsite.unc.edu</CODE>).  In ogni caso possono
essere prelevati dal sito ufficiale GNU: <CODE>prep.ai.mit.edu
[18.71.0.38]:/pub/gnu</CODE>.  Le ultime versioni (ad oggi 12 settembre
1996) sono:
<P>
<BLOCKQUOTE><CODE>
<PRE>
cpio:   2.4.2 (cpio-2.4.2.tar.gz)
dd:     3.13 (fileutils-3.13.tar.gz)
mt:     2.4.2 (cpio-2.4.2.tar.gz)
tar:    1.11.8 (tar-1.11.8.tar.gz)
gzip:   1.2.4 (gzip-1.2.4.tar.gz)
</PRE>
</CODE></BLOCKQUOTE>
<P>Tutto quanto pu&ograve; essere compilato in ambiente Linux successivo alla
versione v1.0.4, <CODE>libc</CODE> v4.5.19 e <CODE>gcc</CODE> v2.5.8.
<P>&lt;dall'Ftape-HOWTO&gt;
<P>
<P>
<H2><A NAME="ss11.15">11.15 Se utilizzo la compressione dell'unit&agrave; a nastro, &egrave; sbagliato sfruttare anche la compressione di <CODE>zftape</CODE>.  O sarebbe meglio non utilizzare la compressione dell'unit&agrave; e lasciare che faccia tutto <CODE>zftape</CODE>?</A>
</H2>

<P>
<P>Non &egrave; cos&iacute; sbagliato come utilizzare la compressione due volte (che
sarebbe il caso in cui si utilizza la compressione dell'unit&agrave; assieme
alla compressione di <EM>ftape</EM>), ma non ha senso.  Non si guadagna un
maggior compressione, ma solo cicli di CPU sprecati.
<P>La compressione dell'unit&agrave; dovrebbe essere abbastanza sicura, in
quanto l'unit&agrave; comprime singoli file, a differenza di <CODE>tar
-czf...</CODE>, che fa dell'intero flusso di dati un grande blocco
compresso.  Questa, infatti, &egrave; una pessima idea con backup seri, in
quanto un singolo byte rovinato all'inizio dell'archivio pu&ograve; rendere
inutilizzabile l'intero archivio, o, almeno, ne rende piuttosto
difficoltoso un suo recupero.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.16">11.16 Com'&egrave; la compressione di <CODE>zftape</CODE> a confronto di quella, diciamo, di <CODE>gzip -9</CODE>?</A>
</H2>

<P>
<P><CODE>gzip -9</CODE> &egrave; migliore (cio&egrave; si pu&ograve; ottenere una maggiore
compressione).  La compressione di <EM>zftape</EM> &egrave; paragonabile al
programma Un*x <CODE>compress</CODE>, ma dovrebbe essere pi&uacute; veloce, e lo &egrave;
rispetto a <CODE>gzip</CODE>.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.17">11.17 Non utilizzo la compressione, ma sento che l'interfaccia <CODE>zftape</CODE> se ne sta andando.  Cosa posso fare?</A>
</H2>

<P>
<P>Si utilizzi l'<EM>interfaccia zftape</EM>, senza caricare il modulo
<EM>zft-compressor</EM>.  Il device allora diventa <CODE>/dev/qft0</CODE>.
<P>&lt;risposta di Tim Jones&gt;
<P>
<P>
<H2><A NAME="ss11.18">11.18 Ftape dice «<CODE>This tape has no 'Linux raw format'</CODE>» [questo nastro non &egrave; nel ``formato elementare Linux''].</A>
</H2>

<P>
<P>Si ottiene questa lamentela se non si &egrave; <EM>cancellato</EM> il proprio
nastro appena formattato.  Questo accade perch&eacute; <EM>Ftape</EM> si aspetta
un ``magic header'' [intestazione magica] sul nastro per sapere di
essere in grado di interpretare il segmento di intestazione a suo modo
(cio&egrave; con i marcatori di file).  Per eliminare il problema, impartire
il comando:
<P>
<PRE>
mt -f /dev/nftape erase
</PRE>
<P>&lt;dall'Ftape-HOWTO&gt;
<P>
<P>
<H2><A NAME="ss11.19">11.19 Posso scambiare nastri con qualcuno che utilizza il DOS?</A>
</H2>

<P>
<P>No.  Il software per DOS &egrave; conforme alle specifiche QIC-80 circa la
disposizione del filesystem di DOS e non dovrebbe essere un grosso
problema scrivere un programma che possa leggere e scrivere il formato
DOS.  Infatti, scommetto che creare un'interfaccia utente graziosa
sarebbe un problema pi&uacute; grande.
<P>&lt;dall'Ftape-HOWTO&gt;
<P>
<P>
<H2><A NAME="ss11.20">11.20 Come funziona <CODE>mt eom</CODE> quando si comincia a sovrascrivere un nastro dalla met&agrave;?</A>
</H2>

<P>
<P>Per inciso, EOM &egrave; l'acronimo di ``End Of recorded Media'' [fine del
supporto di registrazione], la posizione esattamente dopo tutti i dati
gi&agrave; registrati sul nastro.
<P>Non si pu&ograve; utilizzare i ``file'' del nastro come file di un ordinario
filesystem.  In linea di principio, un nastro non permette nient'altro
che aggiungere nuovi dati in coda all'EOM.  Ci&ograve; nonostante, se ci si
posiziona proprio nel mezzo dei dati gi&agrave; registrati e si comincia a
scrivere, allora l'unit&agrave; prima cancella tutti i file successivi (cos&iacute;
da spostare l'EOM alla posizione effettiva) e poi comincia a scrivere.
Cos&iacute; il nuovo EOM, terminato il processo di scrittura, si trova dopo i
dati appena registrati.  Una delle conseguenze di quanto sopra, &egrave; che,
ovviamente, quella scrittura sul nastro nel mezzo dell'area gi&agrave;
registrata &egrave; distruttiva, nel senso che non solo sovrascrive il
``file'' sopra il quale la testina era posizionata, ma cancella anche
tutti i file che seguono.
<P>&lt;dall'Ftape-HOWTO&gt;
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.21">11.21 Quando eseguivo dei backup prima di utilizzare <CODE>taper</CODE>, sotto ftape 2.0.29 la mia unit&agrave; non supportava l'fsf, mentre sotto il nuovo <CODE>zftape</CODE> lo supporta.  Perch&eacute; dovrebbe e cos'&egrave; esattamente l'fsf?</A>
</H2>

<P>
<P>Probabilmente non funzionava prima perch&eacute; non si era utilizzato un
<P>
<BLOCKQUOTE><CODE>
<PRE>
mt -f /dev/rft0 erase
</PRE>
</CODE></BLOCKQUOTE>
<P>prima di scrivere i dati sulla cartuccia.  Questo <B>non &egrave; pi&uacute;</B>
necessario.
<P>Ma ``<CODE>mt fsf</CODE>'', cosa significa?  Le unit&agrave; a nastro non registrano
i file in modo che si possa utilizzare un
<P>
<PRE>
cp qualche_file /dev/la_mia_unit&agrave;
</PRE>
<P>o in modo da essere capaci di montare un'unit&agrave; a nastro cos&iacute; come si
monta un hard-disk.  Non &egrave; possibile fare altro con un'unit&agrave; a nastro
se non scrivere dati in maniera sequenziale su di essa.
<P>Poich&eacute; queste &egrave; abbastanza scomodo, qualcuno ha inventato qualcosa che
&egrave; conosciuto con il nome di <I>file mark</I> o <I>eof mark</I> (<I>eof</I> &egrave;
l'acronimo di ``End Of File'' [fine del file]).  Questi marcatori non
separano i file di cui &egrave; stato fatto il backup sull'unit&agrave; a nastro, ma
separano solo i blocchi di dati (qualsiasi cosa i dati possano
rappresentare).
<P>Normalmente i driver del kernel dell'unit&agrave; a nastro si occupano di
scrivere questi marcatori di file quando il device del nastro viene
chiuso, cio&egrave; con
<P>
<BLOCKQUOTE><CODE>
<PRE>
tar -cf /dev/nqft0 /bin
tar -cf /dev/nqft0 /etc
mt -f /dev/nqft0 rewind
</PRE>
</CODE></BLOCKQUOTE>
<P>si otterrebbe un backup di tutti i file sotto <CODE>/bin</CODE> ed
<CODE>/etc</CODE>.  Quando il primo <CODE>tar</CODE> termina, il driver del kernel
si occuper&agrave; della scrittura di un marcatore di file sul nastro alla
posizione corrente e, quando termina il seconfo processo <CODE>tar</CODE>, un
altro marcatore di file viene scritto sulla cartuccia in quella
posizione.  Ora, il motivo di questi marcatori di file consiste nel
fatto che &egrave; possibile saltare fra archivi differenti presenti sul
nastro pi&uacute; velocemente di come si potrebbe fare con un rilettura
sequenziale dei dati.
<P>I comandi che fanno questo sono:
<DL>
<DT><B>mt fsf</B><DD><P>cvanzamento veloce al prossimo marcatore di file verso
l'EOT (End Of Tape [fine del nastro]),
<P>
<DT><B>mt bsf</B><DD><P>avanzamento veloce al prossimo marcatore di file verso il
BOT (Begin Of Tape [inizio del nastro]).
</DL>
<P>Cos&iacute;, per estrarre il secondo archivio nell'esempio precedente, non &egrave;
necessario rileggere il primo archivio, ma procedere come segue:
<P>
<BLOCKQUOTE><CODE>
<PRE>
mt -f /dev/nqft0 rewind
mt -f /dev/nqft0 fsf
tar -xvf /dev/nqft0 
</PRE>
</CODE></BLOCKQUOTE>
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.22">11.22 Qual'&egrave; esattamente la differenza fra <CODE>ftape</CODE> e <CODE>zftape</CODE>?</A>
</H2>

<P>
<P>Quando <EM>Ftape</EM> era ancora giovane, c'erano due versioni dei driver
per unit&agrave; a nastro, una delle quali venne chiamata <EM>zftape</EM> per via
della sua compressione interna eseguita al volo e trasparente
all'utente.  Se questa sia una caratteristica positiva od un baco (in
quanto non strettamente necessario che sia fatta dal codice del
kernel) &egrave; un'altra questione.  Comunque sia, l'interfaccia <CODE>ioctl</CODE>
e l'uso dei marcatori di file forniti da <EM>zftape</EM> erano
notevolmente superiore e con meno bachi.  Inoltre <EM>zftape</EM> permette
di utilizzare cartucce a nastro per floppy con differenti sistemi
operativi.  Beh, non &egrave; possibile scambiare dati, ma <EM>ftape</EM> non
sovrascriver&agrave; i volumi creati con il proprio programma Windoze e
viceversa.
<P>Oggi giorno <EM>Ftape</EM> &egrave; il nome dell'intero pacchetto di driver per
unit&agrave; a nastro via controller floppy, <B>ed</B> <CODE>ftape.o</CODE> &egrave; il nome
del file del modulo kernel che implementa il supporto hardware a basso
livello.  <CODE>zftape</CODE> ha cessato di esistere come un pacchetto
separato, mentre la nuova versione di <EM>Ftape</EM> (da ftape-3.00)
contiene un modulo <CODE>zftape.o</CODE> che si appoggia ad <CODE>ftape.o</CODE> (cio&egrave;
diventa necessario caricare <B>entrambi</B> i moduli per essere in grado
di accedere alla propria unit&agrave;) e implementa l'interfaccia del sistema
di file e le caratteristiche avanzate della precedente versione di
<CODE>zftape</CODE>.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.23">11.23 Qual'&egrave; la differenza fra una periferica riavvolgente ed una non-riavvolgente?</A>
</H2>

<P>
<P>Beh, i file delle periferiche a nastro riavvolgenti riavvolgono il
nastro al BOT (Begin Of Tape [inizio del nastro]), cio&egrave;
<P>
<BLOCKQUOTE><CODE>
<PRE>
tar -cvf /dev/qft0 /bin
</PRE>
</CODE></BLOCKQUOTE>
<P>riavvolger&agrave; la cartuccia quando il lavoro di <CODE>tar</CODE> &egrave; terminato.
Invece
<P>
<BLOCKQUOTE><CODE>
<PRE>
tar -cvf /dev/nqft0 /bin 
</PRE>
</CODE></BLOCKQUOTE>
<P><B>non</B> riavvolger&agrave; la cartuccia e lascier&agrave; la testina di
lettura/scrittura nella possizione corrente.
<P>Periferiche riavvolgenti dovrebbero essere utilizzate quando si
effettuano backup singoli; periferiche non-riavvolgenti dovrebbero
essere utilizzate quando si eseguono backup multipli, a meno che non
ci sia bisogno di tutto lo spazio fino all'EOM (End Of recorded Media
[fine del supporto di registrazione]) prima di aggiungere un altro
archivio.
<P>Le periferiche non-riavvolgenti <B>devono</B> essere utilizzate quando
si invia un qualsiasi comando di movimento all'unit&agrave; a nastro, come
<P>
<BLOCKQUOTE><CODE>
<PRE>
mt -f /dev/nqft0 fsf
</PRE>
</CODE></BLOCKQUOTE>
<P>perch&eacute;, quando il processo <CODE>mt</CODE> termina, l'unit&agrave; a nastro viene
chiusa e ci&ograve; comporta un riavvolgimento della cartuccia con le
periferiche riavvolgenti.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.24">11.24 C'&egrave; qualcuno che potrebbe dirmi come utilizzare <CODE>mt</CODE> per riavvolgere la mia unit&agrave; TR-3 dopo aver registrato un archivio con <CODE>zftape</CODE>, cos&iacute; da poterlo verificare?</A>
</H2>

<P>
<P>Beh, dipende.  Se il nastro &egrave; ancora posizionato all'interno del
volume appena scritto, un ``<CODE>mt bsf 1</CODE>'' (o equivalentemente
``<CODE>mt bsf</CODE>'') far&agrave; ritornare il nastro proprio all'inizio di quel
volume (questo &egrave; il modo in cui <CODE>tar --verify</CODE> lavora).  Se il
nastro &egrave; gi&agrave; posizionato <B>dopo</B> il marcatore di file che indica la
fine dell'ultimo volume scritto, allora &egrave; neccessario impartire un
``<CODE>mt bsf 2</CODE>''.
<P>La logica che sta dietro a tutto ci&ograve; &egrave; la seguente: Il ``contatore
MTBSF'' viene decrementato di tante unit&agrave; quanti sono i marcatori di
file contati, il nastro viene fermato e successivamente posizionato
sull'EOT dell'ultimo marcatore di file saltato.  Questo significa che
un <CODE>mt bsf 2</CODE> posizioner&agrave; il nastro esattamente all'inizio del
precedente volume.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.25">11.25 ``Non-riavvolgente'' significa che «non si riavvolge automaticamente», giusto?  Non sta ad indicare che sotto nessuna circostanza non si riavvolger&agrave;, vero?  Ho provato ad utilizzare <CODE>/dev/zqft0</CODE> ed il nastro &egrave; stato subito riavvolto.</A>
</H2>

<P>
<P>Corretto: ``auto-riavvolgente'' significa che il nastro viene
riavvolto quando il file di periferica viene chiusa;
``non-riavvolgente'' sta ad indicare che il nastro non &egrave;
automaticamente riavvolto quando la periferica viene chiusa (ma,
ovviamente, &egrave; possibile utilizzare i comandi <CODE>bsf</CODE> ed <CODE>fsf</CODE> di
movimento del nastro per posizionare la testina in qualsiasi posizione
si desideri).
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.26">11.26 Qual'&egrave; la differenza fra ci&ograve; che <CODE>mt</CODE> considera un record e ci&ograve; che considera un file?</A>
</H2>

<P>
<P>Un record &egrave; il quantitativo minimo di byte che verranno accettati dal
nastro in una singola operazione di lettura/scrittura (tranne che nel
modo ``variable block size mode [modalit&agrave; dimensione blocco
variabile]'', per la quale dovrebbe rappresentare il quantitativo di
dati effettivamente scritti in una singola operazione di scrittura).
<P>Per <CODE>zftape</CODE> ogni accesso per lettura o scrittura deve essere un
multiplo di una dimensione di blocco fissa (fissa, ma regolabile con
<CODE>MTSETBLK</CODE>).  La dimensione di blocco &egrave; un ``tape record [record
del nastro]'' (come viene chiamata nella pagina di manuale di GNU
<CODE>mt</CODE>) ed assume un valore di 10kB per <CODE>zftape</CODE>.
<P>Un ``file'' (nella terminologia delle pagine di manuale di <CODE>mt</CODE>) &egrave;
un termine ben definito.  Sta ad indicare un'area del nastro fra due
marcatori di file.  Questo non &egrave; un file come lo &egrave; quello di un
filesystem, nel senso che possiede un nome, delle modalit&agrave; di accesso,
pu&ograve; essere spostato o copiato con <CODE>cp</CODE>, <CODE>mv</CODE>, <CODE>rm</CODE>, etc.
<P>Al contrario, &egrave; semplicemente l'area del nastro che &egrave; stata registrata
in una sessione di backup, la sua fine &egrave; marcata con un marcatore di
file del nastro e il suo inizio &egrave; delimitato da un BOT o dal marcatore
del ``file'' precedente.  Questi ``file'' di nastro sono oggetti che
possono essere saltati con i comandi <CODE>mt bsf</CODE> ed <CODE>mt fsf</CODE>.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.27">11.27 Riutilizzare nastri con <CODE>zftape</CODE> senza riformattare il nastro.</A>
</H2>

<P>
<P>Proviamo a rispondere alle seguenti domande:
<UL>
<LI>C'&egrave; un buon metodo per cancellare o rimuovere dati, o almeno
volumi dal nastro, senza riformattarlo?
</LI>
<LI>&Egrave; possibile sovrascrivere l'ultimo volume di un nastro senza
fare un disastro?
</LI>
<LI>&Egrave; possibile sovrascrivere gli ultimi volumi senza fare danni?
</LI>
<LI>&Egrave; possibile cancellare l'ultimo volume?</LI>
</UL>
<P>Se si desidera ``cancellare'' un'intera cartuccia, digitare
semplicemente:
<P>
<BLOCKQUOTE><CODE>
<PRE>
mt -f /dev/qft0 erase
</PRE>
</CODE></BLOCKQUOTE>
<P>Questo canceller&agrave; la tavola dei volumi (cio&egrave; i marcatori di file).
<P>Con le versioni di <CODE>ftape</CODE> o <CODE>zftape</CODE> antecedenti la 3.<I>x</I>
era possibile sovrascrivere volumi gi&agrave; presenti sulla cartuccia.  Ho
rimosso questa caratteristica in quanto mi &egrave; stato riferito che ha gi&agrave;
causato la perdita di dati con alcuni programmi di backup.
<P>Se, invece, si necessita di rimuovere alcuni volumi dal nastro, allora
si deve utilizzare il programma
<P>
<BLOCKQUOTE><CODE>
<PRE>
vtblc
</PRE>
</CODE></BLOCKQUOTE>
<P>che viene distribuito con il pacchetto <CODE>ftape-tools</CODE> scaricabile
dallo stesso sito del pacchetto dei driver del kernel di <CODE>ftape</CODE>.
Si prega di fare riferimento alla documentazione contenuta nel
pacchetto <CODE>ftape-tools</CODE> per maggiori informazioni.
<P>Se si desidera semplicemente riutilizzare vecchi nastri, allora &egrave;
sufficiente impartire un
<P>
<BLOCKQUOTE><CODE>
<PRE>
mt rewind
</PRE>
</CODE></BLOCKQUOTE>
<P>Se il nastro si trova al BOT (Begin Of Tape [inizio del nastro]),
allora ogni accesso in scrittura al nastro canceller&agrave; implicitamente
tutti i marcatori di file e sovrascriver&agrave; i dati gi&agrave; presenti sul
nastro.
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<H2><A NAME="ss11.28">11.28 Questo script permette di ottenere un semplice indice di un pacchetto <CODE>zftape</CODE> utilizzando lo ioctl <CODE>TIOCVOLINFO</CODE>.</A>
</H2>

<P>
<P>Qui di seguito viene riportato un piccolo script in perl/bash che list
il contenuto di una cartuccia utilizzando lo specifico ioctl
``volinfo'' di <CODE>zftape</CODE>.  Spero che permetta di capire come
trattare questo tipo di esigenza.
<P>Ci&ograve; che fondamentalmente fa &egrave;:
<OL>
<LI>riavvolgere la cartuccia;
</LI>
<LI>impartire il comando <CODE>volinfo</CODE>

<BLOCKQUOTE><CODE>
<PRE>
   claus@thales:~$ mt volinfo
   file number          = 1
   block size           = 10240
   physical space used  =  522.0 kilobytes
   real size of volume  =  520.0 kilobytes
</PRE>
</CODE></BLOCKQUOTE>


analizzandone il contenuto e posizionando i valori in varibili
appropriate;
</LI>
<LI>saltare al volume successivo con <CODE>mt fsf</CODE>;
</LI>
<LI>uscire se questo produce un errore (EOD), oppure saltare al
secondo passo.</LI>
</OL>
<P><B>Lo script in Perl</B>
<HR>
<PRE>
#!/usr/bin/perl
#
#     Copyright (C) 1997 Claus-Justus Heine
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING.  If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#
#   This script implements a simple contents listing for the zftape
#   package using the MTIOCVOLINFO ioctl.
#

$version = &lt;&lt;EOT;
listtape-1.0 -- a perl script to list the contents of a floppy tape cartridge
under Linux using the zftape driver

RCS \$Revision: 1.16 $
RCS \$Date: 1999/04/05 20:18:16 $
EOT

$tapedev = "/dev/tape";
$usage"= &lt;&lt;EOT;
Usage: listtape [options ...]

Mandatory or optional arguments to long options are mandatory or optional
for short options too.

-f, --file=FILE       Tape device to use. Default is  "/dev/tape".
-h, --help            Print this help.
-?                    Same as '-h'.
--usage           Same as '-h'.
-V, --version         Print version information.

Author: Claus-Justus Heine &lt;claus\@momo.math.rwth-aachen.de>
EOT

while ($ARGV[0] =~ /^-/) {
$_ = shift; 
if (/--file/) {$_ = shift; $tapedev = $_; next;} 
if (/-f/) {$_ = shift; $tapedev = $_; next;} 
if (/--help/) { print $usage; exit 0; }
if (/-h/) { print $usage; exit 0; }
if (/--usage/) { print $usage; exit 0; }
if (/-\?/) { print $usage; exit 0; }
if (/--version/) { print $version; exit 0; }
if (/-V/) { print $version; exit 0; }
die $usage;
}

&amp;open_tape($tapedev, "status");
while(&lt;FTMT>)
{
$online = 1 if (/.*online.*/);
}

if (! $online) { die "No cartridge present.\n"; }

&amp;mtop($tapedev, "rewind");

printf "%11s%12s%20s%20s\n",
"file number", "block size", "volume size", "tape space";

while (1)
{
&amp;open_tape($tapedev, "volinfo");
while (&lt;FTMT>) {
if (/^file number\s*=\s*([0-9]*)$/) { $filenumber = $1; }
if (/^block size\s*=\s*([0-9]*)$/) { $blocksize = $1; }
if (/^physical space used\s*=\s*([[0-9]*.*)/) { $rawsize = $1; }
if (/^real size of volume\s*=\s*([[0-9]*.*)/) { $size = $1; }
}
close(FTMT);
if (&amp;mtop($tapedev, "fsf 1") != 0) {
&amp;mtop($tapedev,"rewind");
print "\nRemaining space: $rawsize\n";
print "Tape block size: $blocksize\n";
exit 0;
}           
printf "%6d          %5d  %20s%20s\n",
    $filenumber, $blocksize, $size, $rawsize;
}

sub mtop
{
local ($tape, $operation) = @_;
local ($exitval);
system "ftmt -f $tape $operation > /dev/null 2>&amp;1";
}

sub open_tape
{
local ($tape, $operation) = @_;
local ($command);

$command = "ftmt -f " . $tape . " " . $operation . " |";
open(FTMT, $command) || die "Couldn't open $command -- $!\n";
}
</PRE>
<HR>
<P>
<P><B>Lo script in Bash</B>
<HR>
<PRE>
#! /bin/bash
#
#     Copyright (C) 1997 Claus-Justus Heine
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING.  If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#
#   This script implements a simple contents listing for the zftape
#   package using the MTIOCVOLINFO ioctl.
#

#
# insert better option parsing here
#
TAPEDEV=${1-/dev/tape}

if ! echo $TAPEDEV | grep "/dev/n"
then
TAPEDEV=/dev/n$(basename $TAPEDEV)
fi

if ! [ -c $TAPEDEV ]
then
echo $TAPEDEV is not a character device!  1>&amp;2
exit 1
fi

if ! mt -f $TAPEDEV rewind
then
echo Could not rewind $TAPEDEV - no cartridge present?  1>&amp;2
exit 1
fi

echo -e "\nContents of $TAPEDEV:\n"

printf "%11s%12s%20s%20s\n" "file number" "block size" "volume size" "tape space"

trap "rm -f /tmp/$0.$$" exit

while true
do
if ! foo=$(mt -f $TAPEDEV volinfo |cut -f 2 -d =)
then
echo $TAPEDEV doesn\'t seem to be a floppy tape device 1>&amp;2
exit 1
fi
#
# "echo foo | read foo" will not work as the "read foo" is executed in
# another shell.
#
echo $foo > /tmp/$0.$$
read file blksz used usedunit size sizeunit &lt; /tmp/$0.$$
if ! mt -f $TAPEDEV fsf 1 > /dev/null 2>&amp;1
then
echo -e "\nRemaining space: $used $usedunit"
echo -e "Tape block size: $blksz"
if ! mt -f $TAPEDEV rewind
then
    echo Rewind of $TAPEDEV failed 1>&amp;2
    exit 1
fi
exit 0
fi
printf "%6d          %5d  %20s%20s\n"\
$file $blksz "$size $sizeunit" "$used $usedunit"
done
</PRE>
<HR>
<P>&lt;risposta di Claus Heine&gt;
<P>
<P>
<HR>
<A HREF="Ftape-HOWTO-12.html">Avanti</A>
<A HREF="Ftape-HOWTO-10.html">Indietro</A>
<A HREF="Ftape-HOWTO.html#toc11">Indice</A>
</BODY>
</HTML>
Results 1 - 1
Help - FTP Sites List - Software Dir.
Searching half a billion files worldwide
© 1997-2009 MARUHN Internet Solutions