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.
Siehe auch:
ACHTUNG: Dieses Programm, bzw. dieser Test unterliegt der GPL!