Toon posts:

[algemeen] Inhoud van folder uniek identificeren?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe kan ik de inhoud van een folder uniek identificeren?

Ik heb bijvoorbeeld een folder met plaatjes op computer1:
1.jpg 4kb
2.jpg 10kb
3.jpg 12kb

Op computer2 staat dezelfde folder:
1.jpg 4kb
2.jpg 10kb
3.jpg 12kb

Ik zit te denken om de bestandsnaam en de bestandsgrootte te pakken en hier een string van te maken:
1.jpg_4kb,2.jpg_10kb,3.jpg_12kb

Deze string kan ik dan als hash key gebruiken.

Het probleem is dat bij 250 plaatjes met lange bestandsnamen de hash key wat groot word.
Tevens bij kleine aantallen plaatjes (bijvoorbeeld 2) kunnen 2 verschillende folders toch dezelfde hash key hebben.

Heeft iemand een alternatieve oplossing?

  • kunnen
  • Registratie: Februari 2004
  • Niet online
Doen wat je net zei en daarvan de MD5 berekenen?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Je kan MD5's genereren van hele bestanden (ISO's van Linux distro's en dergelijke) en dan maak jij je druk over een string van hooguit 250 x 100 = 25KB? ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • masterpoi
  • Registratie: Oktober 2004
  • Laatst online: 01-12 17:47
XOR gewoon de hash alle bestanden bij elkaar?

Verwijderd

Topicstarter
Dank je mensen, die md5 is erg handig, je converteerd hiermee m'n key "1.jpg_4kb,2.jpg_10kb,3.jpg_12kb" in "d8945848584a0abbdf4cf045f6ce733e" (hex)

Maar een probleempje blijft nog bestaan, wat als er maar 2 plaatjes in de folder staan? De kans dat 2 verschillende folders dezelfde hash key krijgen is in dit geval vrij groot.

Is het dan verstandig om van elk bestand in de folder een md5 hash te maken en vervolgens deze allemaal in een string te zetten en daarna een md5 hash maken van de string? Of is er misschien een snellere/betere oplosssing?

  • masterpoi
  • Registratie: Oktober 2004
  • Laatst online: 01-12 17:47
zoals ik al zei: je berekent de hash van al je bestanden, en dan XOR je die bij elkaar. Het is de enige manier om met 99.9% zekerheid collisions te vermijden.

  • netvor
  • Registratie: September 2000
  • Laatst online: 08-04-2024
Het nadeel van de bestanden zelf (de data dus) hashen is dat je dus alle bestanden in moet lezen. Stel je hebt dus 1024 plaatjes van elk 1 MB, dan moet je dus 1 GB aan data inlezen; niet zo leuk voor de HDD lijkt me.

Wat de TS wil, is een unieke hash maken van de metadata die in het FS aanwezig is. Ik zou gewoon alle metadata met zoveel mogelijk precisie nemen en achter elkaar plakken:
1. filename
2. filesize (bytes)
3. creation time (tot op de seconde nauwkeurig)
4. modification time
5. access time
En misschien nog wel meer metadata, als je die hebt. Het voordeel van deze methode is dat het een heel stuk sneller is en dat je (volgens mij?) de access time niet wijzigt. Het nadeel is natuurlijk dat je een hogere kans hebt op collisions, maar dat is logisch aangezien je 1GB aan data probeert te omschrijven in een paar kilobytes.

Computer Science: describing our world with boxes and arrows.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Verwijderd schreef op vrijdag 27 april 2007 @ 15:22:
Maar een probleempje blijft nog bestaan, wat als er maar 2 plaatjes in de folder staan? De kans dat 2 verschillende folders dezelfde hash key krijgen is in dit geval vrij groot.
Er zijn 1632 = 1.20892582 × 1024 mogelijkheden. De kans op een collision bestaat altijd maar is erg klein en heeft niets met het aantal plaatjes te maken.

[ Voor 5% gewijzigd door NMe op 27-04-2007 16:06 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • masterpoi
  • Registratie: Oktober 2004
  • Laatst online: 01-12 17:47
netvor schreef op vrijdag 27 april 2007 @ 15:58:
Het nadeel van de bestanden zelf (de data dus) hashen is dat je dus alle bestanden in moet lezen. Stel je hebt dus 1024 plaatjes van elk 1 MB, dan moet je dus 1 GB aan data inlezen; niet zo leuk voor de HDD lijkt me.
Je kan je natuurlijk beperken tot de eerste x (k)Bytes van het bestand. De Last Access Time wordt dan inderdaad wel aangepast. Bestandsattributen uitlezen hebben geen invloed op deze, maar persoonlijk vind ik dat nogal "natte vinger"-werk.

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 17-11 14:00
En vergeet niet de bestanden eerst ff te sorteren op bv alfabet. Ik neem aan dat als je 2 directory's met dezelfde files maar op een andere volgorde als hetzelfde wilt zien namelijk.

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • netvor
  • Registratie: September 2000
  • Laatst online: 08-04-2024
masterpoi schreef op vrijdag 27 april 2007 @ 16:18:
Je kan je natuurlijk beperken tot de eerste x (k)Bytes van het bestand. De Last Access Time wordt dan inderdaad wel aangepast. Bestandsattributen uitlezen hebben geen invloed op deze, maar persoonlijk vind ik dat nogal "natte vinger"-werk.
Daar zat ik ook al aan te denken. Dan kan je in ieder geval voorspellen hoelang je operatie gaat duren, wat best handig is voor dingen als progressbars ofzo. Een unieke identifier van n bestanden in O(n) tijd is redelijk netjes.

Computer Science: describing our world with boxes and arrows.

Pagina: 1