Nalezeni duplicitnich souboru a jejich nahrazeni hardlinky

Petr Baláš petr.balas na gmail.com
Pondělí Červenec 14 10:18:01 CEST 2008


2008/7/14 Vlada Macek <tuttle na sandbox.cz>:
> Petr Baláš wrote:
>> Zdravim
>>
>> Nema nekdo tip na nejaky program ktery umi projit soubory,
>> najit duplicity a tyto nahradit hardlinky?
>> Vsechno co jsem zatim nasel fungovalo na par souborech
>> ale ja to potrebuji spustit na zalohach dat ktere jiz jsou
>> castecne prohardlinkovane (http://www.dirvish.org/)
>> a jedna se o cca 1 TB dat coz je cca 1.3 milionu inodes
>> coz odhaduji na cca 20 milionu souboru.
>>
> Dela mi tezkou hlavu predstava, jak by se do 1.3M inodu nacpalo 20M souboru.

Sorry, blbe receno - odhaduji cca 20M jmen souboru, unikatnich souboru
bude pochopitelne stejne jako inodes (pokud za soubor beru i adresare :-))


> Kazdopadne myslim, ze ani 20M souboru neni mimo kapacitu dnesnich
> operacnich pameti => ukol se podle me nemusi resit pomoci odkladaciho
> prostoru, napr. databaze.

Co jsem zkousel tak padlo na nedostatek pameti.


> Proto nevidim duvod, proc by programy, ktere jste zkousel, nemohly tu
> vec zvladnout. Tedy za predpokladu, ze nepouzivaji znacne neefektivni
> datove struktury. Potrebuji si jen dat pozor na to, ze nektere soubory
> uz jsou prolinkovane.
>
> Obvykle takovou vec resim tak, ze si nacitane soubory tridim do
> asociativniho pole podle velikosti (prvni a levny znak totoznosti
> obsahu). Je treba nepridavat do dane tridy polozku, ktera neni obycejnym
> souborem a soubor se stejnym parem devid:inode jako uz nejaky existujici
> (hard link "na nej").
>
> V kazde tride se pak udelaji otisky (napr. SHA1). Soubory z totoznym
> otiskem se mohou jeste pro jistotu porovnat bajt po bajtu a jsi-li
> totozne, prolinkovat a prislusne upravit datovou strukturu.

Principialne vim co a jak ale psat se mi to nechce :-)


-- 
Petr Baláš - petr at balas dot cz


Další informace o konferenci Linux