# scdbackup-0.9.0 http://scdbackup.webframe.org scdbackup@gmx.net Thomas Schmitt http://scdbackup.sourceforge.net Zweck: Backup grosser Datenmengen auf ein oder mehrere CDs oder DVDs, einfach (keine Ausreden, den Backup nicht zu machen), keine speziellen Werkzeuge zum Lesen des Backups noetig Formate: ISO9660 Filesystem (lesbar machen mit : mount) afio-Archiv (lesbar mit : afio ... /dev/cdrom) star-Archiv (lesbar mit : star ... &2 read dummy done ) | afio ... Es gibt eine passende Option, die den Pruefkommandos mitteilt, dass es sich um ein Multi-Volume-Archiv handelt (siehe unten). Die Ueberlaufgroesse fuer CD kann durch den Konfigurationsfile scdbackup_media_cap_value oder die Shellvariable SCDBACKUP_MEDIA_CAP anders eingestellt werden. (DVD: sdvdbackup_media_cap_value , SDVDBACKUP_MEDIA_CAP) Wenn Sie die Standardwerte 650m / 4480m aendern, muessen Sie sich das auf einem Zettel notieren oder die Groesse auf die raedchen-Floppy schreiben. Wiederaufnahme eines Backuplaufs Alle Backupkommandos koennen mit dem ersten Argument -resume und auf Wunsch mit einer Nummer als zweitem Argument gestartet werden. Sie beginnen dann mit dem existierenden Backupskript an dem Stueck, das durch die Nummer bezeichnet wird. Ein Minuszeichen vor der Nummer bewirkt, dass nur dieses eine Stueck erzeugt wird und das Skript dann endet. Wenn die Nummer fehlt (oder das zweite Argument "AUTO" lautet) dann beginnt das Skript bei dem Stueck, dessen Nummer im Statusfile steht ({skriptname}.pieceno). scdbackup , scdbackup_sys und scdbackup_afio erkennen folgende Optionen, wenn sie als erstes Argument angegeben werden : -prepare_only nur vorbereiten fuer -resume, keine CD brennen -last_volume_count gibt die Anzahl der Backupstuecke aus Das Skript outer_loop zeigt (in englisch), wie man sie nutzen kann. Ergebnis CDs oder DVDs ueberpruefen Zuallererst : dieses Pruefkommando stellt *nicht* sicher, dass der Backup enthaelt was *gewuenscht* ist. Ob scdbackup oder auch man selbst alles richtig gemacht hat, muss man durch qualifiziertes Betrachten des CD-Inhalts feststellen. Das heisst mindestens : Auf plausible Datenmenge achten, einige Filenamen mit ASKME lokalisieren und auf der entsprechenden CD nachsehen, ob sie dort auch vorhanden sind. Was diese Pruefung aber sicherstellt ist, dass der Datenstrom korrekt auf die CD uebertragen wurde und dass er ohne Verfaelschung wieder heruntergelesen werden kann. (Es besteht nur die extrem winzige Chance von 1 zu 3e38, dass eine Verfaelschung unerkannt bliebe.) Geprueft werden also CD-Rekorder, CD-Medium und CD-Lesegeraet. Damit eine CD ueberpruefbar ist, muss sie von scdbackup 0.8 oder moderner erzeugt worden sein, wobei der File scdbackup_make_checksum_value seinen Inhalt aus KONFIGURIEREN_* noch haben muss. Mit dieser Einstellung registrieren die Kommandos scdbackup, scdbackup_home, scdbackup_sys und scdbackup_afio die Groesse und eine MD5 Pruefsumme von jedem Teilstueck, das geschrieben wird. Diese Aufzeichnung dient spaeter der Pruefung der CD. Sie liegt aber erst seit scdbackup Version 0.8.3 am Ende der Nutzdaten auf dem Medium. Bei allen Versionen ab 0.8 ist sie auf jeden Fall in einem Listenfile auf der Festplatte des Rechners gespeichert. scdbackup_verify Liest rohe Daten von einer CD und prueft, ob es dieselben sind, die an cdrecord uebergeben wurden. Es liest die Daten von /dev/cdrom und vergleicht sie mit dem juengsten geschriebenen Teilstueck. scdbackup_verify -auto sammelt aufgezeichnete Pruefsummen aus allen Quellen und prueft, ob eine passt oder einen offensichtlichen Fehler anzeigt. So kann man noch nach Jahren bequem CDs pruefen. Andere Datenquellen (CD-Laufwerke) oder Aufzeichnungen aelterer CDs koennen mit Optionen von scdbackup_verify ausgewaehlt werden. ZB. scdbackup_verify /dev/cdrom -auto Bei Backups aus Versionen 0.8 bis 0.8.2 muss man dazu allerdings die Liste der Pruefsummenrecords haben. Siehe Ausgabe von scdbackup_verify -hilfe bzw. File scdbackup_verify_hilfe wegen einer Beschreibung der Optionen, dem Namen des Listenfiles und weiteren Beispielen. Das Kommando liest die gesamte CD und berichtet das Ergebnis sowohl durch einen Text auf stderr als auch durch seinen Exitwert : * "OK ..." und ein Exitwert von 0 zeigen eine erfolgreiche Pruefung mit positivem Ausgang an. * Verschiedene Beschwerden in GROSSBUCHSTABEN und ein Exitwert 1 bedeuten eine fehlerhafte oder verwechselte CD. sdvdbackup_verify DVD Version des obigen. Nutzt einen anderen Listenfile ! Die Liste der Records wird normalerweise im File logs/backup_log bzw. logs/backup_dvd_log unter dem Installationsdirectory von scdbackup gespeichert. Bei normaler Installation von scdbackup muss man zum Lesen der Liste der User sein, der die CD gebrannt hat. Man kann die Adresse dauerhaft aendern und zwar durch diese Files : scdbackup_checksum_list_value bzw. sdvdbackup_checksum_list_value Man kann sie auch durch exportieren von Shellvariablen zeitweilig ueberstimmen: SCDBACKUP_CHECKSUM_LIST bzw. SDVDBACKUP_CHECKSUM_LIST Die Pruefsummenberechnung und die Prueflaeufe basieren auf den Optionen -filter_md5 , -compare_checksum und -search_md5 von bin/cd_backup_planer . Das Format der Pruefsummenrecords und -marken ist weiter unten in Anhang VERIFIZIEREN beschrieben. Bei Multi-Volume-Archiven (siehe oben) muss man die Kapazitaetsgrenze angeben, die beim Schreiben des Backups eingestellt war. zB: scdbackup_verify /dev/cdrom -auto - - 650m sdvdbackup_verify /dev/dvd -auto - - 4480m Wenn die Ueberpruefung gleich nach dem Schreiben fehlschlaegt, dann kann man das Backupstueck wiederholen, indem man bei -resume die Nummer mit angibt. ZB. sdvdbackup -resume 3 Man sollte die gelagerten Backups regelmaessig auf korrekte Lesbarkeit pruefen. scdbackup_verify -auto Wenn dabei die Pruefung fehlschlaegt, sollte man moeglichst schnell den ganzen Backup mit allen Stuecken durch einen neuen ersetzen. Sollte das nicht moeglich sein, dann kann man mehrfach versuchen, den Daten- traeger auf eine zuverlaessige Platte zu kopieren und dann pruefen, ob es vielleicht doch geklappt hat. Das kann gerade bei leicht beschaedigten DVDs durchaus Erfolg bringen dd if=/dev/cdrom of=/tmp/hoffentlich_gesunder_image_file bs=2048 scdbackup_verify /tmp/hoffentlich_gesunder_image_file -auto Wenn das geklappt hat, kopiert man das ganze auf einen neuen Datentraeger cat /tmp/hoffentlich_gesunder_image_file | scdbackup -pipe_to_media DVD liefern oft deutlich mehr Daten als draufgeschrieben wurden. Wenn man die Groesse der Nutzdaten bereits grob kennt, sollte man das Einlesen auf diese Groesse plus drei MB beschraenken. ZB: dd if=/dev/cdrom of=/tmp/hoffentlich_gesunder_image_file bs=1M count=1718 nachdem sdvdbackup_verify /dev/cdrom -auto_end nach ""1715m bytes" Erfolg oder Misserfolg gemeldet hatte. Wenn die Groesse nicht von vorherigen Verify-Laeufen bekannt ist, dann kann man die Ausgabe nach dem erfolgreichen Verfizieren auf der Platte begrenzen: dd if=/tmp/hoffentlich_gesunder_image_file bs=1M count=1718 | \ sdvdbackup -pipe_to_media Hinweis: alte Filesysteme vertragen evtl. keinen File mit 4200 MB. Wenn man erwarten muss, dass sich ein Backup spaeter nicht mehr neu machen laesst (zB. weil es kein Backup sondern eine Datenauslagerung ist), dann sollte man den Einsatz von Blockpruefsummenlisten erwaegen und auch mehrere identische Kopien herstellen. Siehe Anhang REDUNDANZ. CD-RW und DVD-RW loeschen , Datentraeger unlesbar machen Wenn eine CD-RW bereits beschrieben wurde und wiederverwendet werden soll, ist es noetig, sie zu loeschen. Das selbe kann u.U. bei DVD-RW noetig sein. Der Vorgang des Loeschens beschaedigt natuerlich die Daten auf der CD-RW. Wenn automatisches Loeschen mit "1" (oder "j") konfiguriert ist, dann werden bei jedem Backup die Datentraeger entsprechend ihrem automatisch erkannten Typ und Zustand vorbehandelt. Normalerweise ist diese Typerkennung zuverlaessig. Wenn jedoch der Typ des Datentraegers nicht erkannt werden kann oder wenn er sich fuer das backupkommando nicht eignet, dann bricht der backuplauf ab. Er kann wiederaufgenommen werden, nachdem der Datentraeger von Hand in einen beschreibbaren Zustand gebracht und das automatische Loeschen zeitweilig ausgeschaltet wurde: export SCDBACKUP_BLANKEN=0 scdbackup -resume Nicht nur in Problemfaellen sondern auch mit gut erkennbaren Datentraegern kann es sinnvoll sein, das Loeschen getrennt vom Backup vorher zu erledigen. Je nach Optionen, Brenner und Schreibprogramm kann das Loeschen einige Zeit dauern. So ist es nuetzlich, einige geloeschte CD-RW bereit zu haben. Ausserdem koennte man manchmal ungewoehnliche Blanking Options anwenden wollen. Bei DVD+RW ist kein Loeschen noetig, um den Datentraeger wieder beschreibbar zu machen. Nichtsdestotrotz kann die Option "shred" sehr hilfreich fuer den persoenlichen Datenschutz sein. DVD-RW fuer den Gebrauch mit den Programmen growisofs oder cdrskin sollten ein einziges mal mit Option "force" geloescht und in den missverstaendlich benannten Modus "Restricted Overwrite" gebracht werden. Beide Programme verhaltien sich mit ihnen danach genau wie mit DVD+RW. DVD-RW fuer cdrecord oder wodim muessen vor jeder Wiederverwendung genau wie CD-RW geloescht werden. Das selbe trifft auch bei growisofs und cdrskin auf DVD-RW zu, die fabrikneu unformatiert beschrieben wurden oder in den Modus "Sequential" gebracht wurden. "shred" ist eine Option, die Datentraeger nicht unbedingt wieder schreibbar macht, sondern ihn mit Zufallsdaten fuellt. Danach sind die vorher gespeicherten Daten nicht mehr ohne besondere Anstrengungen lesbar. Die Menge der Zufallsdaten kann mit dem zweiten Argument eingestellt werden. scdbackup_blank fordert dazu auf, die CD-RW einzulegen und 'Enter' zu druecken. Wenn ein Argument bei diesem Programm angegeben wird, dann wird es als Blanking Option verwendet. Uebliche Werte sind "fast" (nur das noetigste loeschen) oder "all" (die ganze CD-RW bearbeiten). Eine (englische) Liste der moeglichen Optionen erhaelt man mit der Option: blank=help des Brennprogramms (cdrecord, wodim, oder cdrskin). Wenn im File scdbackup_blanken_value automatisches Loeschen bestellt ist, dann wird die dortige Blanking Option verwendet. Im Zweifelsfall wird Option "fast" verwendet. sdvdbackup_blank DVD Version des obigen. Das Verhalten haengt etwas vom konfigurierten Schreib- programm und Medientyp ab. Fuer DVD+RW wirkt nur Option "shred". Fuer cdrecord, wodim und DVD-RW : siehe scdbackup_blank. Fuer growisofs, cdrskin mit DVD-RW : Die Optionen "all", "full" und "sequential" fuehren zum Modus "Sequential", alle anderen fuehren zum bequemen Modus "Restricted Overwrite". Beide Kommandos versuchen herauszufinden, welche Art von Medium sich im Laufwerk befindet. Das haengt stark von nicht ausdruecklich offiziellen Ausgaben der Programme dvd+rw-mediainfo bzw. cdrecord, wodim oder cdrskin ab. Falls die Klassifizierung misslingt, wird der Anwender gefragt, einen der Typen "CD-RW", "DVD-RW" oder "DVD+RW" zu authorisieren. Der Bestimmungsversuch und ggf. die Frage kann durch das dritte Argument des Kommandos vermieden werden. zB: sdvdbackup_blank all - DVD-RW WARNUNG: Diese Kommandos nicht bei einmal beschreibbaren Medien anwenden ! Wenn zB. eine DVD-R nicht erkannt oder vom Anwender zur DVD+RW erklaert wird, dann wird sie durch "shred" endgueltig verbraucht. Nach einem kleinen Backup kann man die Ueberreste von groesseren Backups ohne Probleme von einer DVD+RW lesen, bis diese wirklich ueberschrieben werden. DVDs mit vertraulichen Daten sollte man daher vor der Wiederverwendung mit sdvdbackup_blank shred behandeln. Bei hohem Sicherheitsbeduerfnis durchaus mehrfach wiederholen. Option "shred" erklaert zunaechst was im einzelnen passieren wird und fragt erneut nach einer Bestaetigung durch die Eingabetaste. Die Aktionen bestehen noetigenfalls aus einem einen geigneten Loeschvorgang und danach dem Schreiben der festgelegten Datenmenge auf den Datentraeger. Diese Menge kann mit dem zweiten Argument des Kommandos eingestellt werden. Zum Beispiel : sdvdbackup_blank shred 4.7e9 Fehlt das zweite Argument, dann gilt die Einstellung scdbackup_media_cap_value bzw. sdvdbackup_media_cap_value . Normalerweise sollte die Standardgroesse von 4480m ausreichen, um jedes echte Datenbyte auf einer DVD zu erschlagen. Man kann sich auch an der Maximalgroesse orientieren, die growisofs beim Schreiben meldet. Wegen der Pruefsummenmarke sollte man 200 abziehen (zB.: shred 4700372792 ). Ueberreste von Backups, die mit Version 0.8.3 oder moderner gemacht wurden, kann man mit dem Kommando scdbackup_verify -scan_print aufspueren. zB zeigt : - 1_1 A40907.115444 4699824167 7ec3be0efef3f27dd7ec90216d2ee3b4 an, dass Backupdaten bis Byte Nummer 4699824167 geschrieben wurden. Die Option "shred" produziert einen Pruefsummenrecord namens "shredded" und kann daher zusammen mit s*backup_verify auch als Qualitaetstest fuer den ganzen Datentraeger verwendet werden. Eine grosse Organisation, die davon ausgeht, viele Feinde zu haben, schreibt vor, dass zusaetzlich zum Ueberschreiben mit Zufallsdaten auch noch mit einem Byte ("character") und seinem binaeren Komplement ueberschrieben werden muss. Ausserdem wird eine Pruefung des Zufallsschreibens verlangt. Dieselbe Organisation erlaubt bei "TOP SECRET" Medien keine solche Loeschung sondern verlangt deren voellige physikalische Zerstoerung. Obwohl ich bezweifle, dass das binaere Komplement bei CD/DVD seine gewuenschte Wirkung entfaltet, gibt es zwei Optionen , die diese beiden Schreibvorgaenge erledigen. Ein vorschriftsmaessiger Durchgang sieht dann etwa so aus : export SCDBACKUP_BLANK_CHARACTER="U" sdvdbackup_blank character 4.7e9 sdvdbackup_blank complement 4.7e9 sdvdbackup_blank shred 4.7e9 sdvdbackup_verify Als konstantes Byte wird hier das grosse "U" verwendet (= 01010101). Mit der Variablen SCDBACKUP_BLANK_CHARACTER kann man einen anderen normalen Buchstaben oder eine Ziffer bestellen. Von Sonderzeichen sollte man Abstand nehmen. Inkrementelle Backups Bei groesseren Datenmengen wird es laestig bis unmoeglich die alten Daten mit jedem Lauf neu zu sichern. Um dies (mit gewissen Einschraenkungen) zu vermeiden, kann man ein inkrementelles Backupschema verwenden. Solch ein Backup besteht aus einem Basisbackup, der schon etwas aelter sein kann jedoch eine vollstaendige Kopie aller Files jeden Alters enthaelt. Auf diesem Basisbackup setzen Auffrischungsebenen auf, die zunehmend kurz- fristigere Ergaenzungen enthalten. Das spart eine Menge Zeit und CDs, bietet jedoch eine aehnliche Sicherheit wie eine Reihe von vollstaendigen Backups. Man sollte etwas von der Ersparnis in haeufigere Backups und laengere Lagerzeiten der CDs investieren, um die geringere Redundanz der Medien auszugleichen. Es muss betont werden, dass die korrekte Rueckinstallation eines mehrebigen Backups wesentlich komplizierter ist, als bei einem Vollbackup. Bedenken Sie Ihre zukuenftige Situation, falls Sie den Backup wirklich in vollem Umfang benoetigen sollten. Waegen Sie ab, ob die Entlastung gegenueber einem Vollbackup wirklich die zusaetzliche Belastung im Notfall rechtfertigt. Beginnen Sie aber spaetestens mit inkrementellen Backups, wenn Sie Vollbackups wegen ihres Aufwandes auslassen muessten. Zu Anfang muss eine Backupkonfiguration erzeugt werden. Sie speichert alle Parameter des Backups und der Zeitpunkte, zu denen Backups gemacht wurden. Danach wird automatisch ein erster Basisbackup (-level 0) gestartet. Waehlen Sie einen Konfigurationsnamen, der sich zur Erzeugung eines Directory eignet. Z.B.: $HOME/my_backup : $ scdbackup ... die ueblichen Argumente Ihres backups ... \ -conf_dir $HOME/my_backup -level -create_configuration Nach diesem ersten Lauf braucht man beim Backup nur noch den Namen der Konfiguration und die gewuenschte Auffrischungsebene anzugeben. Am naechsten Tag kann man zB. dieses Kommando ausfuehren, um einen Backup derjenigen Files zu machen, die seit dem -level 0 geandert oder neu erzeugt wurden : $ scdbackup -conf_dir $HOME/my_backup -level 1 Die Optionen -conf_dir und -level werden im Ausgabetext von bin/cd_backup_planer -hilfe erklaert. Dort gibt es auch ein Beispielschema. Mehrere unabhaengige Konfigurationen koennen festgelegt werden. Verschiedene Konfiguration stoeren sich auch dann nicht, wenn sie die selben Daten sichern. Nicht nur scdbackup sondern auch scdbackup_home und scdbackup_afio koennen auf die hier beschriebene Art verwendet werden. Die Zustandsaufzeichnungen in den Leveldirectories der Konfiguration verbrauchen einigen Plattenplatz, obwohl sie von gzip komprimiert werden. Man sollte die Groesse des Files $HOME/my_backup/level_0/content_file_list.gz waehrend des Level 0 Laufs beobachten und im Notfall den Lauf abbrechen. Dabei darf man sich nicht ueber die lange Verzoegerung wundern, mit der der File auf der Platte waechst. Das liegt an der gzip Pipe und man bekommt rechtzeitig mit, wenn die Groesse auszuufern droht. Wenn man den Plattenplatz oder die Rechenzeit fuer die Zustandsaufzeichnung nicht aufbringen kann, laesst sich dieses Feature durch die Option -disable_safe_leveling waehrend des Laufs mit -level -create_configuration abschalten. In diesem Fall koennen aber Umnennungen und Loeschungen nicht mehr erkannt werden und fehlen deshalb auch in hoehern Backupleveln. Solch ein Backup ist immer noch eine gute Quelle, um begrenzte Datenunfaelle zu beheben. Er kann aber unbrauchbar sein, um das ganze Backupgebiet akkurat wiederherzustellen. Die Grundeinstellung von scdbackup konfiguriert eine Methode, die auf dem traditionellen Verhalten von Inode-Nummern (POSIX "file serial numbers") beruht. Wenn Ihr Filesystem sich nicht an die Tradition haelt, werden Sie bei den hoeheren Leveln verdaechtig grosse Backups bekommen. Teilen Sie mir dann bitte den Typ des betroffenen Filesystems mit und verwenden Sie die alte pruefsummenbasierte Methode wie in Anhang INODE beschrieben. Wenn Sie je einen inkrementellen Backup komplett wiederherstellen muessen, dann werden Sie zunaechst das Level 0 einkopieren (zB. mit cp -dR ). Danach entfernen Sie die Files, die verschwunden waren, als Level 1 gemacht wurde. Dann kopieren Sie Level 1 ein. Das wird mit allen hoeheren Backuplevels wiederholt. Fuer das Loeschen enthaelt das letzte Stueck eines jeden Levels ein komprimiertes Shellskript /added_by_scdbackup/VANISHED.sh.gz . Nicht zum Spass laufen lassen ! Weitere Informationen ueber die Zustandsaufzeichnung finden Sie in der Ausgabe von bin/cd_backup_planer -hilfe . Suchen Sie nach "Backup mit mehreren Levels wiederherstellen" und lesen Sie auch die Beschreibung der einzelnen dort erwaehnten Optionen. Die Entscheidung ueber die Aufnahme eines Fileobjekts in den Backup wird anhand folgender Kriterien getroffen: mtime (anzeigen mit: ls -l), ctime (ls -lc), ggf. die Pruefsumme des Fileinhalts (bei alter Methode, wenn ein Oberdirectory eine junge Zeitmarke hat), ggf. die Device- und die Inode-Nummer (bei neuer Methode), eine Wirtschaftlichkeitsueberlegung, die eventuell ein ganzes Directory statt vieler kleiner Files in den Backup nimmt. Backup Informationsskripte Jede Backup-CD enthaelt ein Skript namens ASKME, das Auskunft darueber gibt, auf welcher CD eine gegebene Fileadresse sein muesste. Das das Skript nur die Fileadressen kennt, die das Formatierprogramm erhalten hat, kann es nicht sicher sagen, ob der gesuchte File zur Zeit des Backups vorhanden war. Es kann aber sagen, auf welcher CD man danach suchen muss. ASKME benoetigt lediglich eine bash- oder ksh-Shell, aber kein installiertes scdbackup, um Auskuenfte zu erteilen. Siehe Text askme_hilfe wegen einer Anleitung. Bei inkrementellen Backups sind auch die Informationsskripte der aelteren Level auf jeder CD gespeichert. Weil sie sehr gross werden koennen und dann auch praktisch nicht mehr verwendbar sind, werden von neu eingerichteten Backup- konfigurationen nur Rumpfskripte erzeugt, die lediglich das Datum, das Level und das Backupstueck nennen koennen. Um fuer Suchoperationen verwendbar zu sein, muss die Backupkonfiguration mit der zusaetzlichen Option -info_script -full erzeugt werden, oder alle Backuplaeufe muessen diese Option verwenden. Inkrementelle Backups mit Rumpfskripten durchsucht man mit dem Kommando scdbackup_askme, das im naechsten Abschnitt erklaert wird. Bei ISO9660-formatierten Backups ist das Informationsskript im Wurzeldirectory des Backupstuecks. Bei Backups im Format afio (oder star) ist es das erste Fileobjekt im Backupstueck. Sein Name und seine Adresse hangen von den Einstellungen zur Backupzeit ab. Man kann die genaue Adresse im afio-Archiv mit diesem Befehl erfragen : afio -t /dev/cdrom 2>/dev/null | head -1 Die Antwort sollte in etwa so lauten u/thomas/scdbackup/scdbackup-0.9.0/tmp/ASKME_1000.1.z (Wenn keine plausible Antwort herauskommt, mal 2>/dev/null weglassen.) Das Skript kann auf so ziemlich jeder Shell laufen aber es hat den Nachteil, dass es recht langsam ist. Mit mehreren Levels von grossen Platten kann man Minuten auf die Antwort warten. Backup Such- und Rueckspeicherprogramm Das Kommando scdbackup_askme verwendet ein binaeres Programm, das suchfaehige ASKME-Skripte auslesen und dann die Suche wesentlich schneller durchfuehren kann. Es kann auch nach Textstuecken (wie fgrep) und regular expressions (wie grep) suchen. Der eigentliche Vorteil von scdbackup_askme ist seine Faehigkeit, Inhaltslisten und Loeschlisten aus einem Konfigurationsdirectory fuer inkrementelle Backups zu lesen. Es kann diese Listen auch vom jeweils letzten Backupstueck eines Backuplevels lesen. Beginnend mit scdbackup Version 0.8.7 gibt es Inhaltslisten auch auf dem letzten Stueck von nicht-inkrementellen ISO-9660-Backups. Die Inhaltslisten enthalten ausfuehrlichere Informationen als ASKME-Skripte. Man kann mit ihnen zB. sicher feststellen, ob ein bestimmter File im Backup ist (wogegen ASKME oft nur ein darueberliegendes Directory kennt). Es ist auch moeglich, aus einer Inhaltsliste die Adresse eines Files auf dem Datentraeger zu bestimmen (wogegen ASKME nur die Originaladresse of der Platte kennt). Auf Basis von Inhaltslisten kann scdbackup_askme auch Files aus ISO-9660 formatierten Backups rueckspeichern. Die Kommandos scdbackup_askme und sdvdbackup_askme koennen durch Startfiles voreingestellt werden. Siehe weiter unten: "Startfiles fuer das Such-" Beispiele (siehe Text doc/scdbackup_askme_hilfe wegen Optionen und Details) Die ASKME-Skripte von einem Backupdatentraeger (ISO-Format) auswerten: scdbackup_askme /cdrom/ASKME -levelall -search_grep 'baeume/.*eiche' scdbackup_askme /cdrom/ASKME -levelall -search_sh '/home/*/baeume/*eiche*' Eine inkrementelle Backupkonfiguration auf der Festplatte auswerten: scdbackup_askme $HOME/my_backup -levelall -search_sh -dialog Nachdem der aktuelle Stand der Backuplevels geladen wurde, wird der User nach Optionen oder Suchtexten gefragt. Wegen der Option -search_sh werden die Suchtexte dann als Shellparsermuster mit den Quelladressen der Fileobjekte verglichen. In diesem Modus gibt es ein Arbeitsdirectory, auf das sich Suchtexte beziehen, die nicht mit '/' beginnen. Die besonderen Filenamen '.' und '..' werden verstanden. -pwd -cd:/home/*/baeume *eiche* */*eiche* ../*eiche* -search_shpat *baeume/*eiche* -search_shname *eiche* -page:20 *eiche* Durch -search_shpat passt das Zeichen '/' auch auf *,? und []. Dadurch kann man sehr pauschal nach Schnipseln von Filenamen suchen. -search_shname vergleicht den Suchtext mit den einzelnen Filenamen. Aehnlich wie das Shellkommando find / -name '*eiche*'. -page:20 laesst die Ausgabe des Ergebnisses nach je 20 Zeilen anhalten und verlangt nach der Enter-Taste. Die Eingabe @ unterdrueckt dieses Anhalten zeitweise. Die Eingabe @@@ bricht die Ausgabe ab. Unabhaengig vom Suchmodus suchen die Optionen -l und -ls_d immer nach Shellparserregeln. Sie verhalten sich aehnlich wie die Shellkommandos ls und ls -d : -ls:.. -cd:.. -ls_d:*baeum* -ls_d:*baum* Alle Suchmodi koennen auch auf die Zieladdresse angewendet werden. -search_target Fuer die weiteren Beispiele schaltet man besser wieder auf Standardsuche um -search_sh Die aktuellen Einstellungen anzeigen lassen -status Alle moeglichen Einstellungen anzeigen lassen -status:long Den Hilfetext anzeigen lassen -hilfe Um einzelne Files oder ganze Directorybaeume zurueckzuspeichern muss man zuerst einen geeigneten Restoremodus einstellen. Dieser hier schuetzt existierende Files auf der Platte und erlaubt, nach Rueckspeicherproblemen weiterzumachen -restore_mode:overwrite_off:on_error_ignore Das Programm braucht die Adresse, an der der Datentraeger gemountet wird, und kann das Laufwerk dann ueber die Programm mount und eject entsprechend bedienen -restore_from:/cdrom -media_mode:load_eject:mount_umount Die Originaldaten sind geschuetzt. Damit trotzdem alles zurueckkopiert werden kann, wird auf ein Ausweichdirectory umgeleitet -restore_skip:/home/thomas -restore_to:/home/test/thomas Nun wird der Directorybaum /home/thomas/gif in dieses Ausweichdirectory kopiert -restore:/home/thomas/gifs Der User wird aufgefordert, die noetigen Datentraeger einzulegen. Man kann einzelne davon ueberspringen, aber dann ist das Ergebnis in /home/test/thomas/gifs natuerlich nicht vollstaendig. All obigen Operationen lassen sich auch auf Basis von inkrementellen Backupinformation direkt auf dem Backupdatentraeger (ISO-Format) ausfuehren. Die Listen sind auf dem letzten Stueck des jeweiligen Levels gespeichert: scdbackup_askme /cdrom/added_by_scdbackup -levelall -search_sh -dialog Der User wird aufgefordert, dias letzte Stueck eines jeden Levels einzulegen. Mit der Eingabe "@@@" und der Bestaetigung "j" zeigt er an, dass das oberste Level gelesen und damit das Baummodell komplett ist. Dann startet der Dialog wie im vorhergehenden Beispiel. Rueckspeicherlaeufe, die aus irgendeinem Grund abgebrochen wurden, koennen an der letzten Position wieder aufgenommen werden mit: scdbackup_askme -resume Man kann auch selbst ein bestimmtes Start-Level anwaehlen scdbackup_askme -resume:1 und darin auch noch das Backupstueck scdbackup_askme -resume:1:4 Die Option -resume funktioniert auch im Dialog, jedoch nur fuer Rueckspeicher- operationen, die in der selben Dialogsitzung stattgefunden haben, oder fuer solche, die kunstvoll mit den Optionen -resume_last_* und -resume_opt_text vorbereitet wurden. Auch abgebrochene -resume Laeufe koennen mit -resume fortgesetzt werden. Wenn der Programmabbruch ein Fileobjekt auf der Platte in einem Zustand hinterlassen hat, der weder dem Zustand vor der Rueckspeicherung noch einer korrekten Rueckspeicherung entspricht, dann verweigert die Option -resume die Arbeit und verlangt, dass man sich um den betroffenen File kuemmert. Im Dialogmodus kann man "weiter" eingeben, nachdem man den File geprueft und eventuell geloescht oder repariert hat. Im Nicht-Dialog bricht das Programm immer ab und man muss die ausloesende Option -resume_last_dirty im File $(scdbackup -where tmp)/askme_resume_state_"$UID"_dirty entweder entfernen oder ihre Fileadresse leermachen. Fileobjekte, die als "dirty" registriert wurden, sind in jeder Weise fragwuerdig. Die Directories ueber diesen Files koennen ihrem Besitzer zu grosszuegige Rechte geben, oder aber fuer alle zu knappe Rechte bieten. Man muss das ggf. pruefen. (Normalerweise hat der Besitzer aber sowieso rwx-Rechte an seinen eigenen Directories.) scdbackup_askme hat die Anmutung einer Kommandozeilenshell,aber es sollte nicht schwer sein, ein grafisches Frontend zu schaffen. In doc/saskme_frontend.c findet sich Beispielcode fuer die Aufgabe, scdbackup_askme per Fork zu starten und mit ihm in Dialog zu treten. (Kein GUI. Nur Code fuer den Anschluss.) Zugriffsrechte Nach der Installation von scdbackup darf zunaechst nur der Besitzer (und der Superuser) von ihr Gebrauch machen. In feindlichen Umgebungen oder auch nur bei anwenderfreundlicher Softwareausstattung sollte man unbedingt bei dieser Einstellung bleiben. Wenn noetig sollte man dann fuer weitere Backupuser eine weitere Installation von scdbackup durchfuehren. Im Fall eines rein persoenlichen Computers mag es tolerabel scheinen, wenn der Superuser die scdbackup-Installation des Desktopbenutzers mitverwendet. Man muss sich aber im klaren sein, dass der Besitzer der Installation dem Superuser Streiche spielen kann und dass Webbrowser oder andere Programme mit voller Unterhaltungsausstattung eventuell Chancen bieten, die Identitaet dieses Desktopusers zu uebernehmen. Es kann auch wuenschenswert sein, dass sich mehrere User eine Installation von scdbackup teilen. Dann sollte der Superuser eine Installation machen, die er aber auf *keinen Fall selbst* benutzt. Im Falle von Zugriffsschema "nur_gruppe" muss der Superuser noch die Installation der gewuenschten Gruppe zuordnen (zB. mit chgrp -R ). Das Skript ./SETZ_ZUGRIFF erlaubt es, die Beschraenkungen zu lockern. Es erwartet als einziges Argument einen der folgenen Namen von Zugriffsschemata : nur_besitzer das ist die oben beschriebene Grundeinstellung nur_gruppe erlaubt den Gruppenmitgliedern das gleiche wie dem Besitzer jeder_user erlaubt jedem User, Backups zu machen, aber versucht, ihn am Fummeln zu hindern. Nicht unbedingt sicher. eigenbau vorbereiteter Name fuer eine selbstgemachte Einstellung. Dazu SETZ_ZUGRIFF editieren und nach diesem Text suchen : "Hier die Eigenbau-Rechteverteilung eintragen" (Vorsicht : ./translator_german ueberschreibt SETZ_ZUGRIFF) ungeschuetzt wie der Name sagt : total ungeschuetzt und total unsicher Diese Einstellungen sind permanent und werden bei jedem Lauf von ./KONFIGURIEREN_CD oder ./KONFIGURIEREN_DVD erneut auf die Files uebertragen. ----------------------------------------------------------------------------- Innereien - Anhaenge Siehe auch Inhaltsverzeichnis am Anfang dieses Textes. ----------------------------------------------------------------------------- Anhang DIRECTORIES : Seit Version 0.8.5 sind die Bestandteile des scdbackup-Systems auf mehrere Unterdirectories verteilt. Insbesondere sind nun die Files, die beim normalen Betrieb erzeugt oder erweitert werden, und die, die nur bei der Konfiguration geschrieben werden, von denen getrennt, die normalerweise unveraendert bleiben. Das Installationsdirectory scdbackup-0.9.0 enthaelt nach der Installation folgende Datenfiles : TIMESTAMP enthaelt die Zeitmarke des tar-Archives cd_get_variables liest die Konfiguration fuer CD dvd_get_variables liest die Konfiguration fuer DVD scdbackup_switcher Verteilerskript fuer Aktions- und Sprachauswahl Einige symbolische Links verweisen auf das ./doc Directory : COPYING LIESMICH README Folgende Directories entstehen unterhalb von scdbackup-0.9.0 : aux einige Teile, die in keine andere Kategorie passen bin Binaerprogramme, die aus C-Sourcen enstehen cmd dem Anwender zugaengliche Kommandos conf Konfigurationsfiles und anwenderdefinierte Zwischenskripte doc Dokumentation inst Konfigurationsskripte logs Listenfiles mit Pruefsummenrecords scripts Arbeitsskripte des scdbackup-Systems (bash oder ksh) src C-Sourcefiles der Programme in ./bin tmp Files, die fuer einen Backuplauf erzeugt werden Um das scdbackup-System anwenden zu koennen, muessen mindestens die Directories ./logs und ./tmp schreibbar sein. Es gibt Konfigurationsfiles, mit denen man diese beiden Directories auf Adressen ausserhalb des scdbackup-Directory umleiten kann. Man sollte deshalb generell vermeiden, Unterdirectories von scdbackup direkt zu adressieren, sondern ihre Adressen lieber mit $(scdbackup -where xyz) abfragen. Siehe auch die Beispiele in diesem Text. Aeltere Anwenderprogramme, die direkt innere Bestandteile von scdbackup verwenden, werden nun diese Skripte und Programme nicht mehr finden. Das betrifft nicht Anwendungen, die sich auf die Verwendung der Kommandos scdbackup* und sdvdbackup* beschraenken und auf Konfigurationsfiles nicht direkt zugreifen. Um den Uebergang zu erleichtern, gibt es das Skript ./inst/COMPATIBILITY_LINKS das eine Reihe von symbolischen Links im Directory scdbackup-0.9.0 anlegt. Damit sollten die in frueheren Beschreibungen von scdbackup empfohlenen Anwendungen ohne Aenderungen funktionieren. Eventuell dann noch fehlende Files kann man selbst linken. ZB. : cd $(scdbackup -where) ln -s $(scdbackup -where scripts)/cd_afio_kommando cd_afio_kommando Dennoch empfehle ich, betroffene Anwendungen auf die neue Directorystruktur umzustellen. Aus Sicherheitsgruenden sollte eine Anwenderinstallation von scdbackup *nicht* dem FHS gehorchen. FHS richtet sich hauptsaechlich an Systemfiles. Wenn man unbedingt fuer den Superuser eine Installation nach Vorschrift des FHS haben will, dann muss man sie folgendermassen ueber das System verstreuen : Konfigurationsfile : Inhalt : $HOME/.scdbackup_dir /opt/scdbackup-0.9.0 /opt/scdbackup-0.9.0/scdbackup_conf_dir /etc/opt/scdbackup-0.9.0 /etc/opt/scdbackup-0.9.0/scdbackup_tmp_dir_value /var/opt/scdbackup-0.9.0/tmp /etc/opt/scdbackup-0.9.0/scdbackup_logs_dir_value /var/opt/scdbackup-0.9.0/logs Siehe unten, Anhang KONFIGURATION, wegen der Bedeutung dieser Files. Um folgendem Befehl des FHS zu gehorchen: "Programs to be invoked by users must be located in the directory /opt//bin", kann man den Inhalt von ./cmd nach ./bin verschieben. ----------------------------------------------------------------------------- Anhang KONFIGURATION : Diese drei Konfigurationsfiles werden von beiden Subsystemen CD und DVD benutzt : $HOME/.scdbackup_dir Die Adresse des scdbackup-Directory (solch ein File wird auch von WEITERER_USER angelegt) Kann durch Variable SCDBACKUP_DIR ueberstimmt werden $HOME/.scdbackup_lang Die Dialogsprache. Zur Zeit werden nur zwei Sprachen angeboten : en (englisch) und de (deutsch). Jeder andere Inhalt dieses Files fuehrt zu en . Durch Variable SCDBACKUP_LANG ueberstimmbar. $HOME/.scdbackup_userid nur noetig, wenn die Shellvariable EUID nicht automatisch gesetzt wird. Dieser File kann dann eine eindeutige Dezimalzahl enthalten, um den jeweiligen User von allen anderen Usern des Systems zu unter- scheiden. Wenn sie $EUID leer vorfinden, fragen die Konfigurationsskripte nach dieser Nummer und legen den File an. Ueberstimmbar durch Variable SCDBACKUP_USERID . (Diese Zahl gibt einem aber nicht die Rechte irgend- eines anderen Users.) Die folgenden Konfigurationsfiles werden von ./KONFIGURIEREN_CD im Directory ./conf erzeugt. (DVD Konfigurationsfiles sind weiter unten aufgelistet) Diese Adresse kann ueberstimmt werden durch den Inhalt des Files $(scdbackup -where)/scdbackup_conf_dir bzw. durch die Variable SCDBACKUP_CONF_DIR . Die aktuelle Adresse erfragt man mit scdbackup -where conf Jeder der Files *_value kann durch eine Shellvariable ueberstimmt werden. Diese Variable heisst wie der Fileanfang, wird jedoch grossgeschrieben. Beachten Sie jedoch, dass eine leere Variable nichts ueberstimmt. Beispiel: Files scdbackup_scsi_adr_value , scdbackup_speed_value , scdbackup_buffer_value ueberstimmen, um den grausam schnellen IDE-Rekorder zu benutzen, der mein System mit Filebuffer (auch IDE) uebel ruckeln laesst. export SCDBACKUP_SCSI_ADR="1,0,0" export SCDBACKUP_SPEED="12" export SCDBACKUP_BUFFER="-" scdbackup_scsi_adr_value die Adresse des CD Recorders (zB. 3,0 , ATA:1,0,0 , /dev/hdc) scdbackup_speed_value Schreibgeschwindigkeit (zB. 12) scdbackup_blanken_value Legt fest, ob die CD vor dem Schreiben geloescht werden soll : "0"=nein , "1"=ja (wie "fast") , "fast"=schnell , "all"=die ganze CD (langsam) "fast" und "all" werden als blank= Option an das Brennprogramm uebergeben. Ausserdem kann bestellt werden, dass blank= nicht als separater Lauf ausgefuehrt wird sondern im Schreiblauf stattfindet: "inline_all" , "inline_fast" Der Text kann auch alle drei Argumente fuer den Lauf von scdbackup_blank enthalten.(zB. all - CD-RW) scdbackup_use_prog_value fuer KONFIGURIEREN_CD, um sich an die Antwort auf die Frage zu erinnern, die die folgenden vier Files beeinflusst: scdbackup_mkisofs_value Name und Optionen des ISO 9660 Formatierprogramms. (zB. mkisofs -J -l -L -R) scdbackup_path_list_value enthaelt ggf. Optionen fuer cd_backup_planer, um das ISO Formatierprogramm mit Option -path-list auszufuehrt. U.a. steht hier der Filename fuer die temporare Adress liste. Der Text "mkisofs_path_list" wird beim Lesen dieses Files zu "mkisofs_path_list"_$EUID und der Text "=EUID=" wird zu $EUID. (Nur beim File, nicht bei Variable $SCDDBACKUP_PATH_LIST) scdbackup_iso_filetypes_value enthaelt ggf. Optionen fuer cd_backup_planer, die es erlauben, andere Filetypen als "data" und "dir" an das ISO Formatierprogramm zu uebergeben. Aeltere Versionen von mkisofs vertragen keine symbolischen Links. scdbackup_cdrecord_value Name und Optionen des Programms, das CDs schreibt. (zB. cdrecord -v ) scdbackup_cdrecord_opt_value weitere Optionen des Programms, das CDs schreibt, die nur beim Datenschreiben aber nicht beim Loeschen angewendet werden. (zB. -fs=8m -eject) scdbackup_split_dir_value fuer KONFIGURIEREN_CD, um sich an die Antwort auf die Frage zu erinnern, die die folgenden Files beeinflusst: scdbackup_large_file_iso_value Optionen fuer cd_backup_planer, die bei ISO Format die Behandlung grosser Files steuern. Der Text "=EUID=" wird beim Lesen dieses Files durch die Userid Nummer ersetzt. (Nur beim File, nicht bei Variable $SCDBACKUP_LARGE_FILE_ISO) scdbackup_large_file_afio_value Wie scdbackup_large_file_iso_value bei afio Format. Wirkt nicht auf scdbackup_sys. sdvbackup_afio_value Name eines zu afio aufruf-kompatiblen Programms und seiner Optionen fuer den Schreibmodus. Das Programm muss die Option "-Z" fuer Kompression erkennen und sein Ergebnis bei "-" als Zielfile auf die Standard- ausgabe leiten. Es muss die Adressen seiner Eingabe- files an der Standardeingabe ablesen. (-> man afio) Grundeinstellung : afio -o scdbackup_buffer_input_value fuer KONFIGURIEREN_CD, um sich an die Antwort auf die Frage zu erinnern, die die folgenden beiden File beeinflusst: scdbackup_buffer_value Name des Pufferfiles oder - (zB. /buf/isofs) scdbackup_afio_compress_value Kompression bei afio-Format direkt steuern : 0 = nein , 1 = ja , - = nur wenn echter Pufferfile (Default ist - ) scdbackup_z_cap_value geschaetzte Kapazitaet fuer komprimierte afio-Archive. Wenn leer oder 0, dann wird das Skript cd_dir_afiosize verwendet. scdbackup_sys_excl_value enthaelt eine Liste von Directories, die vom Systembackup ausgeschlossen sein sollen. scdbackup_t_lock_value Das Sperrverfahren anwenden. Fileinhalt : 1 = ja, Sperrfiles im scdbackup Directory speichern /pfad = ja, Sperrfiles in /pfad speichern (zB. /tmp) alle anderen Fileinhalte bewirken kein Sperren. scdbackup_bin_sbin_root_value Oberdirectory fuer Installation der Kommandos scdbackup_is_configured zeigt durch Inhalt "yes" an, dass scdbackup erfolgreich fuer DVD konfiguriert wurde. Weitere Konfigurationsfiles koennen zwar nicht mit den Eingaben zu ./KONFIGURIEREN_CD eingestellt werden. Man kann sie aber aendern oder mit Variablen ueberstimmen. scdbackup_use_shell_value enthaelt die Adresse eines bash kompatiblen Interpreters. scdbackup_media_cap_value maximale Kapazitaet eines CD-Mediums bei afio. Wenn ein afio-Archiv diese Groesse uebersteigt, dann wird es auf der ersten CD unterbrochen und auf einer weiteren fortgesetzt. Von KONFIGURIEREN_CD zunaechst auf 650m gesetzt. Diese Groesse steuert auch Blankingoption "shred". scdbackup_max_size_value Stueckgroesse wenn Option -max_size fehlt. (640m wenn auch dieser File und Variable fehlen) scdbackup_blank_speed_value Geschwindigkeit beim Blanken von CD-RWs (zB. 4) fuer den Fall, das die von der Schreibgeschwindig- keit abweichen soll. (Dieser File wird nicht von KONFIGURIEREN_CD erzeugt und ist normalerweise auch nicht noetig) scdbackup_make_checksum_value enthaelt Optionen fuer die Berechnung von MD5 Pruefsummen. Der File wird beim ersten Lauf von KONFIGURIEREN_CD erzeugt. Man kann seinen Inhalt auf ein einzelnes "-" aendern oder leermachen, um die Berechnung zu verhindern. scdbackup_checksum_list_value Adresse des Files mit den Pruefsummeneintraegen. (default : .../scdbackup-0.9.0/logs/backup_log ) scdbackup_verify_adr_value Default fuer datenquelle bei scdbackup_verify (default : /dev/cdrom ) scdbackup_keep_buffer_value wenn dieser File den Text "1" enthaelt, wird ein eventueller Pufferfile nicht geloescht und erst durch das naechste Backupstueck ueberschrieben. scdbackup_options_with_iso_value zusaetzliche Optionen fuer cd_backup_planer die auf alle Backuplaeufe wirken sollen, die ISO9660 Filesysteme produzieren. scdbackup_options_with_afio_value zusaetzliche Optionen fuer cd_backup_planer die auf alle Backuplaeufe wirken sollen, die afio-Archive produzieren. Die folgenden Konfigurationsfiles werden von ./KONFIGURIEREN_DVD im Directory ./conf erzeugt. (CD Konfigurationsfiles sind weiter oben aufgelistet) Diese Adresse kann ueberstimmt werden durch den Inhalt des Files $(scdbackup -where)/scdbackup_conf_dir Wie bei den Konfigurationsfiles des CD Subsystems kann jeder File *_value durch eine Shellvariable ueberstimmt werden. ZB: Ueberstimmen von sdvdbackup_dev_adr_value und sdvdbackup_speed_value : export SDVDBACKUP_SCSI_ADR="/dev/sr2" export SDVDBACKUP_SPEED="1" sdvdbackup_dev_adr_value Devicefile-Adresse des DVD Brenners (zB. /dev/dvd) Wird ggf. fuer growisofs benutzt. sdvdbackup_scsi_adr_value die SCSI-Adresse des CD Recorders (zB. 3,0) Wird ggf. fuer cdrecord, wodim oder cdrskin benutzt. sdvdbackup_speed_value Brenngeschwindigkeit (zB. any, 1) scdbackup_blanken_value Legt fest, ob die DVD vor dem Schreiben geloescht werden soll : "0"=nein , "1"=ja (wie "fast") , oder auch diese Optionen fuer sdvdbackup_blank : "fast"=schnell , "all"=die ganze CD (langsam) Der Text kann auch alle drei Argumente fuer den Lauf von scdbackup_blank enthalten. sdvdbackup_use_prog_value fuer KONFIGURIEREN_DVD, um sich an die Antwort auf die Frage zu erinnern, die die folgenden beiden Files beeinflusst: sdvdbackup_mkisofs_value Name und Optionen des ISO 9660 Formatierprogramms. (zB. mkisofs -J -l -L -R) sdvdbackup_path_list_value enthaelt ggf. Optionen fuer cd_backup_planer, um das ISO Formatierprogramm mit Option -path-list auszufuehrt. U.a. steht hier der Filename fuer die temporare Adress liste. Der Text "mkisofs_path_list" wird beim Lesen dieses Files zu "mkisofs_path_list"_$EUID und der Text "=EUID=" wird zu $EUID. (Nur beim File, nicht bei Variable $SCDDBACKUP_PATH_LIST) sdvdbackup_iso_filetypes_value enthaelt ggf. Optionen fuer cd_backup_planer, die es erlauben, andere Filetypen als "data" und "dir" an das ISO Formatierprogramm zu uebergeben. Aeltere Versionen von mkisofs vertragen keine symbolischen Links. sdvdbackup_cdrecord_value Name and Optionen des Programms das DVDs schreibt. (zB. /u/test/scdbackup-0.9.0/scripts/growisofs_wrapper ) sdvdbackup_cdrecord_opt_value weitere Optionen des Programms, das DVDs schreibt (zB. -final_eject bufsize=64m) sdvdbackup_split_dir_value fuer KONFIGURIEREN_DVD, um sich an die Antwort auf die Frage zu erinnern, die die folgenden zwei Files beeinflusst: sdvdbackup_large_file_iso_value Optionen fuer cd_backup_planer, die bei ISO Format die Behandlung grosser Files steuern. Der Text "=EUID=" wird beim Lesen dieses Files durch die Userid Nummer ersetzt. (Nur beim File, nicht bei Variable $SDVDBACKUP_LARGE_FILE_ISO) sdvdbackup_large_file_afio_value Wie sdvdbackup_large_file_iso_value bei afio Format. Wirkt nicht auf sdvdbackup_sys. sdvbackup_afio_value Name eines zu afio aufruf-kompatiblen Programms und seiner Optionen fuer den Schreibmodus. Grundeinstellung : afio -o (Siehe oben scdbackup_afio_value wegen Details) sdvdbackup_buffer_input_value fuer KONFIGURIEREN_DVD, um sich an die Antwort auf die Frage zu erinnern, die den folgenden File beeinflusst: sdvdbackup_buffer_value Name des Pufferfiles oder - (zB. /buf/isofs_dvd) sdvdbackup_afio_compress_value Kompression bei afio-Format direkt steuern : 0 = nein , 1 = ja , - = nur wenn echter Pufferfile (Default ist - ) sdvdbackup_z_cap_value geschaetzte Kapazitaet fuer komprimierte afio-Archive. Wenn leer oder 0, dann wird das Skript cd_dir_afiosize verwendet. sdvdbackup_sys_excl_value enthaelt eine Liste von Directories, die vom Systembackup ausgeschlossen sein sollen. sdvdbackup_t_lock_value Das Sperrverfahren anwenden. Fileinhalt : 1 = ja, Sperrfiles im scdbackup Directory speichern /pfad = ja, Sperrfiles in /pfad speichern (zB. /tmp) alle anderen Fileinhalte bewirken kein Sperren. sdvdbackup_bin_sbin_root_value Oberdirectory fuer Installation der Kommandos sdvdbackup_is_configured zeigt durch Inhalt "yes" an, dass scdbackup erfolgreich fuer DVD konfiguriert wurde. Weitere Konfigurationsfiles koennen zwar nicht mit den Eingaben zu ./KONFIGURIEREN_DVD eingestellt werden. Man kann sie aber aendern oder mit Variablen ueberstimmen. sdvdbackup_use_shell_value enthaelt die Adresse eines bash kompatiblen Interpreters. sdvdbackup_media_cap_value maximale Kapazitaet eines DVD Mediums bei afio. Wenn ein afio-Archiv diese Groesse uebersteigt, dann wird es auf der ersten CD unterbrochen und auf einer weiteren fortgesetzt. Von KONFIGURIEREN_DVD zunaechst auf "4480m" gesetzt. Diese Groesse steuert auch das Loeschen von DVD. sdvdbackup_max_size_value Stueckgroesse wenn Option -max_size fehlt. (4250m wenn auch dieser File und Variable fehlen) sdvdbackup_make_checksum_value enthaelt Optionen fuer die Berechnung von MD5 Pruefsummen. Der File wird beim ersten Lauf von KONFIGURIEREN_DVD erzeugt. Man kann seinen Inhalt auf ein einzelnes "-" aendern oder leermachen, um die Berechnung zu verhindern. sdvdbackup_checksum_list_value Adresse des Files mit den Pruefsummeneintraegen (default : .../scdbackup-0.9.0/logs/backup_dvd_log ) sdvdbackup_verify_adr_value Default fuer datenquelle bei sdvdbackup_verify (wenn File fehlt : dvdbackup_dev_adr_value) sdvdbackup_keep_buffer_value wenn dieser File den Text "1" enthaelt, wird ein eventueller Pufferfile nicht geloescht und erst durch das naechste Backupstueck ueberschrieben. sdvdbackup_options_with_iso_value zusaetzliche Optionen fuer cd_backup_planer die auf alle Backuplaeufe wirken sollen, die ISO9660 Filesysteme produzieren. sdvdbackup_options_with_afio_value zusaetzliche Optionen fuer cd_backup_planer die auf alle Backuplaeufe wirken sollen, die afio-Archive produzieren. Der folgende File kann von Hand erzeugt werden, bevor man ./KONFIGURIEREN_DVD ausfuehrt : sdvdbackup_use_prodvd_value wenn dieser File den Text "1" enthaelt, dann wird fuer cdrecord konfiguriert anstelle von growisofs. Dieser File speichert den Namen des Zugriffsschemas fuer ./SETZ_ZUGRIFF . Er wirkt sowohl auf CD als auch auf DVD Zugriffsrechte : scdbackup_set_permissions_value einer der Namen, die in Paragraph "Zugriffsrechte" erwaehnt werden. Die Files zur Umleitung der Directories, die bei Anwendung von scdbackup w-Rechte brauchen, wirken auf beides CD und DVD : scdbackup_tmp_dir_value kann die Adresse eines Directory enthalten, die anstelle von ./tmp der scdbackup-Installation verwendet wird. scdbackup_logs_dir_value kann die Adresse eines Directory enthalten, die anstelle von ./logs verwendet wird. Die Umleitung von ./conf, ./tmp oder ./logs wird nur fuer Situationen empfohlen bei denen scdbackup in einem schreibgeschuetzten Filesystem installiert ist. Dann kann man so die Directories auslagern, in denen das Schreiben von Daten moeglich sein soll. Andere (Experten-)Anwendungen: gemeinsame Nutzung der logs durch mehrere scdbackup-Installationen des selben Users, Einrichten einer FHS-konformen Installation (die Kombination von FHS und scdbackup ist nur sicher, wenn sie ausschliesslich vom Superuser benutzt wird !). Man kann die effektive Konfiguration einer scdbackup-Umgebung mit den Kommandos scdbackup -show_configuration | less sdvdbackup -show_configuration | less anzeigen lassen. Die Schreibskripte scripts/cd_backup_kommando , scripts/cd_afio_kommando und scripts/cd_pipe_kommando erlauben den Aufruf von drei Skripten bzw. Programmen. Wenn im Directory ./conf unter einem der folgenden Filenamen ausfuehrbarer Code bereitgestellt ist, dann wird dieser bei den genannten Gelegenheiten gestartet. Jedesmal werden zumindest die folgenden acht Argumente uebergeben : $1 Adresse des Pufferfiles ("-" oder "" wenn ohne Puffer) $2 SCSI-Adresse, die von cdrecord benutzt wird oder Devicefile-Adresse, die von growisofs benutzt wird $3 Aufrufende Kommandofamilie ("iso9660"=scdbackup, "afio"=scdbackup_afio) $4 Teilstuecknummer $5 Gesamtzahl der Teilstuecke $6 scdbackup Installationsdirectory $7 Verwendetes cdrecord Programm (meist mit Option -v) (enthaelt z.B. .../growisofs_wrapper wenn DVD gebrannt wird) $8 Verwendetes Formatierungsprogramm (meist mit mehreren Optionen) Diese Programmnamen sind vorbereitet : conf/volume_prompt_script laeuft bevor der User Gelegenheit bekommt, Enter zu druecken. conf/volume_preburn_script nachdem das evtl. Rekorder Lock aufgefrischt wurde und bevor der evtl. Blanklauf stattfindet. conf/volume_afterburn_script nachdem der Lauf des Brennprogramms endet und bevor der evtl. Pufferfile geloescht wird. Dieses Skript erhaelt zusaetzliche Argumente : $9 Adresse der evtl. Pruefsummenliste ${10} Recordname des geschriebenen Records in dieser Liste ${11} Zeitmarke des Records ${12} Groessenangabe ${13} Pruefsumme (Aberglaube bringt Unglueck. U.Eco) Pruefen Sie, ob Ihre Shell ${10} auswerten kann oder benutzen Sie shift um auf die zweistelligen Nummern Zugriff zu bekommen (nachdem alle benoetigten einstelligen Parameter kopiert wurden). conf/volume_abortedburn_script laeuft anstelle von volume_afterburn_script , wenn das Brennprogramm einen Fehlschlag anzeigt und der ganze Backuplauf abgebrochen wird. Es koennen auch spezialisierte Skripte fuer einen bestimmten Typ von Datentragern bereitgelegt sein. Wenn beide existieren - das allgemeine und das spezialisierte Skript - dann wird zuerst dass allgemeine und dann das spezialisierte aufgerufen. Beide erhalten die selben Argumente. Spezialisiert fuer CD : conf/volume_prompt_script_cd conf/volume_preburn_script_cd conf/volume_afterburn_script_cd conf/volume_abortedburn_script_cd Fuer DVD : conf/volume_prompt_script_dvd conf/volume_preburn_script_dvd conf/volume_afterburn_script_dvd conf/volume_abortedburn_script_dvd Beispiel : Hier wird ein Backup nicht auf Datentraeger sondern in eine Reihe von Files auf der Festplatte geschrieben. Zunaechst das Schreibprogramm, das ein Backustueck schreibt export SCDBACKUP_CDRECORD="$(scdbackup -where scripts)/pipe_data_to /home/archiv_dir/naechstes_stueck" Ein Skript, das nach dem Schreibvorgang den File geeignet umbenennt. Hier entsteht ein Name wie zB. "A50922.132751_stueck_1_7" echo '#!/bin/sh' > $(scdbackup -where conf)/volume_afterburn_script echo 'mv /home/archiv_dir/naechstes_stueck /home/archiv_dir/"${11}"_stueck_"$4"_"$5"' >> $(scdbackup -where conf)/volume_afterburn_script chmod u+x $(scdbackup -where conf)/volume_afterburn_script Nun laesst man einen Backup laufen, der nicht nach Datentragern ruft yes | scdbackup_afio -max_size 1g /opt /home und macht normalerweise danach wieder das Skript weg rm $(scdbackup -where conf)/volume_afterburn_script unset SCDBACKUP_CDRECORD Startfiles fuer das Such- und Rueckspeicherprogramm Die Kommandos scdbackup_askme und sdvdbackup_askme fuehren ggf. die Zeilen ihres Startfiles als Optionen aus, bevor die Argumente und spaeter die Dialogeingaben ausgefuehrt werden. Der Startfile sollte, falls vorhanden, lesbar sein aber besser nicht ausfuehrbar. Jede einzelne Zeile wird als Option ausgefuehrt. Weil das so frueh geschieht, werden diese Optionen in Kraft sein, wenn die Infoquelle gelesen wird. Leere Zeilen und solche, die mit '#' beginnen werden ignoriert. Es gibt keine Moeglichkeit die Infoquelle im Startfile festzulegen. Sie muss immer als erstes Argument des Kommandos angegeben werden. conf/scdbackup_askme_rc Wird von Kommando scdbackup_askme gelesen conf/sdvdbackup_askme_rc Wird von Kommando sdvdbackup_askme gelesen ----------------------------------------------------------------------------- Anhang SCHAFFER : Alle deutschsprachigen Skripte werden von mir aus den englischsprachigen Skripten (siehe README) mit Hilfe des Skriptes aux/translator_german erzeugt. Das geschieht beim Verpacken auf meinem Rechner und nicht beim Auspacken und Konfigurieren. Die Kommandos verwenden als zentralen Bestandteil das Programm bin/cd_backup_planer, das eine Liste von Directories in Stuecke aufspaltet, von denen jedes einzelne auf eine CD (oder ein anderes Medium) passt. Es erzeugt ein Skript mit Backupkommandos. Die Listen von Files und Directories werden anhand ihrer Gesamtgroessen und der Anzahl der zu erwaehnenden Namen aufgeteilt. Uebergrosse Directories werden automatisch aufgespalten. Uebergrosse Files werden weggelassen, sofern bei der Konfiguration kein "Pufferdirectory fuer Stuecke grosser Files" angegeben wurde. Das Programm kann auch ein Shellskript erzeugen, das verschiedene Informationen ueber den Backup ausgeben kann. Dieses Skript wird dann in jedes einzelne Teilstueck des Backups aufgenommen. Lesen Sie den Text doc/cd_backup_planer_hilfe oder fuehren Sie aus $(scdbackup -where bin)/cd_backup_planer -hilfe | less um eine Beschreibung des Programms und seiner Optionen zu bekommen. Die Liste der zu kopierenden Files wird auf Namenskollisionen im ISO-Filesystem geprueft. Wenn zwei Files oder Directories gefunden werden, die den gleichen Namen bekommen wurden, wird eines von beiden umgenannt. Ausserdem werden die Files auf problematische Namen und verweigerte Lese- rechte geprueft. Problematische Namen werden mkisofs ausdruecklich genannt. Unlesbare Files koennen vom Backup ausgeschlossen werden. Die Kommandoskripte des scdbackup-Systems (zB. /usr/bin/scdbackup) finden lediglich den Installationsort des scdbackup-Systems heraus und starten dann dort ein Verteilerskript, das die Sprachversion waehlt : scdbackup_switcher findet die eingestellte Sprache heraus. Es meldet das Kommando, die scdbackup-Version sowie die Sprache auf stderr. Dann startet es eines der Arbeitsskripte. Wenn das einzige Argument des Kommandos eines der folgenden ist, gibt scdbackup_switcher eine Antwort auf stdout und startet das Arbeitsskript nicht : -version "scdbackup" versionscode zeitmarke -which Adresse des effektiven Arbeitsskripts -where Adresse des effektiven scdbackup Installationsdirectory. Ein optionales zweites Argument kann die Adresse eines scdbackup-Unterdirectory abfragen. Wie: bin conf doc logs scripts tmp (siehe auch die Anwendung in diesem Text) -show_configuration eine Liste von Variablennamen und Inhalten. Siehe Appendix KONFIGURATION. -show_configuration_exported Liste von export-Kommandos fuer die Shell (mit Anfuehrungszeichen). Die Skripte verwenden zwei gemeinsame Stuecke von Shellcode, welche die Konfiguration einlesen : cd_get_variables liest die Variablen, die mit KONFIGURIEREN_CD festgelegt wurden. (Muss als inline Kommando mit fuehrendem Punkt ausgefuehrt werden, wenn es wirken soll.) dvd_get_variables liest die Variablen, die mit KONFIGURIEREN_DVD bestimmt wurden und benutzt sie, um in cd_get_variables die CD-Einstellungen zu ueberstimmen. Die folgenden Files liegen allesamt im Directory ./scripts . scdbackup_switcher wird mit dem Start eines dieser Skripte beauftragt. backup_iso_de plant Backups im ISO 9660 Format und fuehrt sie aus. (Wird gestartet von scdbackup, scdbackup_home, sdvdbackup, sdvdbackup_home) backup_afio_de plant Backups im Archivformat und fuehrt sie aus. (scdbackup_afio, scdbackup_sys, sdvdbackup_afio, sdvdbackup_sys) blank_de macht einen einzelnen Datentraeger schreibbereit oder ueberschreibt ihn mit Zufallsdaten. (scdbackup_blank, sdvdbackup_blank) verify_de prueft einen einzelnen Datentraeger gegen aufgezeichnete Pruefsummen. (scdbackup_verify, sdvdbackup_verify) askme_de startet das binaere Auskunftsprogramm. (scdbackup_askme, sdvdbackup_askme) clear_de hebt alle eventuell bestehenden Reservierungen einer scdbackup-Installation auf. show_configuration fuehrt Option -show_configuration aus. (siehe oben) Gemeinsame Codestuecke, die die Kommandoskripte schlanker machen : behandle_existierendes_skript fuehrt Optionen wie -resume aus und kuemmert sich allgemein um die Behandlung von Backupskripten, die vom vorherigen Lauf stammen. behandle_planer_fehlschlag laeuft, wenn der Lauf von cd_backup_planer fehlgeschlagen ist. installiere_backup_skript installiert das neue Backupskript und bereitet es auf die Ausfuehrung vor. Die Groessenbestimmung ist entscheidend fuer die Verteilung der Backupdaten auf die Medien. Neben der eingebauten Methode -internal und dem Befehl du -sk koennen auch diese zwei Skripte zum Einsatz kommen : cd_dir_isosize Nutzung vermeiden, verbraucht u.U gewaltigen Speicher : kann anstelle von du -sk genutzt werden, um die Groesse genauer zu schaetzen, die ein Directory im ISO9660 Filesystem haben wird. cd_dir_afiosize kann verwendet werden, um die Groesse eines (evtl. komprimierten) afio-Archivs zu messen, das aus einem bestimmten Directory ensteht. Sehr langsam, weil das Archiv wirklich erzeugt, ausgezaehlt und weggeworfen wird. Einige Skripte, die das Schreiben auf (Pseudo-)Datentraeger erledigen: cd_backup_kommando kann ein einzelnes Backupstueck als ISO9660 Filesystem auf CD oder DVD schreiben. cd_afio_kommando kann ein einzelnes Backupstueck als afio-Archiv auf CD schreiben. Wenn ein Pufferfile bei KONFIGURIEREN eingestellt wurde, dann enthalten die Archive kompri- mierte Files (afio option Z). Fuer CDs, die ohne Zwischenfile geschrieben werden, eignent sich das nicht, weil die Ausgaberate eine Kompressionsprogramms sehr gering sein kann (wenn die Kommpressionsrate hoch ist). cd_pipe_command schreibt stdin ungeaendert auf eine einzelne CD oder DVD. Die Daten muessen also bereits geeignet formatiert sein. Wird benutzt von scdbackup -pipe_to_media . Wenn das erste Argument -multi_volume lautet, dann wird der Datenstrom wie bei scdbackup_afio bei Bedarf auf mehrere Datentraeger verteilt. Das eignet sich fuer uebergrosse Archive oder Dumps. cd_blank_kommando macht eine CD-RW wieder beschreibbar und startet gegebenenfalls schredder_kommando. dvd_blank_kommando warnt vor schredder_kommando und startet es fuer DVD. schredder_kommando ueberschreibt einen Datentrager mit Zufallsbytes. afio_sencrypt ein Skript, das ein verschluesseltes und ggf. gzip- komprimiertes afio-Archiv erzeugt. Die Verschluesselung erledigt das Programm sencrypt. Siehe http://scdbackup.webframe.org/README_sencrypt und auch Anhang CRYPTO weiter unten. Mit dem ersten Argument kann einer von drei Modi ausgewaehlt werden. Je nach Modus wird noch ein zweites Argument erwartet : -each_file_by schluessel_file afio-traditionelle Behandlung jedes einzelnen Files ergibt ein hartgesottenes Archiv, ist aber langsam. Der Schluesselsatz muss in einem File gespeichert sein, dessen Adresse als zweites Argument erwartet wird. Falls Kompression bestellt ist, bleiben die ersten 10 Byte jedes komprimierten Files unver- schluesselt, um den Schluessel nicht durch die wohlbekannten Fileanfaenge zu verraten. Archiv auspacken (unkomprimiert) : afio -i -P 'sencrypt' -Q '-d' \ -Q '-f' -Q "$schluessel_file" -Z /dev/cdrom Archiv auspacken (komprimiert) : afio -i -P 'sencrypt' -Q '-d' -Q '-g' \ -Q '-f' -Q "$schluessel_file" -Z /dev/cdrom -whole_archive_by schluessel_file Verschluesselung des afio-Archivs als Ganzes. Auch hier wird ein Schluesselfile erwartet. Bei unkomprimierten Archiven bleiben die ersten 322 Bytes des Archivs unverschluesselt. Bei komprimierten sind es 162. Archiv auspacken (unkomprimiert) : sencrypt -d -s 322 -f "$schluessel_file" \