riconoscere in modo univoco un file

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

riconoscere in modo univoco un file

Messaggio da danix »

Salve a tutti,
in questi giorni ho preso a controllare uno ad uno oltre 100 cd mp3 per conto di un amico, e ho notato che spesso delle canzoni si rincorrono su vari cd con nomi diversi, mi chiedevo, come fare per segnare univocamente un file in modo da scovare dei duplicati ed eliminarli; mi è venuto in mente di calcolare la somma md5 di ogni mp3 e di associarla al nome del file (magari utilizzando un database per rendere il tutto un pò più ordinato...), voi credete che sia fattibile praticamente?? si parla di oltre 80 GB di mp3...

Voi quale dbms utilizzereste?? Premetto che non sono pratico di database, ma mi basta che sia supportato da python (unico linguaggio che conosco un pochino) e per me va bene...

Spero che questo post non stoni troppo con il forum di slacky, ma siete la community italiana più "familiare" per me, e iniziare questa specie di sondaggio da voi mi è venuto quasi naturale, spero mi aiuterete...

Grazie mille
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
michele.p
Packager
Packager
Messaggi: 1276
Iscritto il: ven 24 nov 2006, 16:52
Nome Cognome: Michele Petrecca
Slackware: 13.37
Kernel: 2.6.37.6
Desktop: KDE
Distribuzione: ..Fedora e Mandriva
Località: Pontecorvo(FR)
Contatta:

Messaggio da michele.p »

...recentemente ho letto una recensione su un software che serve proprio a scovare i duplicati e, eventualmente, a cancellarli (naturalmente su hard disk)....ora però mi sfugge il nome....

:roll:

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Messaggio da danix »

michele.p ha scritto:...recentemente ho letto una recensione su un software che serve proprio a scovare i duplicati e, eventualmente, a cancellarli (naturalmente su hard disk)....ora però mi sfugge il nome....

:roll:
grazie della risposta, il fatto è che voglio provare a creare questo programma autonomamente, per questo ho chiesto un dbms compatibile con python...comunque mi sto dirigendo verso mysql (che tra l'altro è installato di default nella mia slack 11), qualcuno ha idea di dove si possa reperire un pò di documentazione in italiano??

grazie mille a tutti
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
alessiodf
Linux 3.x
Linux 3.x
Messaggi: 823
Iscritto il: ven 14 ott 2005, 21:04
Slackware: current
Kernel: 2.6.26.4
Desktop: Kde 4.1
Località: Roma
Contatta:

Messaggio da alessiodf »

JAVA + Postgress :D Cosi ti fai anche una interfaccetta grafica swing!

Non dovrebbe essere complicato, anzi! Il fatto e' che l'md5 ha un suo tempo di calcolo computazionale.. La generazione del database, per ogni cd di 700Mb potrebbe durare circa 1 minuto per CD! potresti fare cosi:
1) per ogni file del cd, leggi nome file, calcoli md5
2) metti nel DATABASE nome + md5, se gia esiste un md5 uguale, lo segnali su interfaccia o su log..

3) lo farei multithread, cosi ad esempio per ogni CD, puoi calcolarti gli md5 di 2,3,4,5, ecc.. (pool di thread) in modo parallelo!

classico produttore consumatore.. io farei un thread che legge i files, e li mette in una queue (java.util.concurrent) e N consumatori che calcolano MD5 + insert nel database.. 8)

quasi quasi lo faccio io per gioco! :oops:

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Messaggio da danix »

alessiodf ha scritto:JAVA + Postgress :D Cosi ti fai anche una interfaccetta grafica swing!

Non dovrebbe essere complicato, anzi! Il fatto e' che l'md5 ha un suo tempo di calcolo computazionale.. La generazione del database, per ogni cd di 700Mb potrebbe durare circa 1 minuto per CD! potresti fare cosi:
1) per ogni file del cd, leggi nome file, calcoli md5
2) metti nel DATABASE nome + md5, se gia esiste un md5 uguale, lo segnali su interfaccia o su log..

3) lo farei multithread, cosi ad esempio per ogni CD, puoi calcolarti gli md5 di 2,3,4,5, ecc.. (pool di thread) in modo parallelo!

classico produttore consumatore.. io farei un thread che legge i files, e li mette in una queue (java.util.concurrent) e N consumatori che calcolano MD5 + insert nel database.. 8)

quasi quasi lo faccio io per gioco! :oops:
Il problema è che non conosco java... dovrei mettermi a studiare sia il linguaggio di programmazione che postgresql, mentre usando il python qualche base già ce l'ho... mi sono indirizzato su mysql solo indicativamente, infatti al momento sto solo girovagando sul sito per capirne un pò di più...

grazie mille per la risposta...
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Messaggio da masalapianta »

for i in `find directory/ -type f`; do md5sum $i;done|awk '{print "insert into tabella (hash,file) values ('\''"$1"'\'','\''"$2"'\'');"}'|mysql nomedb

(ovviamente i file non devono contenere spazi nel nome, ma su *nix questo dovrebbe essere normale)

Avatar utente
alessiodf
Linux 3.x
Linux 3.x
Messaggi: 823
Iscritto il: ven 14 ott 2005, 21:04
Slackware: current
Kernel: 2.6.26.4
Desktop: Kde 4.1
Località: Roma
Contatta:

Messaggio da alessiodf »

masalapianta ha scritto:for i in `find directory/ -type f`; do md5sum $i;done|awk '{print "insert into tabella (hash,file) values ('\''"$1"'\'','\''"$2"'\'');"}'|mysql nomedb

(ovviamente i file non devono contenere spazi nel nome, ma su *nix questo dovrebbe essere normale)
aggira le variabili con "$x" cosi puoi avere anche spazi ecc...

Codice: Seleziona tutto

for i in `find directory/ -type f`; do 
   md5sum "$i";done | awk '{print "insert into tabella (hash,file) values ('\''"$1"'\'','\''"$2"'\'');"}' | mysql nomedb

Rispondi