cd_backup_planer Version 0.9.2 usage : bin/cd_backup_planer [option | file] ... Gewoehnlich teilt dieses Programm eine Liste von Directories in Teile auf, von denen jedes einzelne auf eine CD passt. Es erzeugt dazu ein Skript mit Backupkommandos. Die Listen der Files oder Directories in den einzelnen Stuecken werden anhand von Obergrenzen fuer die Groesse in Bytes und die Anzahl der einzeln erwaehnten Fileadressen festgelegt. Eine solche Ergebnisliste kann nur Directories und Datenfiles enthalten. Andere Filetypen koennen in Directories enthalten sein, aber die meisten ISO9660-CD-Schreibprogramme werden sie nicht verarbeiten. Die Ergebnislisten bestehen aus Ziel- und Quelladresse in einer Form, die sich fuer das Programm mkisofs in seinen modernen Versionen eignet. Wenn die Quelle ein Directory ist: /Zieladresse/=Fileadresse Wenn die Quelle ein File ist: /Zieladresse=Fileadresse Diese Listen werden an ein Backupkommando angehaengt, damit dieses dann eine CD fuellt. Wenn nicht ausdruecklich angegeben und auch nicht zur Vermeidung einer Kollision umgeleitet, lautet die Zieladresse gleich wie die Fileadresse. Abhaengig vom -target_escape Modus wird das Zeichen "=" entweder mit "\" maskiert oder zu "_" gewandelt. Es koennen auch andere Ausgabeformate als das hier beschriebene bestellt werden. Weil das Arbeitsdirectory, das Rootdirectory und evtl. das -main_dir auf das Rootdirectory der CD abgebildet werden, koennen Kollisionen von Ziel- adressen auftreten. Ein eingebauter Kollisionstest kann diese erkennen und durch Umnennen der Zieladressen vermeiden. Eine Pruefung kann durchgefuehrt werden, um problematische Files zu finden - solche, die von mkisofs-1.12b3 ignoriert werden, wenn sie nicht ausdruecklich als Argumente gennat werden. - solche, die nicht gelesen werden koennen (Files oder Directories) Das kann die Schaetzung der Ergebnisgroessen verfaelschen. Die Kombination von -filecheck -append -filecheck -exclude_unreadable kann helfen, diese Probleme zu vermeiden. Inkrementelle Backups koennen mit beliebig vielen Ebenen gemacht werden : -level 0 macht einen vollen Backup ohne Zeiteinschraenkung. -level N macht einen Backup der Files, die seit dem letzten -level N-1 geaendert wurden. -level N-1 muss bereits existieren. - Ein Backup mit -level N macht alle darueber liegenden -level ungueltig. Die noetigen Daten der Ebenen werden in einem gesonderten Directory verwaltet, das mit -conf_dir gewaehlt wird. Dort werden auch alle Parameter des Backups wie Fileliste, Maximalgroessen usw. gespeichert. Inkrementelle Backups geben sich automatisch die Option -younger_than vor. Durch sie werden unter Umstaenden auch aeltere Files mit aufgenommen. Leider verursachen reine Namensaenderungen im allgemeinen Linux Filesystem keine Aenderung an den Zeitmarken des Files. (Aber zB. chmod u+r tut es.) Deshalb lassen sich oft langwierige Pruefsummenberechnungen der Fileinhalte nicht vermeiden. Weil eine zu grosse Zahl einzelner Filenamen Probleme mit alten Versionen von mkisofs bereiten wuerde, versucht das Programm hauptsaechlich, ganze Directories auszuschliessen, die nur sehr wenige junge Files enthalten. Diese Ausnahmen werden dann ausdruecklich in den Backup aufgenommen. Es muss ausserdem eine gewisse Quote von eingesparten Bytes pro hinzukommendem Filenamen erfuellt sein, damit es zum Ausschluss von Directories kommt. Diese ist umso hoeher, je kleiner -max_items gewaehlt ist. Es kann ein gesondertes Skript erzeugt werden, das Auskunft ueber den Backup gibt. Optionen dieses Skriptes sind dann: -hilfe, -id, -count, -list, -levelall , -suball, -fast, -help Andere Argumente werden als Filenamen in den Listen der Stuecke gesucht. Wenn ein passendes Directory oder der Filename gefunden wird, dann wird die Nummer des Stuecks, der gefundene und der gesuchte Name ausgegeben. Wenn nichts gefunden wird, ist der exit-Wert des Skriptes 1. Dieses sog. Infoskript wird nur dann auf der Platte gespeichert und in jedes einzelne Backupstueck eingefuegt, wenn ein Filename mit der Option -info_script angegeben wurde (siehe unten). Dabei wird seine Groesse ueppig mit 100kB geschaetzt. Falls Ihr Infoskript wirklich groesser werden sollte, muss dass durch eine entsprechend kleinere -max_size (siehe unten) ausgeglichen werden. Wenn das Infoskript in die Stuecke eingefuegt wird und die Ausgabgeform fuer mkisofs verwendet wird (Grundeinstellung bzw. -form_script) dann werden alle Fileadressen vom Backup ausgeschlossen, die zum selben Namen auf der CD fuehren wuerden. Wenn eine Zahl als Argument uebergeben wird, ueberspringt das Skript alle Stuecke mit niedrigerer Nummer. Um zB. einen Backup fortzusetzen, der bei der Abfrage fuer Stueck 3 unterbrochen wurde: skriptname 3 So ueberspringt das Skript die Stuecke 1 und 2. Wenn das Skript mit der Option -status_file erzeugt wurde, dann kann es das betroffene Stueck automatisch anhand des Statusfiles finden. Diese Automatik wird durch das Argument "AUTO" ausgeloest. Argumente, die nicht mit '-' beginnen, sind Fileadressen, die entweder in die Backupliste oder in die Ausschlussliste aufgenommen werden. (siehe auch Optionen -yes und -no) Vor den Fileadressen koennen Zieladressen stehen. Das ist nuetzlich, um eine CD aus weit verstreuten Daten zusammenzustellen. Dazu kann mit der Option -target_separator vorher ein Trennzeichen eingestellt werden. Beispiel: -target_separator = /bilder=/home/privat/bilder ... Alle Fileaddressen zusammen legen das "Backupgebiet" fest, in dem Teil- bereiche durch die Option -not ausgeblendet sein koennen. Das Backupgebiet kann durch Pruefungen (zB. -younger_than) ausgeduennt werden und bildet danach den "Backupinhalt". Optionen: Einige Optionen (wie -max_size) erwarten Groessenangaben. Das koennen Dezimalzahlen sein (wie 1000000000) oder Fliesskommazahlen (wie 1.25e9). Sie koennen um einen der Buchstaben {b,k,m,g,t,p,e} ergaenzt sein, wodurch sie mit {1,1024,1024*1024,1024*1024*1024,...,pow(1024.0,6.0)} multipliziert werden. Beispiel : 640m = 640*1024*1024 = 671088640 -hilfe diesen Text ausgeben und Programm beenden -help print this text and exit program (dieser Text in englischer Sprache und Programmende) -version Versionskennung auf stdout ausgeben, wenn andere Argumente : auf stderr Warnungstext ausgeben, immer : Programm mit exit-Wert 4 beenden. -- das naechste Argument ist ein File und keine Option -accept_all_filetypes entspricht -result_filetypes any -alldev gemountete Filesysteme nicht ausschliessen. (Grundeinstellung, siehe -xdev und -localdev) -backup_cmd text der angegebene Text wird in dem vom Programm erzeugten Skript als Backup-Kommando verwendet. text unterliegt der besonderen -bdir Ersetzung. (Grundeinstellung: cd_backup_kommando) -bd stellt Groessenparamter ein fuer Single Layer Blu-ray Medien von nominal "25 GB" bei mittlerer Formatierung. -bdir directory stellt das scdbackup-Installationsdirectory ein. Zzt. ist seine einzige Verwendung die -bdir Ersetzung. Sie findet statt, wenn File specific_arguments einer inkrementellen Backupkonfiguration gelesen wird. Wenn solch ein Argument mit @SCDBACKUP_DIR@ beginnt, dann wird dieses Startstueck durch das -bdir directory ersetzt. Das gilt auch, wenn davor noch ein Anfuehrungszeichen steht. Bei einigen wenigen Argumenten wird das Startstueck auch ersetzt, wenn grep .*/scdbackup-[0-9]\.[0-9]\.[0-9]/.* zutrifft. Das ist die besondere -bdir Ersetzung. -bd_dl stellt Groessenparamter ein fuer Double Layer Blu-ray Medien von nominal "50 GB" bei mittlerer Formatierung. -blocklist_fileadr adress_anfang wenn adress_anfang nicht leer und nicht "-" ist, dann werden aus ihm die Adressen von abzuspeichernden Block- pruefsummenlisten erzeugt. Ob solche Pruefsummenlisten bereitstehen, entscheiden -filter_checksum_blocksize bei -filter_md5 und -scan_for_checksum -blocklist bei -search_md5 . Die effektive Fileaddrese besteht dann aus adress_anfang, dem Recordnamen, dem Datum und der Anzahl- angabe aus dem Pruefsummenrecord. zB: wird aus "/tmp/x_" /tmp/x_1_1_A41123.194219_229208064 -changetest_options code:code:... waehlt die Eigenschaften, die waehrend des Tests von -younger_than beruecksichtigt werden sollen. Es werden dabei die Objekte des Backupgebiets mit dem Speicherbaum verglichen, der mit -old_tree eingelesen wurden. Die einzelnen Codes werden mit ":" verbunden : type Filetyp (zB. Directory, Datenfile, Softlink) size Groesse des Inhaltes in Bytes crc Pruefsumme des Inhalts inode Interne ID-Nummer des Filesystemobjekts off Vergleich mit altem Speicherbaum wird ausgelassen adr Vergleich wird gemacht (Grundeinstellung) mistrust vermeidet eine Abkuerzung bei CRC, die auf Directory Zeitmarken beruht. dir_trust erlaubt eine schnellere Abkuerzung bei CRC, die nicht erwartet, dass Directories andere Directories durch Umnennen ersetzen. assume_old alle Files als zu alt werten. ignore_ctime nur mtime und nicht ctime beachten. ignore_device bei inode nicht Devicenummern pruefen. no_split_economy keine Pruefung auf unoekonomische Directoryspaltung durch kleine, alte Files. HINWEIS: -load_old_tree mit nichtleeren Adressen setzt -changetest_options auf "type:size:crc:adr" Setzen Sie Ihre -changetest_options nach -load_old_tree -collision_test modus steuert den Kollisionstest fuer Zielnamen modus kann sein (Grundeinstellung: -redirect): -off keinen Kollisionstest machen -on bei Kollisionen warnen -redirect bei Kollisionen Zielnamen aendern -abort bei Kollisionen Programm abbrechen -compare_checksum listenfile suchname altersgrenze jugendgrenze Das Programm endet sofort wenn stdin schliesst. Es leitet ohne Aenderungen stdin nach stdout durch. Aus listenfile wird ein Record gelesen, der zu den anderen drei Argumenten passt. Er sollte von -filter_md5 oder von -filter_crc32 stammen. Damit er passt, muss der suchname "-" sein oder genau der Name des Records. Wenn altergrenze nicht "-" ist, dann darf er nicht aelter sein als diese Grenze. jugendgrenze verlangt dagegen ein gewisses Mindestalter (siehe -younger_than wegen des Formats von Zeitangaben). Der letzte passende Record aus listenfile wird verwendet. Die in ihm verzeichnete Datenmenge wird von stdin gelesen und zu einer Pruefsumme verarbeitet, die mit der des Records verglichen wird. Liefert stdin genuegend Daten und stimmt die Pruefsumme ueberein, dann endet das Programm mit Rueckgabewert 0, in allen anderen Faellen mit 1. Ueberschuessige Daten an stdin werden ignoriert ! -complete_list_adr fileadresse schreibt eine komplette Fileliste des Backupgebiets in den angegebenen File. Wenn die fileadresse kein "/" enthaelt und eine -level Option angegeben ist, dann wird der File im level_# Directory erzeugt (siehe -conf_dir). Ohne -level ensteht ein solcher File im -tmp_dir. Wenn fileadresse mit .gz endet, dann wird die Ausgabe durch das programm gzip komprimiert. Wenn eine Zieladresse angegeben ist, dann wird der Ergebnisfile zum letzten Stueck des Backups hinzugefuegt. (zB. /compl.gz=compl.gz) Die Liste wird in einem Format geschrieben, das Platz spart aber immer noch von Menschen lesbar ist. Jede Listenzeile besteht aus den mit -list_output_format festgelegten Feldern, wobei die Fileadresse immer am Zeilenende steht. (Felderliste siehe "#=# line layout") Die ersten und letzten Zeichen einer Adresse bestimmen ihren Typ : /x/x/x/ absolute Directoryadresse /x/x/x absolute Fileadresse ./x/ tiefergehen in Directory x ./x File x im aktuellen Directory .. ein Directory nach oben gehen ../ zurueck zum Startdirectory #=# xxxx Zusatzinformationen Die erste angegebene Directoryadresse ist absolut und bestimmt das Startdirectory fuer relative Adressen. Mit ./x/ und /x/x/x kann der Directorycursor aus dem Startdirectory herausbewegt werden. Solange er im Startdirectory ist, wird den Adressen eine Zieladresse vorangestellt, die dann auch fuer die darunterliegenden relativen Adressen gilt. Beide sind durch ein "="-Zeichen getrennt. Sollte die Zieladresse selbst "=" oder "\" enthalten, dann wird diesen jeweils "\" vorangestellt. Die Ergebnisliste eignet sich fuer -vanish_list_adr . -composition_memory tiefe breite speicherlimit legt Groesse und Regeln des Beschleunigungspuffers fuer die Zerlegung grosser und tiefer Baeume fest. Der Wert tiefe bestimmt, wie viele Unterdirectoryebenen sich das Programm bei der Groessenuntersuchung eines Directories merkt fuer den Fall, dass die Groessen dieser Unterlinge fuer eine Aufspaltung erneut bestimmt werden sollen. Das vermeidet dann eine erneute Untersuchung der Filebaeume auf der Festplatte und kann sehr viel Zeit sparen. Der Wert breite bestimmt, wieviele Eintraege ein Unter- directory maximal haben darf, um gepuffert zu werden. Ihr Speicherbedarf haengt von der Laenge der Filenamen ab. Mindestens aber 20 Bytes pro Stueck. Er wird durch den Wert speicherlimit begrenzt. Ist dieser Zahl ein "-" vorangestellt, dann wird freigegebener Pufferspeicher nicht als wiederverwendbar gewertet. Grundeinstellung : 3 1000 4m (0 0 0 schaltet ab) -composition_mode kriterium legt die Reihenfolge gleichrangiger Fileobjekte bei der Zusammenstellung der Backupstuecke fest. Bei allen Modi wird versucht, Directorybaeume zusammenzuhalten. Beim Anordnen der Startliste und beim Aufspalten von Directories kann jedoch das jeweils naechste Fileobjekt nach verschiedenen Kriterien ausgewaehlt werden : bestfit das jeweils groesste passende Fileobjekt target die alphabetisch naechsthoehere Zieladresse source die alphabetisch naechsthoehere Quelladresse time das naechstjuengere Fileobjekt crawler das naechste Fileobjekt das der Crawler findet default zZt. wie bestfit alphabetical zZt. wie target chronological zZt. wie time fast zZt. wie crawler Bei den Kriterien target, source und time ist die Chance recht hoch, dass groessere Directories auf zwei aneinandergrenzende Stuecke aufgeteilt werden. Die Wahrscheinlichkeit der Aufteilung wird von der Option -min_size_percent bestimmt. Eine niedrige Prozentzahl beguenstigt Verschwendung von Platz auf den Medien waehrend eine hohe Prozentzahl mehr Aufteilungen bewirkt. Verschwendung wird durch Aufteilungen nur dann verhindert, wenn die Zahl -max_items gross genug ist, um fast alle Teile aufzunehmen. Das Kriterium crawler fuehrt bei normalgrossen Directories zu aehnlichen Ergebnissen wie Kriterium source. Es spaltet an Stueckgrenzen gnadenlos Directories auf. Es erspart ein bis zwei Suchlaeufe ueber das Backupgebiet, die bei grossen Directorybaeumen und wenig RAM sehr lange dauern koennen. -content_list_adr fileadresse schreibt eine Fileliste des Backupinhalts. Diese Option listet nur diejenigen Files, die Teil eines Backupstuecks werden. Das Ausgabeformat ist wie bei -complete_list_adr . Die Inhaltslisten und die Schwundlisten aller Levels zusammen enthalten die selbe Information wie eine einzelne Komplettliste. Eine Inhaltsliste markiert auch die Grenzen der Backupstuecke. -conf_dir directoryadresse legt die Adresse einer Backupkonfiguration fest. Sie enthaelt Files mit Informationen, die von inkrementellen Backups erzeugt und genutzt werden. (siehe -level) specific_arguments : Optionenliste des vollen Backups jede Zeile ist ein Argument. highest_level : Hoechste gueltige Levelnummer ASKME_level_# : Infoskript zu -level # level_#/ : Leveldirectory mit folgenden Files last_run_date : Datumskennung des letzten Backups number_of_volumes : Anzahl der Backupstuecke content_file_list.gz : siehe -content_list_adr und -load_old_tree vanished_file_list.gz: siehe -vanish_list_adr VANISHED.sh.gz : siehe -vanish_script_adr -cut_file quell_adresse start_byte byte_anzahl ziel_adresse Das Programm endet sofort wenn diese Option erledigt ist. Sie kopiert ein Intervall von Bytes aus einem File in einen neuen File. Zu verwenden mit -split_large_files . Wenn quell_adresse '-' ist, dann wird von stdin gelesen und eine Zahl von start_byte Bytes uebersprungen. Sonst wird quell_adresse als File geoeffnet und der Lesezeiger auf start_byte positioniert. ziel_adresse kann '-' fuer stdout sein oder eine brauchbare Adresse fuer einen neuen File. Die Zwischenmeldungen kontrolliert -pacifier. -debug_filelist listenfile oberdirectory Das Programm endet sofort wenn listenfile ausgelesen ist. Es gibt die Listenzeile und ggf. die daraus resultierende absolute Fileadresse aus. Dabei wird oberdirectory jeder Adresse vorangestellt. Vor Listenzeilen werden drei Leerzeichen und die Zahl der bisher angezeigten Files gesetzt. Sie lassen sich also mit grep -v '^ ' wegfiltern. -debug_stderr_log Das Programm endet sofort wenn stdin ausgelesen ist. Es wandelt CarriageReturn in Newline um und versucht dabei auch Leerzeilen wegzulassen. Gedacht um Ergebnisse von scdbackup ... 2>&1 | tee -i ... lesbarer zu machen. -debug_targetlist listenfile oberdirectory wie -debug_filelist. Jedoch werden die Zieladressen gezeigt, was einen Unterschied macht, wenn beim Backup mit ziel=quelle Umleitungen bestellt wurden. -delete_filelist listenfile oberdirectory HINWEIS: fuer das Entfernen von Files waehrend der Wiederherstellung eines backups eignet sich -delete_targetlist besser. Das Programm endet sofort wenn listenfile ausgelesen ist. Aus listenfile ("-" = stdin) werden Fileadressen mit Typ, Groesse und Pruefsumme gelesen. Diese Angaben werden mit dem Ist-Zustand der Fileadresse verglichen. Dabei wird oberdirectory jeder Adresse vorangestellt. Existiert die Adresse und passen die anderen Angaben, dann wird der File an dieser Adresse mit oberdirectory geloescht. Directories werden geloescht wenn sie in der Liste vorkommen und im Filesystem leer sind. Ansonsten geht eine Fehlermeldung an stderr. listenfile muss mit der Option -vanish_list_adr erzeugt worden sein. Er muss Typ, Groesse, Checksumme enthalten. War der gesamte Programmlauf fehlerfrei, dann ist der Exitwert 0, sonst 1. -delete_targetlist listenfile oberdirectory wie -delete_filelist. Jedoch werden die Zieladressen verwendet, was einen Unterschied macht, wenn beim Backup mit ziel=quelle Umleitungen bestellt wurden. -dir_list_adr fileadresse schreibt eine komplette Directoryliste des Backupgebiets in den angegebenen File. Das Ausgabeformat ist aehnlich wie bei -complete_list_adr. Allerdings sind folgende Informationen fest voreingestellt: "type:chmod:chown:chgrp:date:size:adr" wobei chmod:chown:chgrp:date Zugriffsrechte, Besitzer und Datum angeben. Wenn bei -list_output_format MD5-Pruefsummen bestellt sind, werden sie auch hier verwendet. -dir_script_adr fileadresse schreibt ein Shellscript zur Wiederherstellung der Zugriffsrechte der Directories des Backupgebiets in in den angegebenen File. Es werden die Zieladressen relativ zum /-Directory der CDs eingetragen. -dir_size_cmd text der angegebene Text wird als Kommando zur Bestimmung der Groesse eines Directory verwendet. Das Kommando muss die Adresse eines Directory erwarten und als erstes Wort auf der Standardausgabe dessen Groesse in Kilobyte angeben (wie du -sk ). Grundeinstellung: "-internal" ruft kein externes Kommando auf, sondern summiert rekursiv die einzelnen Filegroessen und die Laenge ihrer Adressen. Dazu kommt ein Zuschlag von 256 Bytes pro File. Dieser kann mit "-internal+$zahl" anders gewaehlt werden. So rechnet "-internal+10" pro File 10 Bytes hinzu. "-internal-$zahl" schaltet das Hinzuaddieren der Adressenlaenge ab. -disable_safe_leveling ist aequivalent zu -load_old_tree "" "" -content_list_adr "" -complete_list_adr "" -vanish_script_adr "" "" -vanish_list_adr "" "" -dvd stellt Groessenparamter ein fuer Single Layer DVD Medien von nominal "4.7 GB". Nicht geeignet fuer DVD-RAM. -dvd_dl stellt Groessenparamter ein fuer Double Layer DVD Medien von nominal "8.5 GB". -dvd_ram stellt Groessenparamter ein fuer DVD-RAM Medien von nominal "4.7 GB" bei mittlerer Formatierung. -exclude_size groessengrenze alle files ausschliessen, die mindestens die angegebene Zahl von Bytes enthalten. groessengrenze 0 schaltet diesen Test ab. Wenn groessengrenze mit "-" beginnt, gilt bei Softlinks die Groesse des Linkziels. 'k' 'm' und 'g' werden erkannt wie bei -max_size . -extract_multiplied quelle auslassen Das Programm endet sofort wenn stdin schliesst. Es liest quelle sequentiell ein und erwartet dass diese Daten von Option -multiply_volume erzeugt wurden. auslassen gibt die Zahl von Kopien an, die uebersprungen werden sollen. Die naechste Kopie wird dann auf stdout ausgegeben, eventuell gefolgt von einer entwerteten Trennmarke. -extract_tag_tail maximale_menge Das Programm endet sofort wenn stdin schliesst. Es frisst zunaechst alle Bytes von stdin, bis es auf den Anfang einer moeglicherweise gueltigen Pruefsummenmarke stoesst, die mindestens 1 Byte bewacht. Der Markenanfang wird dann auf stdout ausgegeben ebenso die folgenden Bytes. Diese jedoch nur bis zu maximale_menge. Man sollte eine grosse maximale_menge angeben, um alle interessanten Daten zu erwischen. Anders als bei -search_md5 werden hier auch beschaedigte Tags akzeptiert. Wurden Daten erfolgreich extrahiert, ist der Exitwert 0, sonst ist er ungleich 0. -extract_tag_tail_dislocated maximale_menge wie -extract_tag_tail mit dem Unterschied, dass schon das erste Vorkommen des Kenntextes von Pruefsummenmarken genuegt. Es ist nicht noetig, dass die Positionsangabe der Marke mit der Position im Datenstrom uebereinstimmt. Damit lassen sich zwar Marken aus Datenstroemen lesen, in denen Bytes fehlen, man erhaelt aber auch jede Marke, die aus irgendwelchen Gruenden Bestandteil der Backupdaten ist. Lediglich Marken, die bei Byte 0 des Datenstroms beginnen, werden uebersprungen. -facl_list_adr fileadresse wendet das Programm getfacl auf das Backupgebiet an und schreibt seine Ausgabe in die angegebene Fileadresse. Dadurch werden die ueblichen Zugriffsrechte der Files und ggf. auch ihre ACL-Zugriffrechte aufgezeichnet. Das Format eignet sich als Eingabe fuer das Programm setfacl gunzip voranzustellendes Directory beim Aufbau von -load_old_tree. (Nur noetig wenn ungleich quelle ist.) tree_source bei -load_old_tree die Quelladressen einlesen. tree_target bei -load_old_tree die Zieladressen einlesen. Optionen koennen mit Doppelpunkt verbunden werden. Die leere Optionsliste "-" ist gleich : "overwrite:move:chmod_original:tree_target" . -min_size_percent zahl Prozentanteil von -max_size, der mindestens ge- fuellt sein muss, bevor ein neues Stueck eroeffnet wird. Wenn dieser Anteil nicht gefuellt ist, kann ein groesseres Directory aufgespalten werden. (Grundeinstellung: 80.0) -multiply_volume quelle wiederhol_faktor Das Programm endet sofort wenn stdin schliesst. Es liest quelle mehrfach und gibt diese Kopien hintereinander auf stdout aus. Zwischen die Kopien werden Markierungen gesetzt, die es erlauben, eine einzelne Kopie mit der Option -extract_multiplied herauszuziehen. -no alle folgenden Fileadressen sollen nicht mit in den Backup aufgenommen werden. Diese Option kann zu einer langen Ergebnisliste fuehren, weil das Auslassen eines Directories die Erwaehnung all seiner Nachbarn erfordert. -not wirkt genau wie -no -not_inode wirkt wie -no, versucht aber nicht nur anhand der Adressen sondern auch anhand von Device- und Inode-Nummer die auszuschliessenden Fileobjekte zu erkennen. Dieser Test ist aufwendiger und erfordert u.U. mehr Plattenzugriffe. -not_pattern shellpattern fuegt das Argument shellpattern zur Liste der Suchausdruecke hinzu, die auf Filenamen angewendet werden und bei einem Treffer zur Abweisung des Files fuehren. shellpattern kann die ueblichen Platzhalter *,?,[...] enthalten. -not_regex regex fuegt das Argument regex zur Liste der Suchausdruecke hinzu, die auf Filenamen angewendet werden und bei einem Treffer zur Abweisung des Files fuehren. regex ist eine regular expression, wie sie in den Programmen grep, sed oder vi ueblich ist. -pacifier modus|rythmus einige Optionen geben Meldungen ueber ihren Fortschritt auf stderr aus. Wenn Sie stderr in einen File leiten, kann das laestig sein. -off schaltet die Meldungen aus -on schaltet einen Rythmus von 1 Meldung/s ein Eine Zahl waehlt einen Rythmus in Sekunden. -timestamp schreibt die Zahl der verstrichenen Sekunden an den Zeilenanfang. -composition_memory zeigt den Pufferzustand der gleichnamigen Option waehrend der Komposition -log_mode ungekuerzte Meldungen in eigenen Zeilen Bis auf -off koennen alle diese Modi kombiniert werden : -pacifier 3 -pacifier -timestamp -pacifier -log_mode -permute_blocks key quelle blockgroesse blockzahl datenstart Das Programm endet sofort wenn stdin schliesst. Es liest File quelle mit wahlfreiem Zugriff und schreibt sein Ergebnis auf stdout. Dabei werden die Daten blockweise auf andere Positionen im Ausgabestrom versetzt. Vor die vertauschten Blocks wird ein Header geschrieben, der angibt wie die Daten veraendert wurden : scdbackup block permutation header v0.1 blocksize=... Zahl der Bytes pro Block complete_blocks=... Zahl der kompletten Blocks remainder=... Bytes im letzten Block permutation_key=... Vertauschungsregel (0 bis 7) datastart=... Nummer des ersten Datenblocks key gibt die Vertauschungsregel an : 0= keine Vertauschung 1= Filehaelften vertauschen 2= Blockweise spiegeln 3= 1. und 2. Viertel tauschen, 3. und 4. ebenso plus 4 = zusaetzlich Reissverschluss der Haelften (zB. 7 = 3+4 = Viertel tauschen, dann Reissverschluss) key "restore" veranlasst Ruecktauschen in den Original- zustand anhand des Fileheaders von quelle. Steht vor key ein "-", dann wird ebenfalls die Ver- tauschung wieder rueckgaengig gemacht. Hierbei wird aber dem Fileheader nicht getraut, sondern die Parameter key, blockgroesse, blockzahl und datenstart verwendet. Beim Vertauschen kann blockzahl fuer Blockdevices verwendet werden, um die zu lesenden Blocks festzulegen. Sonst wird diese Zahl aus der Filegroesse errechnet, die fuer Blockdevices durch Bytezaehlen ermittelt wird. Normalerweise sollten blockzahl und datenstart beim Vertauschen und beim Ruecktauschen aber 0 sein. -pre_checksum_size zahl legt die Groesse des Anfangsstuecks im Datenstrom fest, das fuer die Vorschaupruefsumme verwendet wird. Wenn diese Zahl groesser als 0 ist, schreiben -filter_md5 und -filter_crc32 zwei Records. Der erste mit dem Anhang "_pre" am Namen kann von den Optionen -search_md5 und -search_crc32 genutzt werden, um den zweiten, vollen Record zu finden. Erlaubt sind Zahlen groesser oder gleich -1. Grundeinstellung ist 0. Ist zahl groesser als 0, wird -filter_checksum_blocksize abgeschaltet. -prevent_doubles on|off bei Einstellung "on" wird bei jedem neuen Eintrag geprueft, ob er schon im entstehenden Backupplan enthalten ist. Ggf. wird er dann ausgelassen. Dieser Test kann nennenswert Zeit benoetigen und ist daher normalerweise abgeschaltet. -problemlist_limit zahl Legt die Maximalzahl von Eintraegen in Problemlisten fest, die von -filecheck, -exclude_size, -xdev veranlasst sein koennen. Wenn zahl bei einer dieser Listen ueber- schritten wird, bricht die Planung schliesslich ab. Grundeinstellung : 10000 -process_blocklist aktion listenfile auslassen quelle ziel gibt eine Uebersicht ueber eventuelle Datenschaeden und bietet auch Reparaturmoeglichkeiten. Nach Ausfuehrung dieser Option endet das Programm. Die Fehlererkennung beruht auf einer Blockpruefsummenliste (siehe -filter_checksum_blocksize). Die Liste wird aus listenfile gelesen, wo sie an einer gueltigen Pruefsummen- marke haengen muss. Als listenfile kommen u.a. in Frage: Backupstuecke, die mit -filter_checksum_blocksize geschrieben wurden oder Ergebnisse von -blocklist_fileadr. auslassen gibt die Zahl der Marken an, die uebersprungen werden sollen, bis schliesslich eine eingelesen wird. Im Normalfall ist der Wert 0 richtig. quelle ist die Fileadresse ("-"=stdin) eines eventuell beschaedigten Backupstuecks. ziel ist eine Fileadresse, wo unbeschaedigte Datenbloecke zusammengesetzt werden ("-"=stdin/stdout). Je nach aktion ist bei diesen beiden wahlfreier Zugriff noetig oder es reicht sequentieller (in einem Durchlauf). Folgende Kennwoerter fuer aktion werden erkannt : "report" liest quelle sequentiell und druckt in getrennten Zeilen die Nummern schadhafter Bloecke auf stdout. Das Ende dieser Fehlerliste wird durch die Zeile "@" markiert. ziel wird bei "report" nicht benutzt. "collect" liest quelle sequentiell und schreibt die unbeschaedigten Blocks mit wahlfreiem Zugriff nach ziel. "mend" liest ziel mit wahlfreiem Zugriff und greift bei beschaedigten Blocks wahlfrei auf quelle zu, um von dort eine unbeschaedigte Kopie zu holen. Gelingt das, dann wird dieser Block nach ziel geschrieben. mend erlaubt die optionale Angabe einer Startnummer und auch einer Endnummer. Die Blocknummerierung beginnt bei 0. Der Text "end" bezeichnet den letzten Block. Ist die Startnummer groesser als die Endnummer, dann werden die Blocks entsprechend rueckwaerts bearbeitet. Beispiele: mend mend:1200 mend:10k:20k mend:end:0 "merge" liest quelle und ziel sequentiell und schreibt unbeschaedigte Blocks oder beschaedigte aus ziel oder aber entsprechend viele 0-Bytes auf stdout. Bei schreibender aktion wird die Blockpruefsummenliste an ziel angehaengt. Eine kurze Beschreibung der Blocklistenparameter und eine Zusammenfassung des Ergebnisses wird auf stderr gedruckt. Wenn man stderr mit einem Programm auswertet, sollte man vor die Option -process_blocklist die Option -pacifier -off setzen. Der Exitwert ist 0, wenn die Ergebnisdaten als komplett und unbeschaedigt bewertet werden. Sonst ist er nicht 0. -result_filetypes typenliste legt die Filetypen fest, deren Adressen in der Ergebnis- liste bzw. -skript stehen duerfen. typenliste besteht aus einem oder mehreren dieser Woerter, getrennt durch ":". data gewoehnliche Datenfiles dir Directories symlink symbolische Links block_device Geraetefiles fuer Festplatten,CD, u.a. unclassified alles andere any alles zusammen arg_redirect ersetze symlink Argumente durch Linkziel Filetypen, die nicht in der typenliste erwaehnt sind, werden verworfen, wenn sie in die Liste eines Backupstuecks eingetragen werden sollen. Wenn Pseudotyp arg_redirect gegeben ist, werden die Argumente dieses Programms auf symbolische Links geprueft und diese durch ihre Linkziele (Datenquellen) ersetzt. -scan_for_checksum modus steuert fuer -search_crc32 und -search_md5 die Suche nach angehaengten Pruefsummenmarken (-filter_checksum_padsize). Folgende Modi werden erkannt : -on Suche angeschaltet. Zusatzoptionen unveraendert. -off Suche abgeschaltet. Zusatzoptionen unveraendert. -first Suche an. Nach erster gueltiger Marke enden. -whole Suche an. Bis Ende des Bytestroms lesen. -standalone Suche an. listenfile nicht lesen. -withlist Suche an. Mit listenfile. -print Suche an. Gueltige Marken am Ende auflisten. -noprint Suche an. Nicht auflisten. -anytag Alle Arten von Marken akzeptieren. -blocklist Nur Marken mit Blockpruefsummenliste. -pacifier Den Fortschritt des Lesens melden (stderr). -nopacifier Keine Fortschrittsmeldungen ausgeben. -source:text Fileadresse anstelle der Standardeingabe -skip:zahl Anzahl der Bytes, die bei der Eingabe ausgelassen wurden. Bei -source: werden auch entprechend viele uebersprungen. Mehrfachnennungen sind erlaubt. Grundeinstellung : -scan_for_checksum -withlist -scan_for_checksum -off -scan_for_checksum -anytag -scan_for_checksum -nopacifier -scattering -on|-off Modus -on erlaubt das Verlagern grosser Files auf andere CDs als die, die ihre Directorynachbarn aufnehmen. Das hilft -min_size_percent zu erfuellen, kann aber zu weit verstreuten Directoryinhalten fuehren. Diese Option wirkt nur zusammen mit -composition_mode default . -search_crc32 listenfile suchname altersgrenze jugendgrenze wie -compare_checksum aber mit automatischer Erkennung des Datenstroms und nur fuer Records mit CRC32 Pruefsummen. Die Suchmethode haengt von -pre_checksum_size ab. Wenn sie 0 ist, dann werden alle Records in den Arbeitsspeicher geladen, nach Groesse sortiert und mit Zwischenpruefsummen des Datenstroms verglichen. Der Datenstrom wird bis zu seinem Ende gelesen. Mehr als eine Uebereinstimmung kann gefunden werden (besonders mit Vorschaurecords). Ist -pre_checksum_size -1, dann wird das lesen nach der ersten Uebereinstimmung beendet. Wenn -pre_checksum_size >0 ist, dann wird zunaechst ein passender Vorschaurecord gesucht, um den zugehoerigen Record mit der vollen Pruefsumme zu finden. Die Records fuer die Vorschau werden von -filter_md5 und -filter_crc32 erzeugt, wenn -pre_checksum_size nicht 0 ist. Diese Vorschaugroesse muss bei filter_ und search_ gleich sein. -search_md5 listenfile suchname altersgrenze jugendgrenze wie -search_crc32 aber mit denjenigen Records, die MD5 Pruefsummen haben. -set_shell_in_scdbackup_scripts shellname filename ... filename eine besondere Option, die nur fuer die Konfiguration verwendet wird. Die gegebenen Files werden geprueft, ob sie mit "#!" beginnen. Wenn ja, wird der Rest der Zeile durch shellname ersetzt. Es duerfen keine Optionen mehr folgen, weil der Rest der Argumente als Liste von Filenamen verstanden wird. -shell_to_use progname der progname wird nach "#!" in die erste Zeile von Skripten gesetzt, die von diesem Programm erzeugt werden. Grundeinstellung: /bin/sh -special_file filenadresse groesse typ meldet einen File als besondere Datenquelle an. Zur Zeit ist nur der typ "block_device" zugelassen. Dazu muss noch mit -split_large_files ein split_directory und ein split_kommando angegeben werden. Der Dateninhalt eines so angemeldeten Blockdevice wird dann mit der angegebenen Groesse in Form von einem oder mehreren Teilstuecken in den Backupplan aufgenommen. Ist groesse <=0, dann wird sie durch Auslesen des Blockdevice automatisch bestimmt. fileadresse darf die Form ziel=quelle haben. -split_file_prefix text legt einen Text fest, der vor die Namen aller Stuecke gesetzt wird, die durch -split_large_files entstehen. -split_file_suffix text wie -split_file_prefix. Der Text wird aber zwischen Namen und Zaehlnummern gesetzt. Siehe auch -split_list_adr . -split_large_files split_directory split_groesse split_kommando sk_option legt die Maximalgroesse fuer Datenfiles fest. Ebenso die Adresse eines Pufferdirectories und eines Shellkommandos, das ein Intervall aus einem File extrahieren kann. Dieses Programm selbst kann mit sk_option -cut_file als solch ein Shellkommando dienen. split_kommando unterliegt der besonderen -bdir Ersetzung. Files, die groesser sind als split_groesse, werden als mehrere getrennte Stuecke behandelt. Shellskripte, die von diesem programm ausgegeben werden, benutzen dann das split_kommando, um die Stuecke im split_directory bereit zu stellen. Alle Filestuecke eines Backupteils (einer CD) muessen im split_directory Platz haben. Dort muss es einen File namens scdbackup_split_file_directory_mark geben. split_directory '-' schaltet diese Funktionalitaet ab. split_directory '-xorriso_cut_out' nutzt Option -cut_out des ISO 9660 Formatierprogramms xorriso. Dann ist kein Directory noetig, split_kommando und sk_option werden dann ignoriert. split_groesse '-' bestellt die effektive -max_size Groesse minus 1m. Hinweis: Die Option -exclude_size kann Files bereits vor der Aufteilung in Intervalle ausschliessen. split_kommando '-' laesst das vorher eingestellte Kommando unveraendert. sk_option sollte dann auch '-' sein. -split_list_adr fileaddresse schreibt eine Liste der Filestuecke, die durch Option -split_large_files entstehen. Die Information in diesem File kann hilfreich sein, wenn ein Ausgabeformat wie -form_path_list_afio gewaehlt wurde. Beim Wiederherstellen solch eines Backups erscheinen die Stuecke im split_directory und muessen an ihre Originalpositionen gebracht werden. Aufnahme in den Backup sind wie bei -complete_list_adr. Jede Datenzeile beschreibt ein Filestueck in der Form intervall stueck_adresse=puffer_adresse intervall hat die Form **stuecknummer/stueckgesamtzahl:start_byte+byte_zahl** stueck_adresse besteht aus orignal_dir"/"fix_name"_"stuecknummer"_"gesamtzahl fix_name besteht aus: prefix_text""original_name""suffix_text puffer_adresse ist zusammengesetzt aus : split_dir"/"basename_von_stueck_adresse"-"hexnummer wobei hexnummer im gesamten Backup einmalig ist. -status_file filename Wenn der Filename nicht leer und nicht "-" ist, dann wird das Ergebnisskript die aktuelle Stuecknummer in diesen File schreiben, bevor es das -backup_cmd aufruft. Es wird dann in der Lage sein, einen Backup am Anfang des unterbrochenen Stueckes wieder aufzunehmen. Das geschieht, wenn das Argument keine Stuecknummer sondern "AUTO" ist. -target_escape modus entscheidet, wie "="-Zeichen in Zieladressen behandelt werden. modus "on" bewirkt, dass "=" und "\" durch je ein "\"-Zeichen gekennzeichnet werden. Diese Zieladressen werden von modernen mkisofs-Versionen verstanden, die Option -graft-points kennen. modus "off" sorgt dafuer, dass in Zieladressen "=" durch "_" ersetzt wird. "\" bleibt ungeaendert. Dies eignet sich fuer mkisofs 1.12b3. Hinweis: Option -form_path_list setzt modus auf "on" und -form_script setzt ihn auf "off". Danach kann man ihn mit -target_escape ueberstimmen. -target_separator text das erste Zeichen des Textes wird als Trenn- zeichen zwischen Zieladressen und den Fileadressen eingestellt. Das wirkt nur auf Eingaben und nicht auf Ausgaben des Programms, wo ggf. "=" verwendet wird. Ein leerer Text schaltet die Zieladressen-Erkennung ab. Grundeinstellung ist "=". In der Zieladresse vorkommende Trennzeichen und "\"-Zeichen muessen durch ein vorangestelltes "\" gekennzeichnet sein. Beispiel: Bilde /home/buero auf das /-Directory der CD ab -target_separator ':' /:/home/buero -target_separator '' Beispiel: Bilde /home/test/=\ ab auf /=\ -target_separator '=' '/\=\\'='/home/test/=\' -tmp_dir directory_adresse bestimmt ein Directory, in dem temporaere Files abgelegt werden koennen. U.a. wird es fuer Listenfileadressen ohne '/' verwendet, die eigentlich in ein Leveldirectory sollen, wenn kein -level gesetzt ist (-complete_list_adr). directory_adresse unterliegt der besonderen -bdir Ersetzung. -tree_hashsize zahl Option zur Abwaegung des Tempos der Filesuche in den Directories von old_tree gegenueber dem Speicherbedarf des old_tree. Jedes Directory in old_tree verbraucht zahl*sizeof(int) Bytes fuer den Hashvektor. Die Suche wird etwa um den Faktor zahl beschleunigt. Die Grundeinstellung 20 ist gut fuer normalgrosse Directories mit durchschnittlich 20 bis 1000 Files. Directories mit zigtausend Files koennen aber sehr bremsen und Baeume mit sehr vielen Directories koennen den Arbeitsspeicher zu sehr belasten. -vanish_list_adr altlisten_adresse resultat_adresse erzeugt eine Schwundliste durch Vergleich mit den Aufzeichnungen im File altlisten_adresse. Objekte, die nicht mehr im Filesystem vorkommen, werden im File resultat_adresse aufgelistet. Wenn eine -level Option vorhanden ist und resultat_adresse kein "/" enthaelt, dann wird der File im level_# Directory erzeugt (siehe conf_dir). Wenn resultat_adresse mit .gz endet, dann wird die Ausgabe durch das Programm gzip geleitet. Wenn eine Zieladresse angegeben ist, dann wird der Ergebnisfile zum letzten Stueck des Backups hinzugefuegt. (zB: /schwund.gz=schwund.gz) altlisten_adresse sollte ein File sein, der von -complete_list_adr erzeugt wurde. Wenn mit -load_old_tree ein Baum geladen wird, dann darf es auch eine Inhaltsliste sein. Der Baum ersetzt dann die Komplettliste. HINWEIS: altlisten_adresse von dieser Option ist identisch mit altlisten_adresse von -load_old_tree. Wenn beide Optionen angegeben sind, setzt sich die altlisten_adresse der letzten durch. WARNUNG: Ohne geladenen Baum oder bei -changetest_options "off" kann die Schwundliste alte Namen von umbenannten Files enthalten, obwohl deren neue Namen *nicht* im inkrementellen Backup enthalten sind. Am besten ist es, bei -changetest_options auch CRCs zu bestellen. -vanish_script_adr altlisten_adresse result_address WARNUNG: Das Ergebnisskript ist nicht ungefaehrlich ! Vor allem, wenn es ohne CRC-Test erzeugt wird. Wie -vanish_list_adr , aber mit einem Shellskript als Ergebnis, das Fileobjekte aus der Schwundliste loescht. Solch eine Loeschung ist noetig, wenn man ein hoeheres Level bei der Wiederherstellung des Backupgebiets ueber das vorherige Level kopiert. Leider ist dieses Skript zu hirnlos, um seine Opfer vorher genau zu pruefen. HINWEIS: das Skript enthaelt nur die Zieladressen. -verify_filelist listenfile oberdirectory HINWEIS: Zum Pruefen von Files auf CD oder waehrend des Wiederherstellens eignet sich -verify_targetlist besser. Das Programm endet sofort wenn listenfile ausgelesen ist. Aus listenfile ("-" = stdin) werden Fileadressen und ggf. auch Typ, Groesse und Pruefsumme gelesen. Diese Angaben werden mit dem Ist-Zustand der Fileadresse verglichen. Dabei wird oberdirectory jeder Adresse vorangestellt. Existiert die Adresse und passen die anderen Angaben, dann wird die Fileadresse einschliesslich oberdirectory auf stdout ausgegeben. Ansonsten geht eine Fehlermeldung an stderr. War der gesamte Programmlauf fehlerfrei, dann ist der Exitwert 0, sonst 1. -verify_sources listenfile Das Programm endet sofort wenn listenfile ausgelesen ist. Diese Option arbeitet fast wie -verify_filelist. Es werden aber Adressen der Form ziel=quelle erwartet und nur die Quelle wird ueberprueft. Ein Oberdirectory wird nicht vorangestellt. -verify_source_filter shell_filter Im Ausgabeformat -form_path_list_mkisofs koennen aus der Fileliste jeder CD unmittelbar vor der der Aufforderung, die CD einzulegen, solche Files entfernt werden, die der shell_filter nicht durchlaesst. Will man zB. alle Files weglassen, die seit der Planung von der Platte verschwunden sind, ist ein geeigneter Filter : ..../cd_backup_planer -verify_sources - Ein Leertext als shell_filter schaltet diese Pruefung ab. shell_filter unterliegt der besonderen -bdir Ersetzung. -verify_targetlist listenfile oberdirectory wie -verify_filelist. Jedoch werden die Zieladressen verwendet, was einen Unterschied macht, wenn beim Backup mit ziel=quelle Umleitungen bestellt wurden. -volume_info Uebergibt an das Backup-Kommando vor den Fileadressen zusaetzliche Argumente: -v Stuecknummer -t Stueckzahl -volume_offset zahl Addiert die Zahl auf alle Ausgaben von Backupstueck- Nummern und zieht sie von Eingaben ab. -working_directory directory_adresse stellt das aktuelle Directory auf die angegebene Adresse. Diese Option sollte (wenn ueberhaupt) nur einmal vor der ersten Fileadresse angegeben werden. -write_random ziel menge zufallssaat Das Programm endet sofort wenn diese Option erledigt ist. Sie schreibt in den File ziel ("-"=stdout) die bestellte menge von Pseudozufallszahlen oder aber ein periodisches Muster von bis zu 16 Bytes. Beginnt zufallssaat mit einem "=" dann ist der weitere Text das periodische Muster. Folgt auf "=" das Zeichen "~", dann wird das binaere Komplement des Textes als periodisches Muster verwendet. Ansonsten wird zufallssaat als Schluessel fuer einen auf MD5 und EXOR basierenden Zufallsgenerator benutzt. Beginnt dieser Schluessel mit "-" dann ist der Rest der Schluessel fuer ein langsames, EXOR-freies Verfahren. Die Zahlenfolge jeder zufallssaat ist reproduzierbar. Bei menge sind grosse Werte wie 100g oder 2t zulaessig, sofern das Betriebssystem damit umgehen kann. -write_to_file zielfile byteadresse bytezahl bytecode [... bytecode] -write_to_file zielfile byteadresse "string" textstueck -write_to_file zielfile byteadresse "file" quellfile Das Programm endet sofort wenn dieser Befehl abgearbeitet ist. Es oeffnet den existierenden File zielfile zum Schreiben und adressiert Byte byteadresse (Start = 0). Ist das dritte Argument eine Zahl zwischen 1 und 4096, dann ist das die Zahl der folgenden dezimalen Bytecodes. Erlaubt sind also Bytewerte zwischen 0 und 255. Bei "string" wird das vierte Argument in den zielfile uebertragen. Bei "file", ist das vierte Argument die Adresse eines existierenden Files, der dann ganz in zielfile kopiert wird. zielfile "-" bedeutet stdout und ist nur mit byteadresse 0 erlaubt. quellfile "-" ist stdin. -xdev alle Filesysteme auslassen, die unterhalb der Directories in der Backupliste gemountet sind. Gegenteil: -alldev . -yes Die folgenden Fileadressen werden in die Backupliste aufgenommen. Sie werden also noetigenfalls zerlegt und dem Backupkommando uebergeben. Diese Option beendet die Wirkung von "-no". Sie ist die Grundeinstellung. Wenn die Option -yes mindestens einmal vorkommt, dann werden die Fileadressen der Backupliste auf jeden Fall ins Ergebnis uebernommen, auch wenn eine gleichlautende in der Ausschlussliste vorkommt. ( -yes file -not file bringt file in den Backup file -not file laesst file aus) -younger_than zeitangabe Es wird versucht, moeglichst nur Files in den Backup aufzunehmem, deren Inhalt oder inode nach dem angegebenen Zeitpunkt geaendert wurde. Bewegungen im selben Filesystem bleiben leider unberuecksichtigt ! Die Zeitangaben koennen folgende Form haben : Absolute Zeitpunkte koennen durch das Eingabeformat des des UNIX-Befehls 'date' MMDDhhmm[[CC]YY][.ss]] festgelegt werden. Zum Beispiel : 020616122000 heisst '6. Februar 2000 16:12:00 Ortszeit' Ausserdem wird das Format YYMMDD[.hhmm[ss]] verstanden: 2.Jan 2000 = A00102 , 11.Mai 2001 23:45 = A10511.2345 1.Mrz 2010 = B00301 , 14.Jul 1998 = 980714 Relativangaben beginnen mit '-' oder '+'. Sie werden zum aktuellen Zeitpunkt addiert. '-' zeigt also in die Vergangenheit, '+' in die Zukunft. Die Grundeinheit ist die Sekunde. Sie ist durch einen Buchstaben am Ende der Zahl aenderbar: Sekunden 1s=1 , Stunden 1h=3600s , Tage 1d=24h , Wochen 1w=7d , Monate 1m=31d, Jahre y : Xy=X*365.25d+1d Bitte beachten: 'm' und 'y' sind oft etwas groesser als der genaue Kalenderzeitraum. Beispiel: -3w heisst 'vor 3 Wochen' = -1814400s . Beispiele: Den Inhalt des Arbeitsdirectory in Stuecke zu 625 MB und maximal 200 einzelne Adressen zerteilen. Das Infoskript ASKME im Arbeitsdirectory erzeugen und in jedes einzelne Stueck des Backup aufnehmen. bin/cd_backup_planer \ -max_items 200 -max_size 625m -info_script ASKME . >bskript chmod u+x bskript Um den Backup dann wirklich durchzufuehren : bskript Mit der folgenden Option wird das Infoskript an einer separaten Stelle erzeugt und in das Rootdirectory der CD abgebildet. -info_script /ASKME=/home/backup_planer_dir/ASKME Zerteile die Directories "buero" und "bilder" in Stuecke von Standardgroesse (600 MB / 400 Adressen). Nicht die Unterdirectories "buero/privat" und "bilder/freundinnen" aufnehmen. Anstelle von "bilder/freundinnen" eine zweite Kopie von "bilder/katzen" einfuegen. bin/cd_backup_planer \ buero bilder -target_separator '=' /bilder/freundinnen=bilder/katzen \ -not buero/privat bilder/freundinnen \ >bskript DC-6250 Baender mit komprimierten tar-Archiven fuellen. bin/cd_backup_planer \ -backup_cmd 'read dummy ; tar cvzf /dev/rmt0' \ -form_script_raw -max_size 245m -max_items 100 \ -info_script ASKME \ . \ >bskript Eine Konfiguration fuer inkrementelle Backups erzeugen und den ersten Backup -level 0 planen lassen. Durch -level -create_configuration wird ein neues Directory angelegt, das (wegen -conf_dir) $HOME/my_backup_conf heisst. bin/cd_backup_planer \ -conf_dir $HOME/my_backup_conf -level -create_configuration \ ... alle Argumente, die den vollen Backup definieren ... \ >bskript Diese Konfiguration kann man nutzen, indem man einfach das Directory und die gewuenschte Ebene angibt. Die anderen Parameter des Backups werden aus dem -conf_dir gelesen. (File specific_arguments : eine Zeile = ein Argument) Man sollte sich ein festes Schema fuer Backups auferlegen und durchhalten. Angenommen, wir haetten am Sonntag der 0. Woche den Backup konfiguriert und also auch den ersten -level 0 Backup gemacht : Ein Schema, das von Montag bis Samstag nur die Aenderungen des Tages aufzeichnet und am Sonntag einen vollen Backup vorsieht. Montag: -conf_dir $HOME/my_backup_conf -level -next ... Samstag: -conf_dir $HOME/my_backup_conf -level -next Sonntag: -conf_dir $HOME/my_backup_conf -level 0 Nun koennen die Datentraeger von Montag bis Samstag recycelt werden. Ein Schema, das etwa vierteljaehrlich volle Backups macht, sowie nach vier Wochen und nach jeder einzelnen Woche auffrischt. (-conf_dir wie oben) Dieses Schema macht Aenderungen an Files ueber laengere Zeit nachvollziehbar. 1. Woche : -level 1 2. Woche : -level 2 3. Woche : -level 2 4. Woche : -level 2 5. Woche : -level 1 6. Woche : -level 2 7. Woche : -level 2 8. Woche : -level 2 9. Woche : -level 1 10. Woche : -level 2 11. Woche : -level 2 12. Woche : -level 2 13. Woche : -level 0 Danach beginnt man wieder bei Woche 1. Der Backup von Woche 12 sichert auch die Wochen 11 und 10 ab. Der Backup von Woche 9 sichert Wochen 8 bis 1 ab. Die Levels 0 und 1 sollte man laenger aufheben. Um beide gezeigte Schemata zu kombinieren, sollte man im ersten Schema den Sonntagslauf durch den woechentlichen Lauf des zweiten Schemas ersetzen. Wenn Sie je einen inkrementellen Backup mit mehreren Levels wiederherstellen muessen, beginnen Sie mit Level 0. Nachdem das auf der Platte ist, muessen die Files geloescht werden, die in der Woche bis zum Level 1 verschwunden sind. Zu diesem Zweck finden Sie im letzten Backupstueck jedes Levels einen File namens /tmp/VANISHED.sh.gz . Er hat keine x-Rechte, um ueble Unfaelle zu vermeiden. Man kann ihm nur trauen, wenn er durch Vergleich mit einem aufgezeichneten Speicherbaum unter Verwendung von CRCs oder inode-Nummern erstellt wurde. Das ist zwar Grundeinstellung, aber die kann geaendert werden mit Optionen wie: -content_list_adr , -list_output_format , -load_old_tree , -changetest_options , -vanish_script_adr Besonders misstrauische Datenbesitzer verwenden bei -list_output_format die Option "md5" statt "crc". Man kann das Skript auf die Platte kopieren, es mit gunzip auspacken und ihm mit chmod u+x Ausfuehrungserlaubnis erteilen und es dann starten. Man kann es aber auch mit dieser Shellpipe direkt ausfuehren : gunzip