md5sum
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
md5sum
Hallo, mein herzallerliebstes Forum.
Ich möchte mir ein Script bauen, aber ich weiss nicht wie.
Ingredenzien: md5sum,grep,echo,sed und Terminal
Einleitung: Mein Script soll einen Ordner und die darin befindlichen Dateien checken. Die oben erwähnten Ingredenzien sollen hauptsächlich in Erscheinung treten, dadurch das die selbigen in einem Script über die Tastatur eingefügt werden. Das fertige Script soll einen x-beliebigen Dateinamen haben, und der endet mit .sh
Wenn ich mehrere Dateien in einem Ordner habe so komme ich damit nicht klar, denn ich weiss nicht wie man das macht. Eventuell mit sed?!
Und was auch noch wichtig die Ausgabe von md5sum soll in eine Textdatei gespeichert werden.
Wenn es möglich ist soll jede Datei eine md5sum haben, und der gesammte Ordner eine globale md5sum.
Sollte mir das helfen sollen die md5sum der einzelnen Dateien auszulesen sein aus der vorherigen Textdatei. Um den Datenabgleich erfoglreich zumachen.
Wer könnte mir hier, ein kleines Script, nicht mehr als 10 (zehn Zeilen Code posten)?
Bitte postet hier keine englishen Internetseiten
Ich möchte mir ein Script bauen, aber ich weiss nicht wie.
Ingredenzien: md5sum,grep,echo,sed und Terminal
Einleitung: Mein Script soll einen Ordner und die darin befindlichen Dateien checken. Die oben erwähnten Ingredenzien sollen hauptsächlich in Erscheinung treten, dadurch das die selbigen in einem Script über die Tastatur eingefügt werden. Das fertige Script soll einen x-beliebigen Dateinamen haben, und der endet mit .sh
Wenn ich mehrere Dateien in einem Ordner habe so komme ich damit nicht klar, denn ich weiss nicht wie man das macht. Eventuell mit sed?!
Und was auch noch wichtig die Ausgabe von md5sum soll in eine Textdatei gespeichert werden.
Wenn es möglich ist soll jede Datei eine md5sum haben, und der gesammte Ordner eine globale md5sum.
Sollte mir das helfen sollen die md5sum der einzelnen Dateien auszulesen sein aus der vorherigen Textdatei. Um den Datenabgleich erfoglreich zumachen.
Wer könnte mir hier, ein kleines Script, nicht mehr als 10 (zehn Zeilen Code posten)?
Bitte postet hier keine englishen Internetseiten
-
- Beiträge: 2049
- Registriert: 18.03.2012 21:13:42
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: md5sum
Hi,
es gibt bei den ubuntuusern bereits etwas fertiges [1] was du verwenden könntest. Das musst du dann einfach nur in ein Skript packen. Allerdings verwenden die nicht die von dir gewünschten tools.
[1] http://wiki.ubuntuusers.de/md5sum
es gibt bei den ubuntuusern bereits etwas fertiges [1] was du verwenden könntest. Das musst du dann einfach nur in ein Skript packen. Allerdings verwenden die nicht die von dir gewünschten tools.
[1] http://wiki.ubuntuusers.de/md5sum
Hilf mit unser Wiki zu verbessern!
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: md5sum
Ich habe die Seite von Ubuntuusers besucht, konnte aber meine Problemlösung nicht finden.
Re: md5sum
Mal als sehr schlechte Idee:
md5.sh
(Syntax siehe unten, awk um die Ausgabe sinnvoll zu gestalten: erst Dateiname, dann Semikolon, dann Prüfsumme)
Und dann einfach:
Vergleich mit "vimdiff":
Leider kenne ich keine besseren textuellen Vergleichsprogramme außer eigene Scripte. "diff" funktioniert nicht wirklich schön. Kannst dir noch als Grafiktool meld anschauen.
Eigentlich gibt es aber fertige Programme. Für Debian-Pakete z.B. debsums.
md5.sh
Code: Alles auswählen
#!/bin/sh
find $1 -type f |xargs -i md5sum {} |awk '{print $2 ";" $1}' > $2
Und dann einfach:
Code: Alles auswählen
md5.sh /pfad/nach/irgendwo erstesicherung.txt
md5.sh /pfad/nach/irgendwo zweitesicherung.txt
Code: Alles auswählen
vimdiff erstesicherung.txt zweitesicherung.txt
Eigentlich gibt es aber fertige Programme. Für Debian-Pakete z.B. debsums.
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: md5sum
Leider funktioniert das Script nicht.
Code: Alles auswählen
andy@andy-desktop:~$ sudo '/home/andy/Arbeitsfläche/Text.sh' '/home/andy/Arbeitsfläche/Unbenannter Ordner' test.txt
[sudo] password for andy:
sudo: /home/andy/Arbeitsfläche/Text.sh: Befehl nicht gefunden
andy@andy-desktop:~$ sudo find $1 -type f |xargs -i md5sum {} |awk '{print $2 ";" $1}' > $2 '/home/andy/Arbeitsfläche/Unbenannter Ordner' test.txt
bash: $2: Mehrdeutige Umlenkung.
xargs: Prozess md5sum wurde durch das Signal 13 abgebrochen.
andy@andy-desktop:~
Re: md5sum
Sieht ja grausam aus.Was willst du mit "sudo"? Was sollen die Hochkomma? Umlaute in Pfaden sind immer gefährlich. Ändere das. Speichere evtl. das Script außerhalb von "Arbeitsfläche".
Versuche es so erst mal ohne Script. Dann sind $1 und $2 außerhalb von awk zu ersetzen:
Ändere in "irgendwo" ein paar Dateien, um Unterschiede festzustellen:
Alternative Kurzversion. Problem ist jedoch, dass erst die Prüfsummen kommen, welches evtl. den Vergleich erschwert, awk fehlt dann:
Danach jeweils den "vimdiff", "diff" oder "meld".
Versuche es so erst mal ohne Script. Dann sind $1 und $2 außerhalb von awk zu ersetzen:
Code: Alles auswählen
find /pfad/nach/irgendwo -type f |xargs -i md5sum {} |awk '{print $2 ";" $1}' > erstesicherung.txt
Code: Alles auswählen
find /pfad/nach/irgendwo -type f |xargs -i md5sum {} |awk '{print $2 ";" $1}' > zweitesicherung.txt
Alternative Kurzversion. Problem ist jedoch, dass erst die Prüfsummen kommen, welches evtl. den Vergleich erschwert, awk fehlt dann:
Code: Alles auswählen
find /pfad/nach/irgendwo -type f |xargs -i md5sum {} > erstesicherung.txt
Code: Alles auswählen
find /pfad/nach/irgendwo -type f |xargs -i md5sum {} > zweitesicherung.txt
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: md5sum
Jetzt brauche ich nur noch eine kleine Änderung.
In der Datei erstesicherung.txt
Jede reale Datei sollte mit ihrem Namen zu lesen sein
In der Datei erstesicherung.txt
Code: Alles auswählen
/home/internet/Arbeitsfläche/Unbenannter;d41d8cd98f00b204e9800998ecf8427e
/home/internet/Arbeitsfläche/Unbenannter;d41d8cd98f00b204e9800998ecf8427e
/home/internet/Arbeitsfläche/Unbenannter;d41d8cd98f00b204e9800998ecf8427e
/home/internet/Arbeitsfläche/Unbenannter;d41d8cd98f00b204e9800998ecf8427e
/home/internet/Arbeitsfläche/Unbenannter;d41d8cd98f00b204e9800998ecf8427e
Code: Alles auswählen
/home/internet/Arbeitsfläche/Unbenannter Ordner/Unbenanntes Dokument;d41d8cd98f00b204e9800998ecf8427e
Re: md5sum
Der Wert "d41d8cd98f00b204e9800998ecf8427e" steht für den leeren String. Leg doch mal ein paar echte Testdateien in einem Testordner an und poste deren Werte.
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: md5sum
Also .
Ich habe den Inhalt des Ordner 'Unbekannter Ordner' gelöscht dann habe ich drei Datei mit Inhalt im Ordner 'Unbekannter Ordner', aber 6* md5sum
/home/internet/Arbeitsfläche/Unbenannter;d41d8cd98f00b204e9800998ecf8427e
/home/internet/Arbeitsfläche/Unbenannter;d41d8cd98f00b204e9800998ecf8427e
/home/internet/Arbeitsfläche/Unbenannter;891a433aed2ba4fc303a83b9d42c8935
/home/internet/Arbeitsfläche/Unbenannter;fe37a0b27732fc50c2b0b6972d19bbbe
/home/internet/Arbeitsfläche/Unbenannter;02feebca49271f25f0e5ff20ced48a8b
/home/internet/Arbeitsfläche/Unbenannter;d41d8cd98f00b204e9800998ecf8427e
Ich habe den Inhalt des Ordner 'Unbekannter Ordner' gelöscht dann habe ich drei Datei mit Inhalt im Ordner 'Unbekannter Ordner', aber 6* md5sum
Code: Alles auswählen
find '/home/internet/Arbeitsfläche/Unbenannter Ordner' -type f |xargs -i md5sum {} |awk '{print $2 ";" $1}' > erstsicherung.txt
/home/internet/Arbeitsfläche/Unbenannter;d41d8cd98f00b204e9800998ecf8427e
/home/internet/Arbeitsfläche/Unbenannter;891a433aed2ba4fc303a83b9d42c8935
/home/internet/Arbeitsfläche/Unbenannter;fe37a0b27732fc50c2b0b6972d19bbbe
/home/internet/Arbeitsfläche/Unbenannter;02feebca49271f25f0e5ff20ced48a8b
/home/internet/Arbeitsfläche/Unbenannter;d41d8cd98f00b204e9800998ecf8427e
Re: md5sum
Der Fehler liegt in den Leerzeichen. Mit "awk" werden die Parameter umgedreht, leider auch mit Leerzeichen als Trennzeichen.
Versuche es so:
Versuche es so:
Code: Alles auswählen
find /pfad/nach/irgendwo -type f |xargs -i md5sum {} |awk '{print substr($0,35,length-34) ";" $1}' > erstsicherung.txt
Re: md5sum
Was soll die Umdreherei bringen ausser Ärger? Die Prüfsumme hat keine Leerzeichen und ist damit ein sicher zu filterndes erstes Wort, der Rest der Zeile ist Dateiname (falls die Dateinamen nicht auch noch Newlines enthalten - dann helfen eh nur noch Nullbytes).
Code: Alles auswählen
find /pfad/ -type f -exec md5sum {} \; > erstsicherung.txt
- r900
- Beiträge: 1053
- Registriert: 09.10.2011 20:06:11
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Stockholm
Re: md5sum
Das ist doch fast das Besipiel von ubuntuusers. Hast du deine quotes verlegt? Und warum das seltsame Ausgabeformat? Die Ausgabe von md5sum ist doch okay.uname hat geschrieben:(Syntax siehe unten, awk um die Ausgabe sinnvoll zu gestalten: erst Dateiname, dann Semikolon, dann Prüfsumme)Code: Alles auswählen
find $1 -type f |xargs -i md5sum {} |awk '{print $2 ";" $1}' > $2
Code: Alles auswählen
find "$1" -type f -print0 | xargs -0 md5sum > "$2"
Re: md5sum
Vielleicht ist es wirklich unnötig die Prüfsumme und den Dateinamen zu vertauschen. Ich dachte nur, dass es für den Vergleich evtl. besser wäre. Den find-Befehl hatte ich mir ohne Ubuntuusers so ausgedacht. Da ich noch aus 8.3-Zeiten von MS-DOS komme vermeide ich Sonderzeichen und Leerzeichen wo es nur geht.
Re: md5sum
Ich mag ja irren, aber will der TE einfach ein rekursives md5sum? Das tut das oben schon aehnlich erwaehnteproblemlos. Die Liste kann man am Ziel mitueberpruefen.
Das mit der "Ordner-globalen" md5sum versteh' ich allerdings wirklich nicht. Wenn man Pruefsummen aller Teiler hat, dann braucht man keine Pruefsumme ueber alles zu berechnen. Dennoch, mitginge das. -print0, -z und -0 sorgen dafuer, dass Newlines in Dateinamen unverfaelscht verwendet werden; das sort braucht man, da find die Dateien in einer nicht vorhersagbaren Reihenfolge ausgibt [1].
Gruss Cae
[1] etwas inkorrekt, die Reihenfolge wird festgelegt in den Inodes. Solange man diese nicht veraendert (z.B. durch Umkopieren), ist die Reihenfolge immer dieselbe. Allgemein sollte man sich nicht darauf verlassen, und gerade bei dem beschriebenen Szenario wird ja explizit von zwei unabhaengigen Verzeichnisbaeumen ausgegangen.
Code: Alles auswählen
$ find path/ -type f -exec md5sum '{}' \; >list
Code: Alles auswählen
$ md5sum --check --quiet list
Das mit der "Ordner-globalen" md5sum versteh' ich allerdings wirklich nicht. Wenn man Pruefsummen aller Teiler hat, dann braucht man keine Pruefsumme ueber alles zu berechnen. Dennoch, mit
Code: Alles auswählen
$ find path/ -type f -print0 | sort -z | xargs -0 cat | md5sum >list-global
Gruss Cae
[1] etwas inkorrekt, die Reihenfolge wird festgelegt in den Inodes. Solange man diese nicht veraendert (z.B. durch Umkopieren), ist die Reihenfolge immer dieselbe. Allgemein sollte man sich nicht darauf verlassen, und gerade bei dem beschriebenen Szenario wird ja explizit von zwei unabhaengigen Verzeichnisbaeumen ausgegangen.
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
- r900
- Beiträge: 1053
- Registriert: 09.10.2011 20:06:11
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Stockholm
Re: md5sum
Wollte dich nicht des Plagiats bezichtigen. Egal wie man es selbst mit Dateinamen handhabt, Anführungszeichen gehören da schon hin.uname hat geschrieben:Den find-Befehl hatte ich mir ohne Ubuntuusers so ausgedacht.
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: md5sum
internet@andy-desktop:~$ md5sum --check --quit '/home/internet/list'
md5sum: Unbekannte Option »--quit«
„md5sum --help“ gibt weitere Informationen.
Leider war auch ein kleiner Irrtum bei mir.
Ich hatte die versteckten Dateien, und damit auch die Sicherungsdateien die gedit mit z.B Unbenanntes Dokument 3~,betitelt,übersehen.
Danke an alle, die hier gepostet haben
r900
Cae
Phineas
uname
Ich denke dieses Thema ist gelöst.
md5sum: Unbekannte Option »--quit«
„md5sum --help“ gibt weitere Informationen.
Leider war auch ein kleiner Irrtum bei mir.
Ich hatte die versteckten Dateien, und damit auch die Sicherungsdateien die gedit mit z.B Unbenanntes Dokument 3~,betitelt,übersehen.
Danke an alle, die hier gepostet haben
r900
Cae
Phineas
uname
Ich denke dieses Thema ist gelöst.
-
- Beiträge: 2049
- Registriert: 18.03.2012 21:13:42
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: md5sum
Hi,
Da fehlt noch ein kleines e beim quit so das es ein quiet wird.DEBIANUNDANDREAS hat geschrieben:internet@andy-desktop:~$ md5sum --check --quit '/home/internet/list'
md5sum: Unbekannte Option »--quit«
„md5sum --help“ gibt weitere Informationen.
Hilf mit unser Wiki zu verbessern!