Forum » Programiranje » Enolični identifikator datoteke
Enolični identifikator datoteke
GummyBear ::
Zdravo!
Pišem en program, ki vključuje tudi vnos podatkov o datotekah v PB... in tukaj se mi je ustavilo. Zanima me, kako (po čem) bi ločil datoteke med seboj. Da bo bolj razumljivo, rabim nekaj takega kot je ID - ki enolično določa element v podatkovni bazi. Datoteke pa nimajo ID-ja, zato rabim neko alternativo.
Predstavljajte si, da ustvarim neko txt datoteko z imenom "datoteka.txt". Potem datoteko preimenujem in premaknem v drugo mapo. Kako zdaj vedeti, da je ta datoteka ravno ta, ki sem jo jaz ustvaril? Obstaja kak atribut, ki se kljub spremembi datoteke ne spremeni?
Pišem en program, ki vključuje tudi vnos podatkov o datotekah v PB... in tukaj se mi je ustavilo. Zanima me, kako (po čem) bi ločil datoteke med seboj. Da bo bolj razumljivo, rabim nekaj takega kot je ID - ki enolično določa element v podatkovni bazi. Datoteke pa nimajo ID-ja, zato rabim neko alternativo.
Predstavljajte si, da ustvarim neko txt datoteko z imenom "datoteka.txt". Potem datoteko preimenujem in premaknem v drugo mapo. Kako zdaj vedeti, da je ta datoteka ravno ta, ki sem jo jaz ustvaril? Obstaja kak atribut, ki se kljub spremembi datoteke ne spremeni?
GummyBear ::
Mavrik ::
Za to se uporabljajo MD5/SHA checksumi ja, saj drugih identifikatorjev ni (podatki o datotekah so zapisani v datotečnem sistemu - premisli kaj se zgodi ko se datoteka premakne na drugo vrsto datotečnega sistema).
Načeloma se to dela v dveh nivojih:
1.) Preveri se velikost datoteke (datotek z identično velikostjo je precej malo na datotečnem sistemu)
2.) Če velikosti ustrezata se preveri še MD5 checksum.
Tak da v bazo zapiši velikost in MD5 da bo pospešil preverjanje.
Načeloma se to dela v dveh nivojih:
1.) Preveri se velikost datoteke (datotek z identično velikostjo je precej malo na datotečnem sistemu)
2.) Če velikosti ustrezata se preveri še MD5 checksum.
Tak da v bazo zapiši velikost in MD5 da bo pospešil preverjanje.
The truth is rarely pure and never simple.
kunigunda ::
Lahko se sicer spustis se nizje, namrec ce datoteko premikas ipd. ostane pointer nanjo isti. Verjetno pa rabis tud, ce se kopira
(in stara zbrise), v tem primeru je novi pointer.
(in stara zbrise), v tem primeru je novi pointer.
Spura ::
Mogoce je date created se ena stvar k se jo splaca preverit preden kaj drazjega preverjas.
edit: je pa res mogoce riskantno ce moras podpirat kopiranje in kake druge operacije
edit: je pa res mogoce riskantno ce moras podpirat kopiranje in kake druge operacije
Zgodovina sprememb…
- spremenil: Spura ()
MrBrdo ::
edina ziher rešitev je md5 oz. nek checksum. vse ostalo se ti lahko potem kaj zalomi (npr. če imaš date created, npr. če v isti sekundi dobiš 2 fajla z istim filenameom).
že md5 ni 100% zarad collisionov, sam dvomim da bi to bil pri tebi problem, ker so vseeno zelo redki.
že md5 ni 100% zarad collisionov, sam dvomim da bi to bil pri tebi problem, ker so vseeno zelo redki.
MrBrdo
GummyBear ::
Najprej vam sporočam, da sem tole z datotekami že rešil.
Sedaj pa je prišla še zahteva, da bi nekako označeval računalnike, na katerih so bile datoteke shranjene. Torej spet rabim nek enoličen identifikator, s katerim bi označil računalnik in bi bila zelo majhna (ali sploh nemogoče) verjetnost, da se tak identifikator ponovi.
Ime računalnika bi bilo recimo primerno, ampak lahko se zgodi, da obstajata dva računalnika z istim imenom - na primer če bi OS instaliral iz istega image. Enako velja z uporabniki. Kako bi lahko sestavil unikaten opis?
Sedaj pa je prišla še zahteva, da bi nekako označeval računalnike, na katerih so bile datoteke shranjene. Torej spet rabim nek enoličen identifikator, s katerim bi označil računalnik in bi bila zelo majhna (ali sploh nemogoče) verjetnost, da se tak identifikator ponovi.
Ime računalnika bi bilo recimo primerno, ampak lahko se zgodi, da obstajata dva računalnika z istim imenom - na primer če bi OS instaliral iz istega image. Enako velja z uporabniki. Kako bi lahko sestavil unikaten opis?
Ericssony ::
+1. Isti način kot ga je omenil black_ice sem uporabil že pred leti in deluje odlično. Edino pazi katere komponente boš izbral, ker poizvedba za podatki lahko malce traja...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] Kako izračunati hash diska.Oddelek: Programiranje | 5104 (3934) | kunigunda |
» | USB3 se čudno obnašaOddelek: Pomoč in nasveti | 995 (621) | Brane22 |
» | c# kako ugotoviti da gre za identicni file - ce je bil movean na isti particijiOddelek: Programiranje | 1244 (1006) | BigWhale |
» | Problem z instalacijo SuSE linux 9.3 64 bitOddelek: Operacijski sistemi | 1121 (1003) | sverde21 |
» | Skrivanje geselOddelek: Izdelava spletišč | 3154 (2394) | Tr0n |