Newsgroup: it.comp.macintosh
Titolo: software verifica files uguali, esiste?

Avrei necessità di controllare, periodicamente,
se ho dei files uguali in una determinata
gerarchia di directory nel mio hd.
Il confronto dei files a due a due leggendo
di volta in vota i files interamente sarebbe
troppo laborioso. Sarebbe quindi più veloce
generare la prima volta l'hash, ad esempio md5
o sha, dei files e poi fare il confronto solo
su quella.
Sapete per caso dell'esistenza di un software che
lo faccia? O uno script bash, o altra procedura
veloce che eviti di fare il confronto a mano,
file per file?
-- 
Simone Sollena
ICQ: #147054457    LU: #391947  LM: #292854  FON: #441417
http://cerchietto.wordpress.com

 file per file?
c'e' file buddy che fa un controllo a partire da diversi parametri
configurabili (nome, grandezza, date varie,...). Non so se ti puo'
aiutare.
Ciao Jack

 aiutare.
Un po' troppo costoso. 39,95$
Grazie lo stesso.


 
Per il momento ho accomodato controllando la
presenza di files uguali tra 400 files in un
paio di minuti con l'aiuto del comando md5sum
e di un foglio di calcolo di openoffice.


 
a mano:
md5sum * >md5.txt
poi ho aperto il .txt, mela+a, mela+c
e nel foglio di calcolo, mela+v


 md5sum * >md5.txt
grazie.
si potrebbe fare un applescript, o un'azioen di automator (forse :-) )


 1>
Avrebbe potuto fare per me, ma dopo averlo provato...
Gli ho dato in pasto una directory, senza sottodirectory,
contenente quasi 900 files, per un totale di 2,14 GB.
Dopo una prima scansione mi ha detto, tramiete un
messaggio di growl, che c'erano circa 800 files
possibili uguali, poi ha avviato la scansione approfondita
su questi. Dopo circa mezz'ora non aveva ancora finito,
il sistema era quasi paralizzato, exposé rispondeva dopo
diversi secondi, lo swap era salito a 3 GB, poi l'ho
chiuso senza averlo fatto terminare.
Il sistema continuava ad essere un po' bloccato, anche
perchè doveva scaricare i 3 GB di swap, dopo aver aspettato
qualche minuto ho riavviato.
Alla fine ho fatto il controllo a modo mio, sempre sugli stessi
files.
da shell con il comando
md5sum * > md5.txt
copiato e incollato il contenuto del file md5.txt in
un foglio di calcolo di OpenOffice
ordinato il tutto secondo la colonna degli md5
(celle A1, A2, A3, ecc...)
in B2 ho messo il controllo =SE(A2=A1;1;0), copiato
ho selezionato il resto delle celle nella colonna B
ed incollato il controllo
alla fine, la sommatoria: B885=SOMMA(B2:B884)
Se il risultato è 0 non ci sono files uguali tra loro,
altrimenti il numero di files doppioni è minore o
uguale al risultato.
Il tutto è stato eseguito in molto meno tempo,
senza utilizzo di memoria e swap, senza ventola
a 6000 rpm, senza nessuna applicazione bloccata.


 gerarchia di directory nel mio hd.
Prova "Tidy Up!".
-- 
E l'ultimo chiuda la porta.

 md5sum * > md5.txt
[...]
puoi aggiungere un sort per evitare di cliccare:
md5sum * > md5.csv
ma io lo farei con il find, mi sa che md5sum scazza con le directory:
find . -type f -exec md5sum {} \; | sort > md5.csv
probabilmente con awk o simili riesci pure a fare il print di quelli
che sono effettivamente doppi, feci qualcosa di simile una volta per
calcolare una sommatoria. googla un po'
p.s. se chiami il file .csv openoffice lo apre direttamente con calc i
txt li apre con writer

 calcolare una sommatoria. googla un po'
eccomi:
find . -type f -exec md5sum {} \; | sort | awk '{if (md5 == $1) print
$2 " " file; md5=$1; file=$2}' > md5.csv
(tutto su una riga)
ti crea un file con le coppie di file uguali. A te poi scegliere quale
togliere. Spero sia utile a te o qualcuno.
alle volte mi sembro un po' bischero ad usare awk, ma poi quando
finisco, mi dico: mica male 'sto awk :-)
ciao!

 txt li apre con writer
Hai ragione.
Credevo che i .csv dovessero per forza avere valori
separati da virgole.


 finisco, mi dico: mica male 'sto awk :-)
Ma che belli questi sistemi Unix/Linux :-)
Ah, ci tengo a precisare che i files *potrebbero* essere
uguali. E' molto probabile, ma non è detto che lo siano.
a md5 diversi corrispondono files diversi
a md5 uguali, anche se raramente, potrebbero corrispondere
files diversi


 
tv mi ha già dato la soluzione.
Grazie ugualmente.



ecco ora mi hai fatto venir l'idea di controllare pure a me... e ho
scoperto un problema dello script: in effetti sega a fare il print dei
file che hanno uno spazio al loro interno.  L'ho messo a posto
find . -type f -exec md5sum {} \; | sort | awk '{newmd5=$1; $1="";if
(md5 == newmd5) print $0 " " file; md5=newmd5; file=$0}' | sort >
uguali.txt
e questo è come lo preferisce Simone cioè un file per ogni riga e una
riga vuota per ogni coppia (in realtà fa un sort in più, così poi il
file è più facile da leggere):
find . -type f -exec md5sum {} \; | sort | awk '{newmd5=$1; $1="";if
(md5 == newmd5) print $0 ";" file ";"; md5=newmd5; file=$0}' | sort |
tr ";" "\n"> uguali.txt
ovviamente si può sdoppiare in 2 passaggi visto che il find è sempre
lo stesso e fare l'md5 è quello che prende più tempo:
find . -type f -exec md5sum {} \; > find.txt
e poi:
cat find.txt | sort | awk '{newmd5=$1; $1="";if (md5 == newmd5) print
$0 ";" file ";"; md5=newmd5; file=$0}' | sort | tr ";" "\n">
uguali.txt
p.s. Un po' per tutti:
Io ho trovato qualcosa come 22mila file uguali su tutto il disco!!
mo' piano piano li controllo....
cià mo' smetto di fare awk...
ciao

 uguali.txt
A questo punto, con i due passaggi separati, abbiamo anche
la possibilità di verificare la presenza di files doppi
su più cd/dvd, pendrive o dischi esterni.
Basterà fare il primo passaggio per ogni volume, poi
un merge dei vari find.txt e quindi un controllo con il secondo
passaggio.
E accorgerci magari che avevamo più copie dello stesso video
delle vacanze su più dischi.
Grazie per l'aiuto.


 lo faccia? 
Ora lo so, fdupes, da ieri disponibile nei ports.
Anzi facci sapere come prestazioni come va sulle stesse directory su cui 
fai l'hash a mano.

Andrea D'Amore ha scritto:

fdupes è questo, vero?
http://netdial.caribe.net/~adrian2/fdupes.html
fdupes impiega 10'e 34''
l'altro comando,
find . -type f -exec md5sum {} \; | sort | awk '{newmd5=$1; $1="";if 
(md5 == newmd5) print $0 ";" file ";"; md5=newmd5; file=$0}' | sort | tr 
";" "\n"> uguali.txt
impiega 13' e 40''
fdupes vince.
Questa volta non avevo files uguali.
Ho provato su una directory da 12,96 GB con 6516 files.


 qualche minuto ho riavviato.
ottimo, niente di meglio per un bug report!
potresti dirmi che tipo di files stavi esaminando, qual e' la tua
configurazione di sistema, e i parametri di singular?
ty
-- 
Le Carême, ils vont à la boucherie, comme les chiens.

 configurazione di sistema, e i parametri di singular?
Foto e filmati.
Qui Mac OS X 10.4.9 su MacBook seconda serie.
Intel Core 2 Duo.
Parametri di singular... non saprei.
L'ho provato e l'ho cestinato.


 L'ho provato e l'ho cestinato.
Magari poi lo riscarico e faccio alcune altre
prove per cercare di capire in quali casi si
presentano problemi.


 presentano problemi.
chiedo proprio per evitare cestinamenti furiosi eh ;)


 Parametri di singular... non saprei.
assumo quelli "di fabbrica" dunque


 delle vacanze su più dischi.
a quel punto se fate una gui lo uso pure io :-D