[Risolto]ordinare files estratti da hard disk corrotto

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

[Risolto]ordinare files estratti da hard disk corrotto

Messaggioda gigix058 » domenica 6 gennaio 2019, 16:03

Gentilissimi, buon pomeriggio e buona Epifania. Come si intuisce dal titolo, ho recuperato dati da un hard disk defunto, ed ovviamente sono venuti fuori dati alla rinfusa, a seconda del settore occupato nel disco. Vorrei ricreare un ordine fungibile dei files contenuti nelle oltre 600 cartelle di recupero. Visto che, ahimè, avevo files di diverso tipo nel disco esterno, ho bisogno di creare vari script basati su alcuni metadati contenuti nei files: ad esempio, voglio recuperare le fotografie per:
1) modello fotocamera/cellulare
2) anno
3) mese
4) giorno;
con ciò intendo che giorno è una sottocartella di mese, mese è sottocartella di anno, anno è sottocartella del modello, nella classica struttura ad albero; così, se vi sono fotografie (e ve ne sono) scattate con il cellulare, non finiscono nelle foto scattate con una macchina fotografica;
musica:
1) cartella autore
2) cartella album
3) file con titolo del brano preso dai metadati;
video:
modello videocamera/cellulare
anno/mese/giorno;
files word, excel, pdf tutti in una cartella, poi vedo manualmente che ci sta
files .exe tutti in una cartella
archivi dei programmi ubuntu in un'altra cartella.
files residui: vi dovrebbero essere files android, al momento non ho idea di come sistemarli, poi mi faccio venire un'idea in mente.
Ciò che vorrei, però, è essere anche spiegato il contenuto dello script, così da poterlo modificare in seguito, all'occorrenza, e come renderlo eventualmente eseguibile.
Grazie a tutti per l'aiuto
Ultima modifica di trekfan1 il sabato 12 gennaio 2019, 15:49, modificato 2 volte in totale.
Motivazione: Per il futuro evita il tutto maiuscolo nel [Risolto], grazie
Grazie! :ciao:
Andrea Rigione
gigix058
Prode Principiante
 
Messaggi: 97
Iscrizione: giugno 2011
Località: Avellino
Desktop: ubuntu
Distribuzione: Ubuntu 18.04 x64
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda steff » lunedì 7 gennaio 2019, 9:21

Nella mia raccolta ho uno script che copia e rinomina le foto:
Codice: Seleziona tutto
#!/bin/bash
#rinomina *jpg  da  photorec per  data  exif .
# Cambia $4 in $4$5 se vuoi anche  hour:minutes:seconds
#Crea cartella ~/lost-jpg e esegui il comando  dalla cartella che contiene il recup_dir-*
for i in recup_dir/*.jpg; do cp $i ~/lost-jpg/`exiv2 -p s $i | grep timestamp | awk '{print $4 $1 $5}'`.jpg; done

Ovviamente è solo una base da poter partire forse.

PS: Vedo che qui ci sono script migliori:
https://www.cgsecurity.org/wiki/After_U ... _extension
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Avatar utente
steff
Moderatore Globale
Moderatore Globale
 
Messaggi: 38248
Iscrizione: febbraio 2007
Località: Toscana
Desktop: LXQt
Distribuzione: Arch Linux 64bit
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda gigix058 » lunedì 7 gennaio 2019, 11:12

quindi se io volessi riscrivere a mio uso e consumo uno script per il recupero delle immagini? Se avviassi uno script "generico" sposterebbe tutte le immagini in una cartella, prendendo anche le immagini dei programmi salvati in memoria, invece a me serve scrivere (non sono un informatico, purtroppo, ma mi sa che nel 2019 qualche linguaggio lo devo per forza imparare) qualcosa che identifichi il modello della fotocamera dai dati exif e cataloghi i files per anno-mese-giorno. Si può fare?
Grazie! :ciao:
Andrea Rigione
gigix058
Prode Principiante
 
Messaggi: 97
Iscrizione: giugno 2011
Località: Avellino
Desktop: ubuntu
Distribuzione: Ubuntu 18.04 x64
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda steff » lunedì 7 gennaio 2019, 20:58

Si può fare ma perché non usare questo?:
Using a more complex Python script
There is a more extended Python program sort-PhotorecRecoveredFiles that does the following things with your recovered data:

Sort all files by file extensions into own folders.
Limit the number of files/folder by creating subfolders if a certain numbers is exceeded. The file/folder number can be customized.
For all jpgs: put them into own folders per year when they have been created (EXIF-Data). Within a year folders for every event are created, e.g. all photos taken at one weekend or vacation are sorted into one folder.


- crea cartelle per ogni estensione (eventualmente con sottocartelle) e ci butta i relativi file
- mette le immagini dentro jpg/anno/evento
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Avatar utente
steff
Moderatore Globale
Moderatore Globale
 
Messaggi: 38248
Iscrizione: febbraio 2007
Località: Toscana
Desktop: LXQt
Distribuzione: Arch Linux 64bit
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda gigix058 » martedì 8 gennaio 2019, 11:36

Perché non voglio copiare e incollare istruzioni ma capire cosa faccio e modificare le istruzioni a mio uso e consumo per iniziare ad imparare il linguaggio ;)
Grazie! :ciao:
Andrea Rigione
gigix058
Prode Principiante
 
Messaggi: 97
Iscrizione: giugno 2011
Località: Avellino
Desktop: ubuntu
Distribuzione: Ubuntu 18.04 x64
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda steff » martedì 8 gennaio 2019, 12:08

Quale linguaggio?
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Avatar utente
steff
Moderatore Globale
Moderatore Globale
 
Messaggi: 38248
Iscrizione: febbraio 2007
Località: Toscana
Desktop: LXQt
Distribuzione: Arch Linux 64bit
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda gigix058 » giovedì 10 gennaio 2019, 13:13

beh, penso che bash sia il linguaggio più opportuno, per queste operazioni. O no...?
Grazie! :ciao:
Andrea Rigione
gigix058
Prode Principiante
 
Messaggi: 97
Iscrizione: giugno 2011
Località: Avellino
Desktop: ubuntu
Distribuzione: Ubuntu 18.04 x64
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda gigix058 » giovedì 10 gennaio 2019, 13:32

Comunque, leggendo un po', ho provato con il comando find da terminale ed ho digitato:
Codice: Seleziona tutto
find /media/andrea/'Seagate 4TB'/recup_dir* -name \*.cr2 -exec mv {} /media/andrea/'Seagate 4TB'/Model/DateTime \;

nel tentativo di leggere dagli exif dei files raw delle mie fotocamere il modello e la data della foto...
terminale mi restituisce:
Codice: Seleziona tutto
mv: impossibile spostare '/media/andrea/Seagate 4TB/recup_dir.647/f3895796016.cr2' in '/media/andrea/Seagate 4TB/Model/DateTime': File o directory non esistente

che specifiche devo aggiungere? Model e DateTime li ho letti con Rawtherapee, e speravo nel potere della botta di fortuna.
Però prenderò almeno mp3, mpeg, mov, avi, pdf, .doc .xls, odf, ods, exe per ordinarli in cartelle per estensione...
Grazie! :ciao:
Andrea Rigione
gigix058
Prode Principiante
 
Messaggi: 97
Iscrizione: giugno 2011
Località: Avellino
Desktop: ubuntu
Distribuzione: Ubuntu 18.04 x64
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda UbuNuovo » giovedì 10 gennaio 2019, 14:40

Non puoi scrivere codice a caso!
In quel modo dove usi exiftool o simili?
Ti è stato proposto uno script che fa proprio quello che ti serve; cerca di capire quel codice, oltretutto comprensibilissimo.
Mi sembra inutile riscrivere le stesse cose in un altro linguaggio.
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3539
Iscrizione: dicembre 2009
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda gigix058 » giovedì 10 gennaio 2019, 19:49

UbuNuovo Immagine ha scritto:Non puoi scrivere codice a caso!
E chi vuole scrivere codice a caso?
UbuNuovo Immagine ha scritto:In quel modo dove usi exiftool o simili?
Ho appunto chiesto di essere spiegato l'errore/gli errori...
UbuNuovo Immagine ha scritto:Ti è stato proposto uno script che fa proprio quello che ti serve; cerca di capire quel codice, oltretutto comprensibilissimo.
Ho anche scritto che non ne so nulla di programmazione e non voglio copiare ad catsum canis codice che non so cosa faccia, come farebbe un imbecille, ma voglio fare una cosa fatta per bene, capendo come e dove modificare il codice per il mio metodo di archiviazione. Sarà comprensibilissimo a te, il linguaggio, ma non abbiamo tutti lo stesso livello di conoscenze, e credo che sia saccente, poco garbato oltreché di scarso aiuto il tuo commento.
Mi sembra inutile riscrivere le stesse cose in un altro linguaggio.

Si dà il caso che anche lo script gentilmente postato precedentemente fosse in bash... Ba(s)h!
Grazie! :ciao:
Andrea Rigione
gigix058
Prode Principiante
 
Messaggi: 97
Iscrizione: giugno 2011
Località: Avellino
Desktop: ubuntu
Distribuzione: Ubuntu 18.04 x64
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda UbuNuovo » giovedì 10 gennaio 2019, 22:33

È proprio perché hai detto che "non vuoi usare codice che non capisci" che mi ha colpito la tua riga di codice!
Qualche consiglio e poi non intervengo più.
Non usare il globbing sul path di find, usa il path della directory superiore, find opera ricorsivamente di default.
Invece di quotare parti interne al path quotalo ad inizio e fine, risulta più comprensibile; per esempio, invece di:
Codice: Seleziona tutto
/media/andrea/'Seagate 4TB'/recup_dir
usa
Codice: Seleziona tutto
'/media/andrea/Seagate 4TB/recup_dir'


quota l'espressione dopo '-name', si individua meglio la particella rispetto all'escape, per esempio:
Codice: Seleziona tutto
-name '*.cr2'


quota anche il segnaposto di '-exec', per esempio:
Codice: Seleziona tutto
-exec mv '{}'


il tuo codice, probabilmente funzionerebbe ugualmente, perché photorec crea file e directory senza spazi nei nomi, ma è consigliabile prendere come abitudine quotare.

per eseguire mv, cp etc., le directory di destinazione devono esistere!

Prima di eseguire lo spostamento devi fare varie operazioni: estrazione dati exif; estrazione anno, estrazione mese, estrazione giorno, dalla data exif e in base a questi dati creare le relative directory di destinazione (se non esistono già) e solo alla fine potrai fare lo spostamento.

Per questo motivo devi fare un ciclo su quanto trovato da find.
Inoltre, visto che devi spostare vari tipi di file, non ti conviene eseguire un find per ogni tipo.
Io cercherei tutti i file con find e all'interno del ciclo individuerei i tipi di file (per estensione o con il comando 'file') e poi eseguirei il codice più adatto per maneggiare quel tipo di file.

Codice: Seleziona tutto
while read f;do
   if IL TIPO DI FILE È JPG;then
      elaborazioni per i file jpg
   elif IL TIPO DI FILE È MP3;then
      elaborazioni per i file MP3
   elif IL TIPO DI FILE È MP4;then
      elaborazioni per i file MP4
   ...
   else
      elaborazione per tutti gli altri tipi di file
   fi
done < <(find 'DIR_GENITORE' -type -f )


Preserva sempre i dati originali, lavora su una copia e/o prima di fare gli spostamenti simula mettendo 'echo' davanti al comando, per esempio:
Codice: Seleziona tutto
echo mv "$f" "$dest/"
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3539
Iscrizione: dicembre 2009
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda gigix058 » giovedì 10 gennaio 2019, 22:54

grazie, adesso sei stato più "simpatico" ;) comunque sono rimasti solo i cr2 e i jpg, gli altri tipi di file li ho spostati già con find, la cui sintassi ho trovato molto comprensibile. Domani studio meglio il tuo suggerimento perchè le cartelle "/modello della fotocamera/anno/mese" esistono già, ma forse il linguaggio non sa che il nome della directory e di quei numeretti nelle sub sono proprio le cartelle di destinazione
Grazie! :ciao:
Andrea Rigione
gigix058
Prode Principiante
 
Messaggi: 97
Iscrizione: giugno 2011
Località: Avellino
Desktop: ubuntu
Distribuzione: Ubuntu 18.04 x64
Sesso: Maschile

Re: ordinare files estratti da hard disk corrotto

Messaggioda gigix058 » sabato 12 gennaio 2019, 11:55

sempre con find, ho spostato anche cr2 e jpg in cartelle apposite per tipo file. Non ho più la distinzione per fotocamera, però almeno ho la cartella raw e la cartella jpg.
Per chi, come me, ne sapesse poco o nulla di programmazione, lascio una riga generica sul funzionamento di find:
Codice: Seleziona tutto
find /percorso/origine/'metti gli apici singoli se ci sono spazi nel nome della directory' -oggettoricercato \*.estensione -comando {} /percorso/destinazione
Grazie! :ciao:
Andrea Rigione
gigix058
Prode Principiante
 
Messaggi: 97
Iscrizione: giugno 2011
Località: Avellino
Desktop: ubuntu
Distribuzione: Ubuntu 18.04 x64
Sesso: Maschile


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 2 ospiti