Pages by Andreas Hofmeier
An-H
eMail Impressum/Note
http[s]://www.abmh.de/md5mgr.html

Like to be free? ... then: Fight for Freedom

[ MD5 Checksum Manager v0.12 (c) Copyright 2003-2006 Andreas Hofmeier ]

    md5mgr -- MD5 Checksum Manager

    Dieses Programm vereinfacht das Verwalten von MD5 Prüfsummen in
    Verzeichnisbäumen.

    Copyright (c) Andreas Hofmeier

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of
    the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


History
  v0.10: Caching hinzugefügt
  v0.12: 20.05.2008 Fixed BUG: The program crashes when filename is longer than 60 bytes. In testfstats().


Diese  Programm   soll  helfen  die Dateiintegrität (Unverfälschtheit,
Heilheit)  zu überprüfen.  Es   erzeugt   dazu von jeder Datei    eine
md5-Prüfsumme und speichert  diese in .md5sums (bzw  .md5mgr.fstats --
local DBs für jedes Verzeichnis). Keine der Datenbanken ist sortiert!

Vorab: Sie können ohne bedenken mit diesem  Programm rumspielen, da es
die    Dateien   nicht  verändert.  Im  schlimmsten    Fall werden die
Datenbanken mit den Prüfsummen geschredder.

Übersicht:

find <dir> -type d ... | md5mgr [relax] [simple] [trustnew] <mode> <project>
  <dir>             : Path to the observe area
  ...               : extra find-options to exclude directorys
  <project>:path    : Path of the Projectfiles (Main Databases)
            local   : Don't use Main Databases. Only local DBs
  <mode>: full      : testing all files with md5sum and change MD5DBs
          test      : full test without changing MD5DBs
          simple add: test only new files, touched files and removed files
          add       : finds also files via: size, timestamp, uid, gid and mode
  trustnew          : use DBs in new dirs. Normall new DBs will be removed.
                    : This option can used to recreate a main DB.
  relax             : Use this after copy trust dirs. It will ignore:
                        change time (not modification time), gid, uid, mode


find <dir> -type d ... | 

Die Namen der  zu untersuchenden  Verzeichnisse liest dieses  Programm
von stdin (Sandarteingabe).   (Untersucht werden natürlich die Dateien
in   jedem   Verzeichnis.)  Die   Liste  wird üblicherweise  mit  find
<Hauptverzeichnis> -type d ...  erzeugt und durchgepiped.  Statt "..." 
können weitere   find-Optionen eingefügt werde  und die  Verzeichnisse
weiter  einzuschränken.   Soll ein   einzelnes   Verzeichnis überprüft
werden: echo <Verzeichnisname> | md5mgr ... .


<project>

Um Manipulationen  an den einzelnen .md5sum-Files (und .md5mgr.fstats)
zu erkennen  werden  Prüfsummen von   diesen  in einer  Hauptdatenbank
<project>.2md5sums        (bzw       <project>.2md5mgr.fstats)
abgelegt. Als eine Art  locate-Datenbank und zur wiederherstellung von
kaputten  .md5sums-Files werden  zusätzlich   alle md5summen in  einer
Hauptdatenbank <project>.md5sums abgelegt.

Das Projekt   ist immer   absolut!  Im  Projekt werden   nur  absolute
Dateinamen  verwendet.  Die Hauptdatenbanken  werden durch verschieben
der zu Überwachenden  Verzeichnisse unbrauchbar. Siehe [trustnew] oder
wie man neue Hauptdatenbanken anlegt.

Sie können  allerdings   auch ohne   Hauptdatenbanken arbeiten:  Siehe
[local]


Ausgaben in Logfile

Ausführliche Logfiles (jeweils mit alter und neuer Prüfsumme und
weiteren Angaben):

<project>.log.md5sums       : geänderte .md5sums-Files
<project>.log.files         : geänderte files

Listen:

<project>.log.files_changed : Liste aller geänderten Dateien
<project>.log.files_new     : Liste aller neu hinzugekommenden Dateien
<project>.log.files_removed : Liste aller verschwundenen Dateien
<project>.log.files_accerr  : Liste aller Dateien, auf die ein
                              Lesezugriff nich möglich war




<mode>

Im full-Modus werden von allen Dateien MD5Summen erzeugt und diese mit
den abgespeicherten verglichen. Das Ergebnis  wird auf dem  Bildschirm
und in das LOG geschrieben. Alle geänderten Files bzw deren Prüfsummen
werden in den .md5sum-Files sowie den Hauptdatenbanken gespeichert.

test-Modus, wie bei    full   nur mit dem  Unterschied,     dass keine
Änderungen  an irgendwelchen DBs vorgenommen    werden. Außer an   den
LOG-Files natürlich.

Da   es viel Rechenzeit kostet   immer  alle Prüfsummen zu generieren,
bietet der add-Modus einen goldenen Mittelweg:

Es wird versucht  geänderte  Dateien zu  erkennen um  nicht immer alle
Prüfsummen  generieren   zu müssen.  Dies ist  sehr   hilfreich um die
Prüfsummen Up-To-Daten zu  halten.  Um das erkennen  zu differenzieren
gibt es folgende Möglichkeiten:

[simple]

es  werden nur   Dateien  bearbeitet, welche neu  hinzugekommen  sind,
entfernt wurden  oder deren  modification-time  neuer ist  als das des
.md5sum-Files.

without [simple]

Es  wird   eine   locale .md5mgr.fstats-Datei  angelegt,   in  welcher
zusätzliche Informationen über die Dateien abgelegt werden:

Dateigröße,
*UID (User Identifikationsnummer),
*GID (Gruppen Identifikationsnummer),
*Mode (Zugriffsrechte -- chmod),
*Anzahl der Hardlinks,
Timestamps:

*time   of  last modification:    Zeit   der letzten   Veränderung des
Dateiinhaltes

*time   of   last   change: Zeit     der    letzten Veränderung    des
Filesystemeintrags. Wann   wurde  die Datei auf die    Platte kopiert,
verschoben, umbenannt,  ...  (eine Änderung dieses Eintrags  kann auch
durch cp -p oder rsync nicht verhindert werden)

[relax]

Alle oben mit * gekennzeichneten Werte werden ignoriert. Eine Änderung
eines dieser  Werte erscheint im LOG-File führt  aber nicht dazu, dass
von  der  Datei eine Prüfsumme  errechnet  wird.   Dies ist essentiell
lebensnotwendig,  wenn man Dateien kopiert  und  nicht alle Prüfsummen
neu errechnen möchte. Siehe auch: [trustnew].


[trustnew]

Werden  Verzeichnisse,  welche bereits    Prüfsummen enthalten in  ein
Projekt kopiert werden diese Prüfsummen normalerweise gelöscht und neu
berechnet. Um diesen Prüfsummen zu vertrauen, diese Option hinzufügen.

Diese Option kann  auch  verwendet werden, um  verlohrengegangene oder
durch   Verschiebung      unbrauchbar    gewordenen   Hauptdatenbanken
(<project>.*) neu zu erzeugen.  Einfach neuen Projektnamen angeben  --
es sollten unter diesem Projekt KEINE Dateien mehr vorhanden sein.


[local]

Um Verzeichnisse ohne   Hauptdatenbank zu überprüfen ist  diese Option
konzipiert. Sie  ist  nur für dem test-Mode   gedacht, kann aber  auch
verwendet   werden,   wenn  Sie   keine    Hauptdatenbanken  verwenden
möchten. Sollten Sie mit dieser Option die  localen DB geändert haben,
empfiehlt  es sich die  Hauptdatenbanken zu löschen und mit [trustnew]
neu zu erzeugen.


Ausgaben auf dem Bildschirm:

**
examing: <Verzeichnis>
AAAAAAAAAAAAAAA....
BBBBBBBBBBBBBBB....
CCCCCCCCCCCCCCC....
**

Untersuchung von Verzeichnis:

A: Alle Dateien in Verzeichnis mit .md5sum-db vergleichen
B: Überprüfen, ob alle Dateien in der DB im Verzeichnis sind
C: Alle neuen Dateien suchen (nur bei simple nötig)

Mögliche Ausgaben:
 -: Datei Ignoriert
 .: Prüfsumme der Datei errechnet, alles OK
 r: Datei wurde gelöscht
 c: Datei wurde geändert
 n: neue Datei
 X: Fehler bei Zugriff auf die Datei -- Permission denied



Dateiliste


In allen Verzeichnissen (locale Datenbanken)


.md5sums: MD5Summe und dazugehöriger Dateiname -- md5sum -c -
kompatibel

.md5mgr.fstats: Zusätzliche Statusinformationen über die
Dateien. Siehe "without [simple]".


Hauptdatenbanken


<project>.md5sums: Alle MD5Summe aller Dateien im überwachtem Bereich
 -- md5sum -c - kompatibel

<project>.2md5sum: Prüfsummen der localen Prüfsummendateien (.md5sums)
-- md5sum -c - kompatibel

<project>.2md5mgr.fstats: Prüfsummen der localen .2md5mgr.fstats --
md5sum -c - kompatibel

<project>.log.files: Alles, was sich an den zu überwachenden Files,
bzw deren Prüfsummen, geändert hat

<project>.log.md5sums: Alles, was Änderungen der .md5sums und
.2md5mgr.fstats betrifft. 



Beispiele

Daten auf CD-Roms. Einmal md5summen erzeugen (vor dem brennen):

cd <cdrom/>
find . -type d | md5mgr simple full local
vi local.log.*; rm local.log.*

Falls in   Sie Bereiche   aus einem   mit  md5mgr überwachten  Bereich
brennen,  brauchen Sie  garnichts  zu  tun. Sie  können  die  CD immer
testen,   die   Prüfsummen sind  bereits local    vorhanden (für jedes
Verzeichnis)

CD-Rom testen:

cd /tmp
find <cdrom/> -type d | md5mgr simple test local
vi local.log.*; rm local.log.*


Einen Bereich überwachen:

MD5Summ-Files Erzeugt, updaten

find <breich/> -type d ... | md5mgr add <project>

Sie haben vorher  Verzeichnisse aus einem anderem überwachten  Bereich
in   diesen  hineinkopiert   und  wollen  nicht    alle Prüfsummen neu
berechnen:

find <breich/> -type d ... | md5mgr add trustnew <project>

(Sie können auch nur den neuen Bereich durcharbeiten lassen)

Sie möchten einen Test durchführen:

(ohne die Datenbanken  zu ändern,  um den  selben Test  später nochmal
durchzuführen: Headcrash: heile, defekte Dateien suchen)

find <breich/> -type d ... | md5mgr test <project>

(mit anpassen der  Datenbanken, sicherstellen, das auch  wirklich alle
MD5summen uptodate sind.)


Ups, Hauptdatenbank gelöscht:

find <breich/> -type d ... | md5mgr trustnew add <project>

Zu überwachender     Bereich   kopiert/verschoben.   (Hauptdatenbanken
unbrauchbar, sofort löschen):

rm <project>*
find <breich/> -type d ... | md5mgr relax trustnew add <project>


Performance

Die Algorithmen zum Zugriff auf die Datenbanken sind sehr primitiv und
daher um so langsamer, je größer  die Datenbank wird. Ist insbesondere
ein Problem beim Anpassen der Hauptdatenbanken.

Sie können einiges     an  Performance gewinnen,  wenn    Sie   die zu
überwachenden Bereiche aufteilen.   Dieses  Programm ist bei   wenigen
großen  Dateien  schneller als  bei vielen   kleinen.   Sie können die
Bereiche auch später Teilen und mit trustnew neue Haupt-DBs anlegen.

Download now (md5mgr.zip)

Siehe auch:

ACHTUNG: Dieses Programm, bzw. dieser Test unterliegt der GPL!


Pages by Andreas Hofmeier
An-H
eMail Impressum/Note
http[s]://www.abmh.de/md5mgr.html
Creative Commons License
(c) Andreas B. M. Hofmeier
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License