Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: mr.rubik 19. 07. 2023, 09:45:46

Název: Databáze souborů na disku
Přispěvatel: mr.rubik 19. 07. 2023, 09:45:46
Ahoj,

mam na disku spoustu souboru (filmy, obrazky, videa, ebooky, pdfka, mp3). Obcas zkratka divoce stahuju nebo narazim na nejaky repozitar/uloziste, ktery proste cely stahnu s tim, ze ho preberu potom... Nahromadila se mi takhle spousta duplikatu a potreboval bych to nejak automaticky prebrat.

Vim, ze existuji utilitky, ktere umi rozpoznat duplikaty a smazat je a uz jsem je i pouzival. Potiz je ale v tom, ze:

1. porovnava to soubory jen binarne, neumi to napriklad rozpoznat podobne nazvy jinych souboru (napriklad dve mp3, stejna pisnicka, nazev je klidne uplne stejny, ale soubory se o bajt lisi, ptz jednou je pisnicka o vterinu oriznuta).
2. je to one-off pouziti: tj. kdyz pridavam obsah, musel bych ho nakopirovat do slozek a pak zase pustit znovu scan celeho filesystemu.

Moje predstava, jak by neco takoveho mohlo fungovat je zhruba nasledujici:

1. bezelo by to jako daemon a v pravidelnych intervalech (pro moje pouziti by naprosto stacilo jednou denne) by oscannoval filesystem/dany adresar a zdetekoval zmeny
2. posledni stav by si drzel nekde v nejakem, napriklad, JSONu a oproti nemu vzdy kontroloval aktualni stav
3. jakmile by oscannoval FS a ziskal tenhle JSON (kde by byla napriklad cesta k souboru, hash, nazev a treba nejaka metadata jako kvalita apod.), mohl by veskerou chytristiku delat uz jen nad tim JSONem
4. kdyz by se soubor do adresare pridaval, stacilo by ho porovnat s JSONem (nebo rucne spustit scan)
5. pokud vim, linuxovy (a mozna i windows) kernel poskytuji nejake filesystem watche/notifikace

Existuje neco takoveho hotoveho, pouzitelneho nebo si to musim nakodit sam? :) Programovat umim, myslim, vcelku obstojne...
Název: Re:Databáze souborů na disku
Přispěvatel: RDa 19. 07. 2023, 12:42:03
To ukladejte podle "druhoveho cleneni" (treba mam mirrors/github/USER/REPO, primo se skriptem kteremu dam repo neb usera a postahuje to). Pak se vam nebudou tvorit duplicity.

Pro pouziti neceho ve vlastnim remixu pak delejte symlinky, na ten cizi/staticky obsah.

Kdyz jste neporadnej, tak vam zadna utilita nepomuze. Ale muzete poridit dalsi disk do pole.. coz je casto nejlevnejsi a nejrychlejsi reseni pro syslice digitalniho :D
Název: Re:Databáze souborů na disku
Přispěvatel: mr.rubik 19. 07. 2023, 15:19:45
Diky sice za odpoved, ale tak uplne to neodpovida na to, na co jsem se ptal...

Obsah mam vcelku solidne utrideny (filmy, hudbu, videa podle zanru/druhu/interpreta), fotky podle data a nazvu akce atd. Nekdy ale nestiham tridit nebo zatridim spatne (film je treba drama a crime zaroven, takze mam neumyslne jeden stejny film v adresari drama, druhy v crime).

Na stahovani nepouzivam temer nic jineho nez jDownloader, stahuje mi to primo na server, umi frontit, premium ucty atd. + torrent klient, pripadne custom skripty v extremnich pripadech... To co pisete ohledne skriptu bud nevim, jak myslite nebo mi to prijde jako snad jeste horsi pristup nez mit jednu general utilitu.

Uprimne, symlinky se mi taky nelibi, prijde mi, ze to akorat zvysuje komplexitu udrzovani takove databaze medii.

Jeste co se tyce sysleni. Ano, uznavam, to jsem presne ja :D Ale duvod je ten, ze jiz nekolikrat se mi stalo, ze muj oblibeny film, video, pisnicka z internetu proste zmizla (to se casto deje na youtube, kde je casto uplne unikatni obsah).
Název: Re:Databáze souborů na disku
Přispěvatel: kanoe22 19. 07. 2023, 18:56:13
Ono, ina cesta ako si to poctivo katalogizovat pomocou atributov ako su: meno intrepreta (ov), nazov pesnicky, zaner (zanre), a pod asi ani nepojde.

Preco to asi inak nepojde? Priklad:
Dajme tomu mam pesnicku, jej dlzka je 243sekund, bitrate je 320kbps, jej nazov je XXX, jej inteprety su Interpret1 a Interpret2.
Dajme tomu mam tu istu pesnicku, jej dlzka je znovu 243sekund, jej nazov je XXX, jej interpreti su ti isty, ale teraz je z nejakeho dovodu vyplneny iba Interpret1 a jej bitrate je 256kbps.

Ako to ma ten softver rozoznat? Robit nejaku sprektralnu analyzu? Dajme tomu slo by to pri mensom pocte pesniciek, pri velkom mozu byt aj male rozdiely medzi inak roznymi pesnickami tak male ze ich soft vyhodnoti nespravne ako tu istu pesnicku (pretoze mu musite dat nejake rozsahy v ktorych sa moze hybat aby pokryl napr hore spomenutu situaciu s rozdielnym bitratom) a jednu z nich zmaze.

Dalsie problemy su rozne dlzky tej istej pesnicky, alebo rozne zdroje, jedno moze byt zaznam z koncertu, druhe studiova nahravka, soft by ich v tomto pripade zrejme nerozoznal ako tu istu pesnicku (pretoze ten dav v pozadi jej urcite vyrazne zmeni spektrum).

Atd, atd, tich problemov ktore mozu nastat a treba ich nejak riesit je podla mna az moc aby sa to vyplatilo kodit si to sam, ci je na to nejaky vymakany soft a ci je volne dostupny, resp za rozumnu cenu neviem, ale dost o tom pochybujem, lebo to by muselo byt fakt prespekulovane.
Název: Re:Databáze souborů na disku
Přispěvatel: mr.rubik 19. 07. 2023, 19:34:50
Jezkovy voci :) Spektralni analyza...

Podle me uplne staci funkcionalita takova, ze to na zacatku oscanuje filesystem a vytvori "databazi". Nekam do dalsiho souboru to vyplivne duplicity a podezreni na duplicity a bude mit volbu na to, co smazat hned a co interaktivne (typicky asi stejny hash je jasna duplicita, kdezto podobne nazvy je podezreni) - to by bylo konfigurovatelne.

Kdyz se bude cokoliv pridavat, ohlasi to, jestli existuje 1:1 duplicita nebo podobnost a hotovo.

Samozrejme, ze to nevyresi vsechno - ale zase cilem neni pristat na Marsu...
Název: Re:Databáze souborů na disku
Přispěvatel: pruzkumbojem 19. 07. 2023, 20:43:13
no to ale byla odpovidajici komentar na tvoji formulaci
nejsem si jist, jestli duplicity jsou to, co te skutecne pali.

neni to spis o metadatech?
pro mne pro filmy a serialy je dobryou ukazkou "Media Center Master


Jezkovy voci :) Spektralni analyza...

Podle me uplne staci funkcionalita takova, ze to na zacatku oscanuje filesystem a vytvori "databazi". Nekam do dalsiho souboru to vyplivne duplicity a podezreni na duplicity a bude mit volbu na to, co smazat hned a co interaktivne (typicky asi stejny hash je jasna duplicita, kdezto podobne nazvy je podezreni) - to by bylo konfigurovatelne.

Kdyz se bude cokoliv pridavat, ohlasi to, jestli existuje 1:1 duplicita nebo podobnost a hotovo.

Samozrejme, ze to nevyresi vsechno - ale zase cilem neni pristat na Marsu...
Název: Re:Databáze souborů na disku
Přispěvatel: Josef Marianek 20. 07. 2023, 09:09:57
Jestli jste vyvojar mohl byste sam neco zacit tvorit. Vhodna souborova DB je SQLite, ma podporu pro webovy vyvoj (napr. v PHP), nebo treba i v Qt pro pripad ze byste se rozhodl psat aplikaci.
Název: Re:Databáze souborů na disku
Přispěvatel: grim . 20. 07. 2023, 13:02:15
Hledáte rovnák na vohejbák.
Ideální řešení je třídit to rovnou nebo s minimálním zpožděním. Když to nejde samo, tak s prostě nějak přinutit - např mít málo místa na disku kam stahuju. Pak holt NEJDE stáhnout nic dalšího, dokud do archivu nepřesunu to, co už jsem nasyslil. Nebo skript, který po týdnu automaticky smaže /download. Nestihnu to? Tak to asi nebylo důležité
Název: Re:Databáze souborů na disku
Přispěvatel: RDa 20. 07. 2023, 13:25:47
Nebo skript, který po týdnu automaticky smaže /download. Nestihnu to? Tak to asi nebylo důležité

Na OSX jsou v tech metadatech k souborum ulozeny veci jako puvodni-url, takze kdyby skript mazal ~/Downloads/ tak by porad davalo smysl odzalohovat adresy odkud ty data pochazi.

A vyssi divci bude FS pres fuse, ktery by ty url transparentne zas natahal zpet!
Název: Re:Databáze souborů na disku
Přispěvatel: Ondřej Kolín 20. 07. 2023, 13:40:35
O tohle se v GNOME stará tracker.

https://wiki.gnome.org/Projects/Tracker

Trackuje definované složky a indexuje soubory.

tracker3 index
Path                                                                                                                                                                                Recursive                                                 
/home/ondrej/Desktop                                                                                                                                                                *
/home/ondrej/Documents                                                                                                                                                              *
/home/ondrej/Music                                                                                                                                                                  *
/home/ondrej/Pictures                                                                                                                                                               *
/home/ondrej/Videos                                                                                                                                                                 *
/home/ondrej/Downloads                                                                                                                                                              *
/home/ondrej                                                                                                                                                                        -
/home/ondrej/Downloads                                                                                                                                                              -
Název: Re:Databáze souborů na disku
Přispěvatel: mr.rubik 20. 07. 2023, 13:42:18
nejsem si jist, jestli duplicity jsou to, co te skutecne pali.

Tak si zkus precist muj puvodni post jeste jednou :D

Nahromadila se mi takhle spousta duplikatu a potreboval bych to nejak automaticky prebrat.

neni to spis o metadatech?

Nikoliv, je to o duplicitnich binarnich (velmi casto duplicitnich ve smyslu ze maji stejny hash) souborech na disku.

pro mne pro filmy a serialy je dobryou ukazkou "Media Center Master

Tohle jsem sice neznal, ale umi to rozpoznat a smazat duplicity? Z dokumentace se mi to tak nejevi.

Hledáte rovnák na vohejbák.
Ideální řešení je třídit to rovnou nebo s minimálním zpožděním. Když to nejde samo, tak s prostě nějak přinutit - např mít málo místa na disku kam stahuju. Pak holt NEJDE stáhnout nic dalšího, dokud do archivu nepřesunu to, co už jsem nasyslil. Nebo skript, který po týdnu automaticky smaže /download. Nestihnu to? Tak to asi nebylo důležité

Pripada mi to asi jako kdybych se ptal, co mam delat, kdyz mam rymu a vy byste mi poradil, ze jsem ji nemel vubec chytit :D Diky no...
Název: Re:Databáze souborů na disku
Přispěvatel: Ondřej Kolín 20. 07. 2023, 13:46:58
Edit: a nad tím si postavit to hledání duplicit.

O tohle se v GNOME stará tracker.

https://wiki.gnome.org/Projects/Tracker

Trackuje definované složky a indexuje soubory.

tracker3 index
Path                                                                                                                                                                                Recursive                                                 
/home/ondrej/Desktop                                                                                                                                                                *
/home/ondrej/Documents                                                                                                                                                              *
/home/ondrej/Music                                                                                                                                                                  *
/home/ondrej/Pictures                                                                                                                                                               *
/home/ondrej/Videos                                                                                                                                                                 *
/home/ondrej/Downloads                                                                                                                                                              *
/home/ondrej                                                                                                                                                                        -
/home/ondrej/Downloads                                                                                                                                                              -
Název: Re:Databáze souborů na disku
Přispěvatel: mr.rubik 20. 07. 2023, 13:54:29
Edit: a nad tím si postavit to hledání duplicit.

O tohle se v GNOME stará tracker.

https://wiki.gnome.org/Projects/Tracker

Trackuje definované složky a indexuje soubory.

tracker3 index
Path                                                                                                                                                                                Recursive                                                 
/home/ondrej/Desktop                                                                                                                                                                *
/home/ondrej/Documents                                                                                                                                                              *
/home/ondrej/Music                                                                                                                                                                  *
/home/ondrej/Pictures                                                                                                                                                               *
/home/ondrej/Videos                                                                                                                                                                 *
/home/ondrej/Downloads                                                                                                                                                              *
/home/ondrej                                                                                                                                                                        -
/home/ondrej/Downloads                                                                                                                                                              -

Ano, tohle je super, diky, podivam se na to.
Název: Re:Databáze souborů na disku
Přispěvatel: mr.rubik 20. 07. 2023, 14:12:44
Edit: a nad tím si postavit to hledání duplicit.

O tohle se v GNOME stará tracker.

https://wiki.gnome.org/Projects/Tracker

Trackuje definované složky a indexuje soubory.

tracker3 index
Path                                                                                                                                                                                Recursive                                                 
/home/ondrej/Desktop                                                                                                                                                                *
/home/ondrej/Documents                                                                                                                                                              *
/home/ondrej/Music                                                                                                                                                                  *
/home/ondrej/Pictures                                                                                                                                                               *
/home/ondrej/Videos                                                                                                                                                                 *
/home/ondrej/Downloads                                                                                                                                                              *
/home/ondrej                                                                                                                                                                        -
/home/ondrej/Downloads                                                                                                                                                              -

Tak jsem to prozkoumal trochu vic do detailu a ta zakladni vec o kterou se mi jedna jsem ctenim dokumentace ani nahlednutim do kodu nenasel: tj. hledani podobnosti na zaklade filename nebo stejny hash.

Rozumim tomu, ze to zrejme pujde nejak udelat pomoci SPARQL, ale obavam se, ze ty queries by nebyly uplne trivialni. Otazka je, jestli tracker vubec uklada hashe souboru. Respektive pro trackovani souboru to je asi fajn, ale tak se mi zda, ze bych stejne musel postavit vcelku dost dalsiho kodu okolo + nastudovat dokumentaci.

Posledni vec, ktere jsem si vsimnul. Je to asi spis mene dulezite a sam jsem to zminoval, ale je to tohle (z jejich gitlab readme):

"Depend on features of a specific filesystem. Tracker should work on all commonly used filesystems."

tj. oni asi neprijimaji notifikace ze systemu o pridanych souborech, ale pravidelne filesystem scanuji - coz bych spis nechtel.
Název: Re:Databáze souborů na disku
Přispěvatel: user398 20. 07. 2023, 15:08:33
Drzal by som sa tych specializovanych toolov na vyhladavanie duplicit - kde inde by tie funkcie mali byt ak nie v nich. Kukni napriklad toto:
https://dupeguru.voltaicideas.net/
Vie vyhladavat na zaklade podobnosti nazvu a podobne...
Název: Re:Databáze souborů na disku
Přispěvatel: DejmaCZ 20. 07. 2023, 15:39:31
řeším stejný problém jako ty, jDownloader krmím youtube linkama a jdownloader to časem sosne, nebo se mu to nepovede, bo to YT smazal.

rovněž mě nebaví organizovat ty staženiny, nedotaženiny a řešit bordel v názvech souborů a meta datech.

jednou za čas se dokopu to z lokálních downloads přesunout na síťový disk, kde už je to zařazeno do správné adresářové struktury. trabl s duplicitama řeším ručně/očně, ale s přibývajícími daty to už nedávám, kolikrát stáhnu i něco co se jmenuje jinak než už to mám a přitom je to stejné - stahuji primárně dokumenty vesmír, příroda, ww1,2, klipy a koncerty atd... , je to můj offline youtube repo bez reklam

zatím v hlavě řeším v php indexaci cesta, md5 souboru, název souboru, nazev_vse_mala_bez_diakritiky + další možná data a metadata.
to vše 1 soubor = INSERT do SQLite, kde se následně pustí SELECT count(nazev_vse_mala_bez_diakritiky) a count(md5) HAVING > 1 dají najít duplicity názvu a obsahu.

dále mám v plánu z SQlite vygenerovat offline youtube lokální webserver kde si můžu pouštět co a jak chci
zatím mě ty duplicity netankujou, 2T disk je plný/prázdný z půlky

prototyp bude tak na 20 řádků v php prasárničce a začínat to bude
<?php
$d = dir("/archiv/");

?>

odpověď sice k prdu, ale myslím že to je taky efektivní varianta, alespoň pro mě :)