Hallo,
ich versuche mittels ssh und tar auf einen streamer zu schreiben:
<i>ssh user@rechner 'tar -c -z --block-size=32768 /home/user/' > dev/nst1</i>
Fehlermeldung des Treibers in der /var/log/messages:
<i>st1: Write not multiple of tape block size.</i>
Wie kann ich dieses Problem lösen?
<i>tar -c -z --block-size=32768 -f /dev/nst1 /irgendwas</i> funktioniert fehlerfrei.
Tschüß
Arnie
ssh, tar, streamer
Re: ssh, tar, streamer
Ich würde sagen, dass Du den Streamer auf irgendeine feste Blockung eingestellt hast. Ein reines Umlenken von stdout schreibt ohne Blockung und dann streikt das Tape.
Blockung feststellen:
mt -f /dev/nst1 status
Blockung ausschalten:
mt -f /dev/nst1 setblk 0
Oder aber geblockt schreiben:
ssh user@rechner 'tar -c -z --block-size=32768 /home/user/' | dd of=/dev/nst1 bs=32768
Jochen
Blockung feststellen:
mt -f /dev/nst1 status
Blockung ausschalten:
mt -f /dev/nst1 setblk 0
Oder aber geblockt schreiben:
ssh user@rechner 'tar -c -z --block-size=32768 /home/user/' | dd of=/dev/nst1 bs=32768
Jochen
Re: ssh, tar, streamer
Wie wäre es mit:
ssh user@rechner 'tar cfz --block-size=32768 /dev/nst1 /home/user/'
Vorausgesetzt, die Blockgröße stimmt, brauchst Du aber selten.
ein "mt -f /dev/nst1 setblk 0" ist da angenehmer, kann aber auf anderen Unices zu Problemen mit dem Rücksichern führen - für rein Linux allerdins ideal, sofern das Laufwerk das mitmacht. Des weiteren ist das erste Bandlaufwerk /dev/nst0 (/dev/st0), nur zur Info - /dev/nst1 stellt das zweite Bandlaufwerk dar.
ssh user@rechner 'tar cfz --block-size=32768 /dev/nst1 /home/user/'
Vorausgesetzt, die Blockgröße stimmt, brauchst Du aber selten.
ein "mt -f /dev/nst1 setblk 0" ist da angenehmer, kann aber auf anderen Unices zu Problemen mit dem Rücksichern führen - für rein Linux allerdins ideal, sofern das Laufwerk das mitmacht. Des weiteren ist das erste Bandlaufwerk /dev/nst0 (/dev/st0), nur zur Info - /dev/nst1 stellt das zweite Bandlaufwerk dar.
Re: ssh, tar, streamer
@tuxic:
ssh startet tar von Rechner A auf Rechner B; dessen stdout kommt über stdout und ssh zurück zu Rechner A und soll dort auf's Tape. Deine Lösung stösst lediglich eine Sicherung von A auf B an, mit einem Tapedrive an B vorausgesetzt.
Oder habe <i>ich</i> etwas falsch verstanden?
Jochen
ssh startet tar von Rechner A auf Rechner B; dessen stdout kommt über stdout und ssh zurück zu Rechner A und soll dort auf's Tape. Deine Lösung stösst lediglich eine Sicherung von A auf B an, mit einem Tapedrive an B vorausgesetzt.
Oder habe <i>ich</i> etwas falsch verstanden?
Jochen
Re: ssh, tar, streamer
Hallo Jochen,
du hast es richtig verstanden, aber ...
der streamer läßt sich nicht darauf ein, das blocking abzustellen. Auszug aus der logdatei:
<i>kernel: st1: Error with sense data: Current st09:01: sense key Illegal Request
kernel: Additional sense indicates Parameter not supported</i>
die variante mit dd führt zu folgender ausgabe:
<i>dd: Schreiben von »/dev/nst1«: Das Argument ist ungültig
0+1 Records ein
0+0 Records aus</i>
und in der logdatei steht wiedermal:
<i>kernel: st1: Write not multiple of tape block size.</i>
trotzdem danke für die tipps.
Tschüß
Arnie
du hast es richtig verstanden, aber ...
der streamer läßt sich nicht darauf ein, das blocking abzustellen. Auszug aus der logdatei:
<i>kernel: st1: Error with sense data: Current st09:01: sense key Illegal Request
kernel: Additional sense indicates Parameter not supported</i>
die variante mit dd führt zu folgender ausgabe:
<i>dd: Schreiben von »/dev/nst1«: Das Argument ist ungültig
0+1 Records ein
0+0 Records aus</i>
und in der logdatei steht wiedermal:
<i>kernel: st1: Write not multiple of tape block size.</i>
trotzdem danke für die tipps.
Tschüß
Arnie
Re: ssh, tar, streamer
Typischerweise sind alle Blöckgrössen Mehrfache von 512. Verwende doch noch mal die Kombi mit dd, aber diesmal mit Blockgrösse 512:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
ssh user@rechner 'tar -c -z --block-size=32768 /home/user/' | dd of=/dev/nst1 bs=512
</font><hr></pre></blockquote>
Oder vielleicht "obs=512", um explizit die Output-Blocksize auf 512 Byte zu setzen?
Am Rande: Was für ein Streamer ist es denn? Was sagt das "mt -f /dev/nst1 status"?
Jochen
ssh user@rechner 'tar -c -z --block-size=32768 /home/user/' | dd of=/dev/nst1 bs=512
</font><hr></pre></blockquote>
Oder vielleicht "obs=512", um explizit die Output-Blocksize auf 512 Byte zu setzen?
Am Rande: Was für ein Streamer ist es denn? Was sagt das "mt -f /dev/nst1 status"?
Jochen
Re: ssh, tar, streamer
Zur Not, falls es sich um ein vertrauenswürdiges Netz handelt und Du rshd auf dem Client laufen haben solltest, nimmst Du den anderen Weg:
ssh user@rechner # Einloggen auf dem Rechner mit dem Bandlaufwerk
password:
tar cvf clientrechner:/verzeichnis /dev/nst1
Geht aber wohl auch nur mit gnutar.
Hab mal
tar cvf - /home/user | ssh user@rechner 'tar cf /dev/nst1 -"
versucht, klappt aber konischerweise nicht. Er weigert sich, warum auch immer, das zweite "-" als stdin anzuerkennen sondern sucht eine Datei namens "-", die es logischerweisw nichr gibt. Wobei ich mir auch nicht sicher bin, ob das erste "-" überhaupt auch als stdout verwendet wird.
ssh user@rechner # Einloggen auf dem Rechner mit dem Bandlaufwerk
password:
tar cvf clientrechner:/verzeichnis /dev/nst1
Geht aber wohl auch nur mit gnutar.
Hab mal
tar cvf - /home/user | ssh user@rechner 'tar cf /dev/nst1 -"
versucht, klappt aber konischerweise nicht. Er weigert sich, warum auch immer, das zweite "-" als stdin anzuerkennen sondern sucht eine Datei namens "-", die es logischerweisw nichr gibt. Wobei ich mir auch nicht sicher bin, ob das erste "-" überhaupt auch als stdout verwendet wird.