[Risolto]ordinare files estratti da hard disk corrotto

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
gigix058
Prode Principiante
Messaggi: 109
Iscrizione: martedì 14 giugno 2011, 12:16
Desktop: ubuntu
Distribuzione: Ubuntu 21.10 x64
Sesso: Maschile
Località: Avellino

[Risolto]ordinare files estratti da hard disk corrotto

Messaggio da gigix058 »

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
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40299
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: ordinare files estratti da hard disk corrotto

Messaggio da steff »

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
gigix058
Prode Principiante
Messaggi: 109
Iscrizione: martedì 14 giugno 2011, 12:16
Desktop: ubuntu
Distribuzione: Ubuntu 21.10 x64
Sesso: Maschile
Località: Avellino

Re: ordinare files estratti da hard disk corrotto

Messaggio da gigix058 »

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
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40299
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: ordinare files estratti da hard disk corrotto

Messaggio da steff »

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
gigix058
Prode Principiante
Messaggi: 109
Iscrizione: martedì 14 giugno 2011, 12:16
Desktop: ubuntu
Distribuzione: Ubuntu 21.10 x64
Sesso: Maschile
Località: Avellino

Re: ordinare files estratti da hard disk corrotto

Messaggio da gigix058 »

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
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40299
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: ordinare files estratti da hard disk corrotto

Messaggio da steff »

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
gigix058
Prode Principiante
Messaggi: 109
Iscrizione: martedì 14 giugno 2011, 12:16
Desktop: ubuntu
Distribuzione: Ubuntu 21.10 x64
Sesso: Maschile
Località: Avellino

Re: ordinare files estratti da hard disk corrotto

Messaggio da gigix058 »

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

Re: ordinare files estratti da hard disk corrotto

Messaggio da gigix058 »

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
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: ordinare files estratti da hard disk corrotto

Messaggio da UbuNuovo »

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.
Salva l'Ucraina! 🇺🇦
gigix058
Prode Principiante
Messaggi: 109
Iscrizione: martedì 14 giugno 2011, 12:16
Desktop: ubuntu
Distribuzione: Ubuntu 21.10 x64
Sesso: Maschile
Località: Avellino

Re: ordinare files estratti da hard disk corrotto

Messaggio da gigix058 »

E chi vuole scrivere codice a caso?
Ho appunto chiesto di essere spiegato l'errore/gli errori...
UbuNuovo [url=https://forum.ubuntu-it.org/viewtopic.php?p=5107113#p5107113][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] 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
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: ordinare files estratti da hard disk corrotto

Messaggio da UbuNuovo »

È 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/"
Salva l'Ucraina! 🇺🇦
gigix058
Prode Principiante
Messaggi: 109
Iscrizione: martedì 14 giugno 2011, 12:16
Desktop: ubuntu
Distribuzione: Ubuntu 21.10 x64
Sesso: Maschile
Località: Avellino

Re: ordinare files estratti da hard disk corrotto

Messaggio da gigix058 »

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: 109
Iscrizione: martedì 14 giugno 2011, 12:16
Desktop: ubuntu
Distribuzione: Ubuntu 21.10 x64
Sesso: Maschile
Località: Avellino

Re: ordinare files estratti da hard disk corrotto

Messaggio da gigix058 »

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
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 14 ospiti