Linux md5 - zwei Verzeichnisse vergleichen

Linux Betriebssystem

Ambrosius

Well-known member
Registriert
23 Juni 2022
Beiträge
981
Wenn ich mit dem Befehl
Code:
 tar -cf - verzeichnisXY | md5sum
den Hash zweier Ordner auslese, die an sich identisch sind, aber auf zwei verschiedenen Datenträgern liegen, kommen zwei unterschiedliche Werte dabei heraus...

Wieso? Müsste nicht unabhängig vom Speicherort der gleiche Hash für md5 herauskommen?
 
wie hast du die ordner kopiert/syncronisiert? ich weiß es nicht wirklich, aber ich könnte mir vorstellen, dass es mit dateiberechtigungen zusammenhängt

versteckte dateien wären der nächste gedanke
 
Ja in der Tat, hab es gerade mal mit nem anderen xbeliebigen Ordner ausprobiert, je einen Ordner auf nen anderen Datenträger und siehe da der Hash ändert sich. Wenn sich beide Ordner (mit demselben Inhalt natürlich) allerdings auf demselben Datenträger befinden, ändert sich der Hash nicht! Interessant, ich bin nicht mit den Finessen von tar gut genug vertraut um zu verstehen wieso, aber dann erübrigt sich diese Methode dann wohl auch.

wie hast du die ordner kopiert/syncronisiert? ich weiß es nicht wirklich, aber ich könnte mir vorstellen, dass es mit dateiberechtigungen zusammenhängt

versteckte dateien wären der nächste gedanke
beides könnte durchaus möglich sein, ich hab da nicht mehr drauf geachtet und die Platte befindet sich jetzt eh nicht mehr in Reichweite, insofern kann ich das nicht mehr nachschauen. Ich kann das Prozedere aber natürlich simulieren..keine Ahnung ob der tar Befehl überhaupt die beste Methode für das Szenario ist. Kopiert habe ich einfach per Drag&Drop, ich weiss, nicht elegant, geht auch mit cp aber manchmal ist man schon im Ordner und man machts dann einfach so

Habt ihr eine andere Idee wie man die Hashes zweier Ordner auf verschiedenen Datenträgern gegeneinander vergleicht? Es soll ne quick an dirty methode bestenfalls sein, die sich einfach im Anschluss eines Kopiervorgangs schnell anwenden lässt um Kopierfehler auszuschließen..
 
Du machst sha256sum für alle Dateien und dann vergeichst du entweder die liste der hashes oder machst einen hash über die grordnete liste:

find . -type f -exec sha256sum \{\} \; | sort -k 2 > liste.txt

find . -type f -exec sha256sum \{\} \; | sort -k 2 | sha256sum

Aber wenns um Kopierfehler geht rsync macht das von selber:

rsync -av woher wohin
 
wenns nur um die überprüfung geht, ob der kopiervorgang erfolgreich war, ist hash werte vergleichen vielleicht etwas overkill

der command gibt ja einen rückgabewert, das reicht imo vollkommen aus. ich benutze in meinem backup script einfach if rsync -a, das sieht dann in etwa so aus:

while read -r entry
do
echo "$entry"
if rsync -a $entry $target > /dev/null 2> "error_log.txt"
then
echo -n "-- synced"
else
echo -n "-- sync failed"
((error_count++))
fi
done <<< "$list"
 
Aber nur, weil rsync den Vergleich der Dateien schon erledigt - was cp nicht macht :)
 
Habt ihr eine andere Idee wie man die Hashes zweier Ordner auf verschiedenen Datenträgern gegeneinander vergleicht? Es soll ne quick an dirty methode bestenfalls sein, die sich einfach im Anschluss eines Kopiervorgangs schnell anwenden lässt um Kopierfehler auszuschließen..
das einfachste wäre wenn dein kopier tool das schon intergriert hätte.
ansonsten gibts das tool diff. Mit dem parameter -r kann man es auch auf verzeichnisse anwenden.
 
ansonsten gibts das tool diff
Jap hab ich auch jetzt erfolgreich angewendet . Klappt wunderbar. Hab auch dieses Gnome Tool entdeckt, ich bin mir nicht sicher, glaub aber dass es evtl nur Frontend ist für diff..? Nennt sich Meld und tut das gleiche nur über ne GUI...
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben