# Red Hat Enterprise CPIO



## Iceman8712 (23. Juni 2005)

hi all,
ich möchte gerne mit dem befehl CPIO per netzwerk von einem andere computer ein Backup machen. Danach möchte ich es wieder zurückspielen... weiss jemand wie das funktioniert..? ich habe bisher die optionen:

cpio [-O [[User@]Host:]Datei]


----------



## Iceman8712 (23. Juni 2005)

ich muss ja irgendwo angeben welchen Computer, die ganze Festplatte, wohin und so weiter...


----------



## Iceman8712 (28. Juni 2005)

links wären sicher auch willkommen...

ausserdem habe ich schon 2 linux bücher angeschaut, da steht diese option allerdings niemand drin.....


----------



## deepthroat (28. Juni 2005)

Du kannst mit cpio lediglich lokale Dateien zu einem Remote-Rechners transferieren. Das heißt du mußt cpio auf dem Rechner ausführen, auf dem die Daten sind die du sichern willst.

Die Dateien die cpio ins Archiv packen soll erwartet cpio auf der Standard-Eingabe. 

$ echo "/tmp/foo.txt" | cpio -o -O /tmp/foo.cpio

Der Befehl würde ein Archive "/tmp/foo.cpio" anlegen und die Datei "/tmp/foo.txt" darin speichern.

Um ein ganzes Verzeichnis oder nur Teile davon zu sichern und auf einem Remote-Rechner zu speichern:

$ cd ; find -xdev -print0 | cpio -o -0 -O user@box:/backup/users_home.cpio

Der Befehl würde ins Home Verzeichnis wechseln, find druckt dann alle Dateien und Verzeichnisse auf die Standardausgabe welche mit der Standardeingabe von cpio verbunden ist und cpio kopiert die Dateien dann ins Archiv.

Vielleicht sollteste dir mal rsync anschauen.


----------



## Iceman8712 (28. Juni 2005)

ok, werde ich mal mit CPIO ausprobieren und danach noch rsync anschauen.. falls ich immerno noch nicht weiterkomme, werde ich mich melden...
thanks


----------



## Iceman8712 (28. Juni 2005)

ich habe gesehen dass du bei rsync synchronisieren kannst... das prob ist eben, das ich gerne über netzwerk ein backup machen will... z.b. all tag ein backup...

die frage ist ob mit rsync z.b. sagen kannst expire 24h, dann wäre dies die gute lösung weil es per netzwerk funktioniert... was mit cpio nicht funktioniert... so weit ich weiss...


----------



## deepthroat (28. Juni 2005)

Du willst jeden Tag ein Backup machen, aber alle alten oder zumindest ein paar alte Backups aufheben? Versteh ich das richtig?

Also rsync ist eigentlich nur in der Lage eine Kopie zu erstellen und die dann up-to-date zu halten. Man könnte natürlich mehrere Unterverzeichnisse auf dem Backup Server kreieren (z.B. wenn du mit cron täglich ein Skript laufen läßt, dann legt das Skript erstmal ein Verzeichnis /backup/client-$(date +%Y-%m-%d) an) und läßt rsync dann die Daten dahinein sichern.

Man verliert dann natürlich eigentlich den Vorteil von rsync da es normalerweise nur die Unterschiede zwischen Dateien herunterlädt und so muß es halt jedesmal eine komplette Kopie ziehen.

Andererseits, wenn du natürlich eine komplette History, also alle alten Versionen aufheben möchtest, wäre ein VersionControlSystem wie z.B. monotone oder subversion evtl. besser geeignet. So würden auch immer nur die Änderungen gespeichert und man könnte jede einzelne Änderung nachvollziehen (kommt nur auf die gewünschte Granularität an, man könnte ja evtl. auch stündlich ein Update machen).


----------



## Iceman8712 (29. Juni 2005)

Ich habe mal folgende befehle verwendet:

zum archiv machen:

ls * | cpio -o > backup.cpio

zum öffnen:

cpio -i < backup.cpio

zum anschauen:

cpio -t < Linuxfibel.cpio

wie kann ich die jetzt z.b. auf ein Streamer (bandlaufwerk mit tapes) sichern? muss ich das gerät zuerst noch mounten...?

hat mir sonst noch jemand tipps zu diesem befehl... rsync und tar kenne ich schon.. also da br$uchte ich nix zu....

thanks...


----------



## deepthroat (29. Juni 2005)

Nee, mounten mußte das Tape nicht mehr:

$ ls * | cpio -ocvB > /dev/rst8

-c bedeutet das neue SVR4 format zu verwenden, was eigentlich eine gute Idee ist. Stattdessen könntest du auch "-H crc" verwenden, was zusätzlich Checksummen mit in das Archiv schreibt.


----------



## Iceman8712 (30. Juni 2005)

wie ist dann der name des backups?

Ausserdem, wenn ich 

ls * | cpio -o > backup.cpio

dann macht es mir irgendwie kein backup von den ordnern...! also wenn ich

cpio -t < backup.cpio eingebe, dann ist das nur 4608 gross, aber das müsste doch viel grösser sein, wenn ich ein backup vom ROOT mache... da hat es ja ETC, DEV, BIN, USR und so weiter... das müsste doch viel grösser sein...

ich habe mich gefragt, ob das vielleicht daran liegt, das ich ls * nehme... ob er da die ordner nicht mitnimmt oder so... obwohl wenn ich das backup anzeige sind die ordner auch drauf... aber irgendwie dunkt mich auch das es nicht geht... wenn ich den befehl von oben eingebe

ls * | cpio -o > backup.cpio

oder

ls * | cpio -ocvB > dev/rmt/

dann steht immer: No Such File Or Directory.... ich bin echt langsam ratlos...  

Mit diesem Befehl gings zum auf das tape zu schreiben:

find . -print | cpio -ovcB > /dev/rmt/


----------



## deepthroat (30. Juni 2005)

Das Archiv hat keinen Namen, es ist einfach nur als Datei (ohne Namen) auf dem Tape drauf. Mit "mt" kann dann das Magnetband-Laufwerk kontrollieren. (man mt)

cpio arbeitet nicht rekursiv auf Ordnern, deswegen benutzt man ja auch find um alle Dateien zu finden die cpio dann in das Archiv schreiben soll.

Warum hängst du denn einen Schrägstrich an das Gerät an? Es sollte "/dev/rmt" sein (wenn das dein Tape Gerät ist).


----------



## Iceman8712 (30. Juni 2005)

ja richtig den / weglassen beim tape /dev/rmt ist richtig

ok, danke für deine erklärungen... schaue mir das noch an mit man mt.. thanks


----------

