Dopo l'uso di PhotoRec
Dopo aver usato PhotoRec ci si potrebbe trovare in difficoltà nel districarsi con la grande quantità di file prodotti da PhotoRec.
Ecco alcune idee valide per aiutare in questo frangente.
Ordinamento dei file per estensione
- Sempre per ordinare i file per estensione si può usare questo script Python.
- Salvare il codice seguente come file (recovery.py) ed eseguirlo con i parametri 'sorgente' e 'destinazione'
Esempio: $ python recovery.py /home/mia/file_recuperati /home/mia/file_ordinati
#!/usr/bin/env python import os import os.path import shutil import sys source = sys.argv[1] destination = sys.argv[2] while not os.path.exists(source): source = raw_input('Enter a valid source directory\n') while not os.path.exists(destination): destination = raw_input('Enter a valid destination directory\n') for root, dirs, files in os.walk(source, topdown=False): for file in files: extension = os.path.splitext(file)[1][1:].upper() destinationPath = os.path.join(destination,extension) if not os.path.exists(destinationPath): os.mkdir(destinationPath) if os.path.exists(os.path.join(destinationPath,file)): print 'WARNING: this file was not copied :' + os.path.join(root,file) else: shutil.copy2(os.path.join(root,file), destinationPath)
Se si è interessati solo a file con determinate estensioni (per es. solo .jpg) si può usare il seguente comando *nix che trova tutti i file specificati nelle cartelle dei file recuperati e li copia in una nuova posizione:
$ find /percorso/file/recuperati -name \*.jpg -exec cp {} /percorso/alle/nuove/cartelle/ \;
JPEG
- Ordinamento di file JPEG usando i metadati Exif estratti dalle foto stesse Archived version
- Le fotocamere Canon PowerShot memorizzano i numeri di sequenza delle immagini nei dati Exif, perciò usando un programma che può leggere queste informazioni e tramutarle in stringhe di testo come jhead, insieme al seguente script Perl, si può sostanzialmente ripristinare i file immagine JPG al loro nome originale. --Vees 01:59, 8 January 2007 (CET)
$working_dir = '.'; $jhead_bin = '/usr/local/bin/jhead'; @recovered_files = `ls $working_dir`; foreach $file (@recovered_files) { chomp $file; @exif = `$jhead_bin -v $working_dir/$file`; foreach $line (@exif) { if ($line =~ /Canon maker tag 0008 Value = 100(\d{1,8})$/) { system("mv $working_dir/$file $working_dir/IMG_$1.JPG"); print "IMG_$1.JPG from $file\n"; last; } } }
O usare questo script per elencare tutte le cartelle, cercare file di una certa dimensione, e piazzarli in cartelle ordinati per data:
$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; } } } }
- Il seguente è un file batch per Windows che ricrea la struttura originale della directory e i nomi dei file presenti nella card (per fotocamere Canon, controllato con numerose foto provenienti da una EOS 20D), usando le informazioni EXIF del numero del file (usando ExifTool, in maniera analoga al precedente script shell). --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
- Eseguire il seguente comando usando Exiv2 per rinominare tutti i file JPEG alla data corrispondente (il programma chiede nel caso si verifichi un confitto):
$ exiv2 -t rename *.jpg
Trovare i duplicati
- FSlint Rilevatore di duplicati per Linux
- Su Linux o Mac OS X (o dove c'è perl e 'sum'), si possono trovare i duplicati usando find_dup.
- Su Linux o Mac OSX, md5sum può essere usato per trovare i duplicati dei file (anche facendo l'md5 solamente dei primi x byte).
In questo esempio, si controlla solamente i primi 80k di 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
Ogni somma di controllo è unica, perciò non ci sono duplicati.
- Su Windows si può usare l'utility fc per trovare duplicati - il seguente file batch (non funziona su Win9x/ME) può tornare utile: --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
- Su Windows si può aggiungere l'opzione "/r" (senza virgolette) dopo entrambi i "for" nello file batch precedente.
- Su macchine di tipo Unix, si può usare fdupes insieme al seguente script per generare uno script shell con il comando rm per rimuovere tutti i file duplicati:
#!/bin/sh OUTF='rm-dups.sh' if [ -e $OUTF ]; then echo "File $OUTF already exists." exit 1; fi echo "#!/bin/sh" > $OUTF fdupes -r -f . |sed -r 's/(.+)/rm \1/' >> $OUTF chmod +x $OUTF
MP3, Ogg vorbis...
Molti file mp3 e ogg contengono delle informazioni al proprio interno sul Title, Album e Autore. Se è il vostro caso si può usare con profitto EasyTag per rinominare automaticamente i file mp3 e ogg recuperati usando queste informazioni.
MS Office
- Per leggere un documento creato con MS Office (doc/xls/ppt/...) che MS Office si rifiuta di aprire, si può provare con OpenOffice. OpenOffice.org è un progetto di suite di programmi per ufficio multipiattaforma e multilingua open-source. OO è compatibile con tutte le principali suite per ufficio, ed è scaricabile, utilizzabile e ridistribuibile gratuitamente.
- Alcuni documenti di MS Office (xls/ppt/...) possono essere recuperati modificandone l'estensione in quella per Word, .doc - perciò sarà necessario rinominare questi file.
MS Outlook
- To recover a broken Outlook PST file, try Microsoft Scanpst