MD5 Prüfsummen ermitteln / dioppelte Dateien

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von ux2, 05.01.2007.

  1. ux2

    ux2 Grendel Kleinbell

    Dabei seit:
    27.07.2006
    Beiträge:
    56
    Zustimmungen:
    0
    Hallo,

    ich habe meherere Fileserver bzw. meherere Platten mit teils redundanten Daten.

    jetzt geht es darum moeglichst effektiv doppelt vorhandene Dateien zu identifizieren und diese "nachzuverarbeiten" (loeschen, oder sonstwie bearbeiten)

    Die Idee ist Per Script via MD5 die Prüfsummen zu erfassen und diese in einer Mysql-Datenbank zu vergleichen.

    Eine weitere Möglichkeit sehe ich in der Feststellung auf geänderte Dateien. z.B. bei einem Webserver.

    Hat sowas schonmal jmd gebaut ?

    Gruss Michael
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Mal kramen. Ich hab mal etwas geschrieben, dass bei doppelten Dateien eine behält, die anderen löscht und durch Links ersetzt.

    Code:
    #!/usr/bin/perl
    
    use File::Find;
    use strict;
    
    open (OUTFILE, ">search_double.out");
    $ARGV[0] && chdir($ARGV[0]) || die ("\nBitte korrektes Suchverzeichnis angeben:\n\n\t\t\t$0 <Suchverzeichnis>\n\n");
    my %files;
    my $savings = 0;
    my %find_options = (wanted => \&compare_checksumme, no_chdir => 1);
    find (\%find_options, '.');
    $savings /= 1048576;
    print "\n\n Ersparnis: $savings MB\n\n";
    print OUTFILE "\n\n Ersparnis: $savings MB\n\n";
    close OUTFILE;
    
    #####################################################################
    sub compare_checksumme {
       if((-f $_) && (-s $_) && !(-l $_)) {
          open (MD5SUM, "md5sum \'$_\' |");
          my ($md5sum) = split (/\s+/, <MD5SUM>, 0);
          close MD5SUM;
          if($files{$md5sum}) {
    #           print "$files{$md5sum} <--- $_";
             print OUTFILE "$files{$md5sum} <--- $_";
             my $file_backup = $_ . ".bak";
             rename ($_, $file_backup);
             if(link ($files{$md5sum}, $_)) {
                unlink ($file_backup);
    #               print ("\t\[success\]\n\n");
                print OUTFILE ("\t\[success\]\n\n");
                $savings += -s $_;
             } else {
                rename ($file_backup, $_);
    #               print ("\[failure\]\n\n");
                print OUTFILE ("\[failure\]\n\n");
             }
          } else {
             $files{$md5sum} = $_;
          }
       }
    }
    
    Gruss, Xanti
     
Thema:

MD5 Prüfsummen ermitteln / dioppelte Dateien

Die Seite wird geladen...

MD5 Prüfsummen ermitteln / dioppelte Dateien - Ähnliche Themen

  1. FUSE -> Dateisystem Typ ermitteln

    FUSE -> Dateisystem Typ ermitteln: Hallo, Ist es irgendwie möglich den Dateisystem Typ von einem mit FUSE gemounteten Dateisystem auszugeben? df -hT liefert leider nur diese...
  2. Gesamtgröße bestimmter Dateien ermitteln

    Gesamtgröße bestimmter Dateien ermitteln: Hallo, ich möchte die Gesamtgröße von bestimmten Dateien in einem Ordner ermitteln, also nicht "du -h" für den ges. Ordnerinhalt sondern eben nur...
  3. Brenner device ermitteln

    Brenner device ermitteln: Hallo Mit welchen Programmen, bzw. aus welchen logs kann man eigentlich für ein Programm sicher das device des Brenners ermitteln, wenn ev....
  4. Prozess ermitteln, der DNS-Anfragen stellt

    Prozess ermitteln, der DNS-Anfragen stellt: Hallo, ich habe die /etc/resolv.conf eines Rechners geändert, so dass jetzt andere DNS-Server resolven. Doch der betreffende Rechner stellt...
  5. Anzahl Dateein in xbeliebigen Verzeichnissen ermitteln

    Anzahl Dateein in xbeliebigen Verzeichnissen ermitteln: Hallo ixh habs mal in diese Rubrik gesetzt, da ich nciht weiß, ob das nur per script geht, oder nicht. Wie kann ich die Anzahl der Dateien...