Problem mit cpio (8.1/Quantum DLT)
Hallo, ich habe jetzt mal (endlich) anfangen wollen, beim Backup von taper wegzukommen, weil das irgendwie unflexibel ist und eh nur bis 4GB grosse Archive begreift. Nach einigem Lesen bin ich zu dem Schluss gekommen, dass mir cpio am besten gefallen würde, und hab mich demzufolge damit ein wenig versucht. Ergebnis: nüscht geht. Wenn ich mit cpio ein Archiv auf das Tape erstelle, läuft das ganz hervorragend, allerdings scheitert bereits das Einlesen des Archivinhalts mit dem Fehler cpio: read error: Cannot allocate memory und zwar, egal was und wie ich das tue. Ich habe versucht: cpio -o >/dev/st0 (plain old) cpio -oH crc >/dev/st0 (mit CRC) cpio -oH tar >/dev/st0 (im TAR-Format) Das Zurücklesen scheitert in jedem Fall, ob nun mit oder ohne angegebener Formatoption. Wenn ich dagegen ein mit cpio -oH tar beschriebenes Band mit tar -df /dev/st0 überprüfe, klappt das mehr oder weniger. Das drängt mir den Verdacht auf, dass ich entweder was kolossal falsch mache, oder cpio kaputt ist. Hat da jemand gleichlautende Erfahrungen oder gar eine Lösung? Die Konfiguration: Asus P2B-DS 512 MB RAM Quantum DLT7000 (am U2W-Port des AIC-Onboard-Controllers) SuSE 8.1 (2.4.21-215-smp) Daten liegen auf einer md-Partition mit ReiserFS Hoffe, ich hab nix vergessen ;) Gruß, Hannes -- "Nur weil ich paranoid bin, heißt das noch lange nicht, dass sie nicht hinter mir her sind."
Am Samstag, 8. Mai 2004 22:10 schrieb Johannes Studt:
Hallo,
ich habe jetzt mal (endlich) anfangen wollen, beim Backup von taper wegzukommen, weil das irgendwie unflexibel ist und eh nur bis 4GB grosse Archive begreift. Nach einigem Lesen bin ich zu dem Schluss gekommen, dass mir cpio am besten gefallen würde, und hab mich demzufolge damit ein wenig versucht. Ergebnis: nüscht geht.
Wenn ich mit cpio ein Archiv auf das Tape erstelle, läuft das ganz hervorragend, allerdings scheitert bereits das Einlesen des Archivinhalts mit dem Fehler
cpio: read error: Cannot allocate memory
und zwar, egal was und wie ich das tue. Ich habe versucht:
cpio -o >/dev/st0 (plain old) cpio -oH crc >/dev/st0 (mit CRC) cpio -oH tar >/dev/st0 (im TAR-Format)
Das Zurücklesen scheitert in jedem Fall, ob nun mit oder ohne angegebener Formatoption. Wenn ich dagegen ein mit cpio -oH tar beschriebenes Band mit tar -df /dev/st0 überprüfe, klappt das mehr oder weniger. Das drängt mir den Verdacht auf, dass ich entweder was kolossal falsch mache, oder cpio kaputt ist.
Hat da jemand gleichlautende Erfahrungen oder gar eine Lösung?
Prinzipiell arbeitet cpio mit stdin. Wenn Du also etwas auf Band sichern willst, dann musst Du die zu sichernden Pfade per stdin übergeben. Meist wird dazu der find benutzt: find /pfad/zum/verzeichnis -print | cpio -o >/pfad/zum/tape Jan
* Jan Trippler
Prinzipiell arbeitet cpio mit stdin. Wenn Du also etwas auf Band sichern willst, dann musst Du die zu sichernden Pfade per stdin übergeben. Meist wird dazu der find benutzt: find /pfad/zum/verzeichnis -print | cpio -o >/pfad/zum/tape
Schon klar, das habe ich unterschlagen. War sicher nachlässig ;) Das Sichern klappt ja auch einwandfrei, er schreibt stundenlang das Band voll, nur kann ich den Archivinhalt nicht mit cpio wieder einlesen (mit tar geht es, wie beschrieben, wenn ich cpio im tar-Format schreiben lasse). Sorry wegen der Unvollständigkeit. ;) Gruß, Hannes -- Russian roulette for linux: [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "Still breathing, eh?"
Hallo Hannes, Hallo Alle wie lautet das Kommando zum Einlesen der Daten? < /dev/st0 cpio -ivt ??? zum Einlesen eines Inhaltsverzeichnisses des Bandes. -i Input -v Verbose -t conTents Zur Erläuterung: Beim Sichern verwendet cpio Standard Input für die Liste der zu sichernden Dateien (weil früher die Kommandozeile zu kurz bemessen war, um eine so lange Liste aufzunehmen) und ohne die -F Option Standard Output für die Archivdaten. Beim Zurückholen brauchts keine Liste von Dateien auf Standard Input, also werden (auch hier ohne -F Option) die Archivdaten von Standard Input gelesen. Diese Vorgehensweise hat den Vorteil, daß man fast Alles von cpio anderen Programmen vor die Nase setzen kann (z.Bsp. gzip) und umgekehrt auch Alles von anderen Programmen dem cpio überlassen kann. Standard Input und Standard Output ist halt das universelle Konzept von Unix und Linux, einen datenstrom auf die Reise zu schicken. Die oben erwähnte -F Option hat den Vorteil, daß man cpio das Gerät, auf dem das Archiv zu erstellen ist, direkt bekannt machen kann. Mit Standard Output muß cpio bei Ende des Bandes nach dem Gerät fragen, auf dem er weiter machen soll (also Eingabe "/dev/st0"), mit -F Option brauchts nur noch ein "Return", das Gerät kennt cpio ja schon. Uff, jetzt habe doch wieder mehr erzählt, als ich eigentlich wollte. Wenn Du also nicht Alles verstanden haben solltest, dann vergiss vorerst die letzten drei Absätze und lies es später nach. Aber die Art, wie Du gefragt hast, läßt erwarten, daß Du damit sogar klar kommst. Sag mal bescheid. Tschö, Emil Am Samstag, 8. Mai 2004 23:42 schrieb Johannes Studt:
* Jan Trippler
[2004-05-08 22:32]: Prinzipiell arbeitet cpio mit stdin. Wenn Du also etwas auf Band sichern willst, dann musst Du die zu sichernden Pfade per stdin übergeben. Meist wird dazu der find benutzt: find /pfad/zum/verzeichnis -print | cpio -o >/pfad/zum/tape
Schon klar, das habe ich unterschlagen. War sicher nachlässig ;) Das Sichern klappt ja auch einwandfrei, er schreibt stundenlang das Band voll, nur kann ich den Archivinhalt nicht mit cpio wieder einlesen (mit tar geht es, wie beschrieben, wenn ich cpio im tar-Format schreiben lasse).
Sorry wegen der Unvollständigkeit. ;)
Gruß, Hannes
--
Russian roulette for linux: [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "Still breathing, eh?"
-- -------------------------------------------------- Emil Stephan, Marktplatz 39, 53773 Hennef, Germany voice: +49-2242-84438 Accelerate Windows: 9.81 m/sec^2 would be adequate
* Emil Stephan
wie lautet das Kommando zum Einlesen der Daten?
< /dev/st0 cpio -ivt ???
Erst habe ich cpio -itvI /dev/st0 getestet, und nachdem das mit dem memory allocation error fehlschlug, vermutete ich erst, dass es irgendwie ein Problem mit dem Format sein könnte. Entsprechend habe ich dann alle möglichen Formate -H tar|newc|crc getestet (beim Sichern wie beim Wiedereinlesen), und als auch das nix fruchtete, war ich erstmal ratlos und hab die erste Mail an die Liste geschrieben. Inzwischen hat sich ja scheinbar herausgestellt, dass ich nur auf die von cpio standardmässig auf 0 (null) gesetzte Blöckgrösse hereingefallen bin. tar verwendet dort demgegenüber 10kB (wenn ich es richtig im Kopf habe), darum hat das mit tar wohl geklappt. Nunmehr mit der Kommandozeile cpio -itv -C 28672 -I /dev/st0 bzw. cpio -itv --block-size 56 -I /dev/st0 bricht es schonmal nicht mehr mit einem memory allocation error ab, ob es allerdings richtig sichert, kann ich erst am Wochenende testen, da momentan ein produktives Band im Laufwerk liegti, welches noch mit taper beschrieben wird und ich nicht vor Ort bin, um ein Testband einlegen zu können. Aber trotzdem danke für die Zusammenfassung. :)
Aber die Art, wie Du gefragt hast, läßt erwarten, daß Du damit sogar klar kommst.
Danke für die Blumen. :D
Sag mal bescheid.
Bescheid. Gruß, Hannes -- Das Licht am Ende des Tunnels ist ein entgegenkommender Zug. (unbekannter Autor)
Hallo Hannes, Hallo Alle da Du über Probleme mit Blocksizes berichtet hast, wollte ich nochmal ein bisschen schwätzen. Beim Austausch von Daten auf DDS-Medien zwischen verschiedenen Rechnern hatte ich früher auch schon mal Probleme ähnlicher Art. Es gibt nämlich in diesen Laufwerken eine interne Blockgröße, deren genaue Bedeutung ich nicht verstanden habe, mich auch nicht intensiv genug darum gekümmert habe. Hast Du Dir schon mal die Manual-Seite des Programms mt angesehen. Dort sind Flags beschrieben, mit denen an diesen Wert steuern kann (Look for setblk). Dieser wert musste zwischen dem schreibenden Laufwerk und dem lesenden Laufwerk identisch sein. Offensichtlich war es für cpio damals nicht möglich, sich an den vorhandenen Wert anzupassen. Wenn ich dann den richtigen Wert gefunden hatte (manchmal durch Überlegen, manchmal durch trial and error) und mit mt eingestellt hatte, hat es dann funktioniert. Tschö, Emil. Am Dienstag, 11. Mai 2004 14:14 schrieb Johannes Studt:
* Emil Stephan
[2004-05-10 20:26]: wie lautet das Kommando zum Einlesen der Daten?
< /dev/st0 cpio -ivt ???
Erst habe ich
cpio -itvI /dev/st0
getestet, und nachdem das mit dem memory allocation error fehlschlug, vermutete ich erst, dass es irgendwie ein Problem mit dem Format sein könnte. Entsprechend habe ich dann alle möglichen Formate -H tar|newc|crc getestet (beim Sichern wie beim Wiedereinlesen), und als auch das nix fruchtete, war ich erstmal ratlos und hab die erste Mail an die Liste geschrieben. Inzwischen hat sich ja scheinbar herausgestellt, dass ich nur auf die von cpio standardmässig auf 0 (null) gesetzte Blöckgrösse hereingefallen bin. tar verwendet dort demgegenüber 10kB (wenn ich es richtig im Kopf habe), darum hat das mit tar wohl geklappt. Nunmehr mit der Kommandozeile
cpio -itv -C 28672 -I /dev/st0
bzw.
cpio -itv --block-size 56 -I /dev/st0
bricht es schonmal nicht mehr mit einem memory allocation error ab, ob es allerdings richtig sichert, kann ich erst am Wochenende testen, da momentan ein produktives Band im Laufwerk liegti, welches noch mit taper beschrieben wird und ich nicht vor Ort bin, um ein Testband einlegen zu können.
Aber trotzdem danke für die Zusammenfassung. :)
Aber die Art, wie Du gefragt hast, läßt erwarten, daß Du damit sogar klar kommst.
Danke für die Blumen. :D
Sag mal bescheid.
Bescheid.
Gruß, Hannes
--
Das Licht am Ende des Tunnels ist ein entgegenkommender Zug. (unbekannter Autor)
-- -------------------------------------------------- Emil Stephan, Marktplatz 39, 53773 Hennef, Germany voice: +49-2242-84438 Accelerate Windows: 9.81 m/sec^2 would be adequate
* Emil Stephan
Wenn ich dann den richtigen Wert gefunden hatte (manchmal durch Überlegen, manchmal durch trial and error) und mit mt eingestellt hatte, hat es dann funktioniert.
Ach, was man mit mt da einstellt, wird irgendwo im Laufwerk oder was-weiss-ich-wo permanent gespeichert? Ich dachte, das gilt nur für den aktuellen mt-Lauf. Muss ich mal testen, danke. Gruß, Hannes -- Russian roulette for linux: [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "Still breathing, eh?"
* To SuSE-ML
Wenn ich mit cpio ein Archiv auf das Tape erstelle, läuft das ganz hervorragend, allerdings scheitert bereits das Einlesen des Archivinhalts mit dem Fehler
cpio: read error: Cannot allocate memory
und zwar, egal was und wie ich das tue. Ich habe versucht:
Hab jetzt zufällig den Gedanken gehabt, mal in taper die Blocksize anzuschauen (dort steht 028K), und daraus kühn und sowjetisch eine Blockanzahl von 56 Blöcken errechnet (in der cpio-manpage steht was von Blocksize 512 Byte), und schon funktioniert da immerhin etwas, d.h. ich bekomme nicht mehr besagte Fehlermeldung, sondern nur alle möglichen Fehler, dass auf dem Band keine TAR- bzw. CPIO-Archive wären (was ich auch irgendwo verstehen kann, schliesslich ist das Band mit taper beschrieben worden :D). Da bleiben aber einige Fragen: - warum, zum Geier, bekomme ich eine derart irreführende Fehlermeldung? - warum funktioniert das Backup klaglos (auch ohne Angabe der Blocksize), während das Wiedereinlesen abbricht? - warum ist tar das vollkommen egal, ob ich die Blocksize angebe, und cpio fällt auf die Nase? - was für Blocksizes sind da jetzt gemeint? Ist das die Summe der Daten, die das Programm auf einen Rutsch an das Laufwerk (oder dessen Pufferspeicher) abdrückt bzw. von da anfordert, oder hängt das irgendwie mit dem physischen Format des Bands zusammen, oder hab ich irgendwie den Finger noch gar nicht auf der richtigen Stelle? Jede Hilfe bzw. Interpretationsansatz sehr willkommen. ;) Gruß, Hannes -- "Nur weil ich paranoid bin, heißt das noch lange nicht, dass sie nicht hinter mir her sind."
participants (3)
-
Emil Stephan
-
Jan.Trippler@t-online.de
-
Johannes Studt