Nach dem Gebrauch von PhotoRec

From CGSecurity
Jump to navigation Jump to search

En.png English De.png Deutsch Es.png Español Fr.png Français It.png Italiano Ro.png Română


Es kann schwer sein, die unter PhotoRec wiederhergestellten Dateien zu sortieren . Du kannst hier einige Ideen finden, die dir in diesem Prozess helfen können.

Dateien nach Erweiterung sortieren

Mit diesem Python Skript kann man die Dateien nach der Dateierweiterung sortieren:

import os
import os.path
import shutil

while True:
    source = raw_input('Enter the source directory\n')
    if os.path.exists(source): break
    else: print 'The directory you have entered does not exist'
while True:
    destination = raw_input('Enter the destination directory\n')
    if os.path.exists(destination): break
    else: print 'The directory you have entered does not exist'

for root, dirs, files in os.walk(source, topdown=False):
    for files2 in files:
        extension = os.path.splitext(os.path.join(root,files2))[1][1:]
        if os.path.exists(os.path.join(destination,extension)):
            shutil.copy(os.path.join(root,files2), os.path.join(destination,extension))
        else:
            os.mkdir(os.path.join(destination,extension))
            shutil.copy(os.path.join(root,files2), os.path.join(destination,extension))

Jpeg

  • Canon PowerShot-Modelle speichern die Reihenfolge der Bildnummern in den Exif-Daten. Mit einem Programm das einen Speicherauszug der Exif-Daten in text wie jhead ausgeben kann, und dem folgenden Perl-Script, kannst du im Grunde genommen alle JPG-Dateien zu ihren original Dateinamen wiederherstellen.--Vees 01:59, 8 January 2007 (CET) - Du musst evtl. zuerst jhead installieren, z.B..: sudo apt install jhead --UlfZibis 16:00, 17 January 2018 (CET)
#!/usr/bin/perl -w
# read optional working directory from the command line:
$dir = (@ARGV > 0) ? $ARGV[0] : '.';
$dir =~ s/\/*$//;    # truncate trailing '/'s
foreach $file (glob "$dir/*") {
    chomp $file;
    open(EXIF, '-|', 'jhead', '-v', $file) or die "Not found jhead $!";
    if (defined(<EXIF>)) {
        foreach $line (<EXIF>) {
            if ($line =~ /Canon maker tag 0008 Value = [1-9]\d\d(\d{1,8})$/) {
                rename($file, "$dir/IMG_$1.JPG");
                print "$dir/IMG_$1.JPG from $file\n";
                last;
            }
        }
        close EXIF or die "EXIF: $! $?";
    }
}

Stelle zusätzlich den originalen Ordnerbaum wieder her: --UlfZibis 16:10, 17 January 2018 (CET)

#!/usr/bin/perl -w
# read optional working directory from the command line:
$dir = (@ARGV > 0) ? $ARGV[0] : '.';
$dir =~ s/\/*$//;    # truncate trailing '/'s

foreach $file (glob "$dir/*") {
    chomp $file;
    open(EXIF, '-|', 'jhead', '-v', $file) or die "Not found jhead $!";
    if (defined(<EXIF>)) {
        $folder_no = '000';
        $picture_no = '0000';
        $date = '0000';
        foreach $line (<EXIF>) {
            if ($line =~ /Canon maker tag 0008 Value = ([1-9]\d\d)(\d{1,8})$/) {
                $folder_no = $1;
                $picture_no = $2;
            }
            if ($line =~ /Time\s*:\s*\d{4}:(\d\d):(\d\d)\s[\d:]{8}$/) {
#                $date = "$1$2";
                $date = "$2$1";    # if camera language setting = german
                last;
            }
        }
        print "$dir/$folder_no\_$date/IMG_$picture_no.JPG from $file\n";
        mkdir("$dir/$folder_no\_$date");
        rename($file, "$dir/$folder_no\_$date/IMG_$picture_no.JPG");
        close EXIF or die "EXIF: $! $?";
    }
}

Oder nutze dieses Skript zum Auflisten aller Verzeichnisse, Suchen von Dateien bestimmter Größe, und speichere diese in einem Datums-basierten Verzeichnis:

#!/usr/bin/perl -w
$working_dir = '/home/myhome/';
$result_dir = '/home/myhome/photos/'
$jhead_bin = '/usr/bin/jhead';

@rec_dirs = `ls ${working_dir} | grep recup_dir`;
foreach $recup_dir (@rec_dirs) {
    print "Scanning ${recup_dir}...";
    chomp $recup_dir;
    @photos_in_recup = `find ${working_dir}${recup_dir}/*jpg -type f -size +800k`;
    foreach $photo_file (@photos_in_recup) {
        chomp $photo_file;
#print "IMG $photo_file in $recup_dir\n";
        @exif = `$jhead_bin -v $photo_file`;
#print "$jhead_bin -v $photo_file\n";
        foreach $line (@exif) {
            if ($line =~ /Time\s*:\s*([0-9]{4}):([0-9]{2}):([0-9]{2})\s[0-9:]{8}$/) {
                print "IMG $photo_file $1-$2-$3\n";
                system("mkdir ${result_dir}$1-$2-$3");
#                system("mv $photo_file $result_dir/$1-$2-$3/");
                last;
            }
        }

    }
}
  • Der folgende Text ist eine Stapelverarbeitungsdatei für Windows, welche die Dateinamen und die Verzeichnisstruktur mithilfe von den eingebetteten EXIF Informationen und dem Programm ExifTool wiederherstellt (nur für die Kameras von Canon, getestet mit zahlreichen Fotos von der EOS 20D) --Joey 08:36, 17 July 2008 (CEST)
@echo off
for %%f in (*.jpg) do call :process %%f
goto :eof
:process
for /f "usebackq delims=- tokens=1,2" %%a in (`exiftool -p ^"^$FileNumber^" %1`) do set gnum=%%a&set fnum=%%b
if "%gnum%"=="" goto :eof
if "%fnum%"=="" goto :eof
if not exist %gnum%CANON (
	echo Creating directory %gnum%CANON
	mkdir %gnum%CANON
)
echo Moving %1 to %gnum%CANON\_mg_%fnum%.jpg
ren %1 _mg_%fnum%.jpg>NUL
move _mg_%fnum%.jpg %gnum%CANON>NUL
goto :eof

Entfernen des unsichtbaren Mülls am ende der wiederhergestellten Datei

  • Unter Linux kannst du für Dateierweiterungen, mit denen ImageMagick umgehen kann, folgendes ausführen
for file in recup_dir*/*; do convert $file $file; done
  • Unter Linux (oder mit perl und 'convert'), kannst du das oben genannte durch eine Zählschleife ('for' loop) automatisieren und viele sonstige Bilder-Stapelverarbeitungen (batch image processing) mit fix_img erledigen

Duplikate finden

  • Unter Linux, kann md5sum verwendet werden um Dateiduplikate zu finden, vielleicht einfach md5sum nur auf die ersten x Bytes anwenden.

In diesem Beispiel überprüfen wir die ersten 80k von recup_dir*/*.sib

for file in recup_dir.*/*.sib; do MD5=`dd count=20 bs=4k if="$file" 2> /dev/null|md5sum`; echo "$MD5 $file"; done|sort
1a07198de3486ff2ecab7859612fe7ba  - Box Clever.sib
33105f4a7997b2e2681e404b3ac895f2  - Random, Matching - 2 bars.sib
376e0c53e78e56ba6f2858d9680f8c6b  - 01aIdentifyCommonInst.sib
b0b40a516a1e26660748a0a09cdf3207  - 01ArticulationFlashcards.sib

Wenn jede Checksumme einzigartig ist gibt es keine Duplikate.

  • Unter Linux (oder mit perl und 'sum'), kannst du Duplikate in einer Hierarchie unter Verwendung von find_dup finden oder mithilfe von finddup von fslint.
  • Unter Windows kann man die fc utility benutzen um duplikate zu finden, die folgende Stapelverarbeitungsdatei kann auch helfen (funktioniert nicht mit Win9x/ME) : --Joey 08:36, 17 July 2008 (CEST)
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET FILELIST=
FOR %%i IN (*) DO (
	FOR %%j IN (!FILELIST!) DO (
		IF %%~zi EQU %%~zj (
			fc /b "%%~i" "%%~j">NUL && echo "%%~i" = "%%~j"
		)
	)
	SET FILELIST=!FILELIST! "%%~i"
)
ENDLOCAL
  • Unter Windows kann man ein "/r" (ohne Anführungszeichen) hinter die beiden "for"s in der obenstehenden Stapelverarbeitungsdatei hinzufügen.
  • Unter Linux (oder mit perl und 'convert'), kannst du das oben genannte durch eine Zählschleife ('for' loop) automatisieren und viele sonstige Bilder-Stapelverarbeitungen (batch image processing) mit fix_img erledigen

MS Office

  • Um ein kaputtes Office-Dokument zu lesen (doc/xls/ppt/...), bei dem MS Office scheitert, kannst du OpenOffice versuchen. OpenOffice.org ist eine freie (quelloffene) Office-Suite, die in verschiedenen Sprachen und für verschiedene Plattformen zur Verfügung steht. Es ist zu allen anderen größeren Büro-Suiten kompatibel, das Produkt ist frei zum herunterzuladen, und auch in der Verwendung und Verteilung frei.
  • Einige MS Office Dokumente (xls/ppt/...) könnten mit einer Word .doc Dateierweiterung wiederhergestellt werden es könnte sein, dass Sie die Dateien umbenennen müssen.

MS Outlook

  • Um eine kaputte Outlook-PST-Datei wiederherzustellen, versuche Microsoft Scanpst

MS Messenger