Kirjoittaja Aihe: [Ratkaistu]Tiedostojen siistijä hakusessa ...  (Luettu 3612 kertaa)

kamara

  • Käyttäjä
  • Viestejä: 3028
    • Profiili
[Ratkaistu]Tiedostojen siistijä hakusessa ...
« : 18.09.20 - klo:17.58 »
Löytyykö linuxiin valmiina tiedostojen siistijä ?

Käytännössä haluaisin jostakin alihakemistosta siistiä kaikki dublikaatit s.e. ensimmäinen olisi normaali tiedosto, ja kaikki seuraavat samanlaiset tiedostot olisivat vain symbolisia linkkejä ensimmäiseen tiedostoon ?

Olettaisin sellaisen ohjelman olevan melko helppo ohjelmoida, mutta en tiedä millä hakukriteereillä voisi sellaista googlata, enkä ole mielestäni sellaiseen muutenkaan törmännyt.

Siis ongelmana on henkilökohtaisesti, että minulla on noin 10 TB:n kiintolevy, josta on vapaana vajaa 1 TB, ja oletan siinä olevan paljon dublikaatteja, jotka haluan muuttaa s.e. 1. on normaali tiedosto ja loput dublikaatit ovat symbolisia linkkejä 1. normaaliin tiedostoon.

Lisäksi hakusessa olisi ohjelma, jossa näkee esim. 1000 suurinta tiedostoa hakemistopuussa. Voisikohan find:lla onnistua sellainen haku ?
« Viimeksi muokattu: 19.09.20 - klo:19.26 kirjoittanut kamara »

Whig

  • Käyttäjä
  • Viestejä: 356
  • puppu-generaattori
    • Profiili
    • localhost
Vs: Tiedostojen siistijä hakusessa ...
« Vastaus #1 : 18.09.20 - klo:18.56 »
Itsellä oli vähän sama ongelma aikoinaan enkä Linux ohjelmien puolelta löytänyt sopivaa mutta onneksi käytössä oli myös Windows kone jolloin pystyin käyttämään CloneSpy ohjelmaa: http://www.clonespy.com/

kamara

  • Käyttäjä
  • Viestejä: 3028
    • Profiili
Vs: Tiedostojen siistijä hakusessa ...
« Vastaus #2 : 18.09.20 - klo:19.02 »
Itsellä oli vähän sama ongelma aikoinaan enkä Linux ohjelmien puolelta löytänyt sopivaa mutta onneksi käytössä oli myös Windows kone jolloin pystyin käyttämään CloneSpy ohjelmaa: http://www.clonespy.com/

Valitettavasti Windows ei ole vaihtoehtojen joukossa, ennemmin teen sellaisen itse, vaikka vielä vähän taitoa asian tiimoilta puuttuukin.

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Tiedostojen siistijä hakusessa ...
« Vastaus #3 : 18.09.20 - klo:19.09 »
Ihan noin kovakouraista en ole kokeillut, mutta tuplien hakuun olen käyttänyt
Koodia: [Valitse]
~# apt search fdupes
Lajitellaan... Valmis
Full Text Search... Valmis
fdupes/bionic 1:1.6.1-1 i386
  identifies duplicate files within given directories


LeHiX

  • Käyttäjä
  • Viestejä: 810
    • Profiili
Vs: Tiedostojen siistijä hakusessa ...
« Vastaus #4 : 19.09.20 - klo:09.15 »
Olisko FSlint, löytynee ubuntun paketteteista, siinä on kohta kaksoiskappaleet ja yhdistä napiska vihjaa sympolisista ja hardlinkeistä
« Viimeksi muokattu: 19.09.20 - klo:09.28 kirjoittanut LeHiX »
| Pros. AMD Phemon(tm) 9950 :) (4cores) | Emo: ASUS M3A78 | Mem 8GT
| x86_64, ubuntu xorg 22.04  | GeForce GTX 750 Ti/PC

kamara

  • Käyttäjä
  • Viestejä: 3028
    • Profiili
Vs: Tiedostojen siistijä hakusessa ...
« Vastaus #5 : 19.09.20 - klo:10.59 »
FSlint:llä taitaa pystyä teoriassa tekemään sen, minkä haluan, mutta epäilen GUI-ohjelmien kanssa ollaongelmana muistin riittävyys, sillä kaksoiskappaleen hakemistossa on 10 TB ja Raspberry Pi:ssäni on muistia 2 Gt.

Toisin sanoen hakusessa on kevyt terminaaliohjelma. Tosin näyttää siltä, että olen hankkinut jo tarvittavat tiedot kyseisen ohjelman tekemiseen C++:lla, joten ohjelman keveyskin alkaa olla hanskassa.

Olisin kuitenkin kiitollinen, jos löytyisi pääteohjelma, joka tekee kyseisen.

nm

  • Käyttäjä
  • Viestejä: 16425
    • Profiili
Vs: Tiedostojen siistijä hakusessa ...
« Vastaus #6 : 19.09.20 - klo:11.20 »
Olisin kuitenkin kiitollinen, jos löytyisi pääteohjelma, joka tekee kyseisen.

Fslint osaa etsiä kaksoiskappaleet myös komentorivillä: https://www.linux.com/news/tidy-your-filesystem-fslint/
Komentorivityökalu ei kuitenkaan taida suoraan tukea tiedostojen korvaamista symbolisilla linkeillä.

Rdfind tekee juuri haluamasi asiat: https://rdfind.pauldreik.se/

kamara

  • Käyttäjä
  • Viestejä: 3028
    • Profiili
Vs: Tiedostojen siistijä hakusessa ...
« Vastaus #7 : 19.09.20 - klo:12.19 »
Rdfind tekee juuri haluamasi asiat: https://rdfind.pauldreik.se/

Kiitokset jälleen nm. 8)

Se taitaa olla juuri se, mitä olen hakemassa...

Ainakaan paketin koko ei ole liian suuri. :)
Lainaus
Koodia: [Valitse]
...
Seuraavat UUDET paketit asennetaan:
  rdfind
0 päivitetty, 1 uutta asennusta, 0 poistettavaa ja 0 päivittämätöntä.
Noudettavaa arkistoa 37,8 kt.
...

Edit - Merkkaan ratkaistuksi, kun opin käyttämään kyseistä softaa, ja saan tehdyksi sen, mitä haluan.
« Viimeksi muokattu: 19.09.20 - klo:14.49 kirjoittanut kamara »

kamara

  • Käyttäjä
  • Viestejä: 3028
    • Profiili
Vs: Tiedostojen siistijä hakusessa ...
« Vastaus #8 : 19.09.20 - klo:15.43 »
Edit - Merkkaan ratkaistuksi, kun opin käyttämään kyseistä softaa, ja saan tehdyksi sen, mitä haluan.

Eipäs vielä ratkennutkaan. :'(

rdfind-tekee absoluuttiset symboliset linkit, kun haluaisin suhteelliset symboliset linkit.

Lisäksi jos ohjelman ajaa roottina, niin symboliset linkit tulevat aina root:root-ryhminä ja käyttäjinä, jos ohjelma tekee linkin. Siis optimaalinen tulos olisi, että uudesta symlinkistä tulisi samat ryhmät ja käyttäjät, kuin alkuperäisessä tiedostossakin on.

Ajoin seuraavalla komennolla:
Koodia: [Valitse]
sudo rdfind -makesymlinks true -makeresultsfile true .

Löytyyköhän tähän oma ohjelmansa vai pitääkö tehdä scripti ?

kamara

  • Käyttäjä
  • Viestejä: 3028
    • Profiili
Vs: Tiedostojen siistijä hakusessa ...
« Vastaus #9 : 19.09.20 - klo:16.09 »
Scripti nyt ainakin löytyi...

Lainaus
https://unix.stackexchange.com/questions/100918/convert-absolute-symlink-to-relative-symlink-with-simple-linux-command
Koodia: [Valitse]
find . -type l | while read l; do
    target="$(realpath "$l")"
    ln -fs "$(realpath --relative-to="$(dirname "$(realpath -s "$l")")" "$target")" "$l"
done

Edit - Nyt Raspberry Pi rupesi raksuttamaan ...

Ennen sitä tein tätä vastaavaa...
Koodia: [Valitse]
sudo ls -lR /media/pi/10Teranen >10TeranenDirnames.txt

... joka auttaneen muokkaamaan oikeudet samoiksi, kun alkuperäisessä hakemistossakin on. Toivottavasti ohjelma ei kaadu kesken urakan.

Edit 2 - Ohjelma ilmoittaa, että todellinen koko on n. 8 TiB eli sen se pystyi ainakin ilmoittamaan ennen kaatumista. Vaikuttaa lupaavalta.

Edit 3 - Lisää tilastoja .. pikkasen vajaa Miljoona tiedostoa, joten käsipelillä parsiminen olisi ollut "hivenen" työlästä.
« Viimeksi muokattu: 19.09.20 - klo:17.45 kirjoittanut kamara »

kamara

  • Käyttäjä
  • Viestejä: 3028
    • Profiili
Vs: [Ratkaistu]Tiedostojen siistijä hakusessa ...
« Vastaus #10 : 19.09.20 - klo:19.30 »
No, nyt tiedostot on siistitty.

Yllättävän nopeasti Raspberry Pi siitä selvisi. Ajattelin, että siinä menisi viikko, mutta Raspberry Pi teki sen muutamassa  tunnissa.

Levytilaa vapautui noin 300 Gt, joten operaatio kannatti tehdä. Vielä en ole tehnyt symbolisten linkkien muuttamista absoluuttisista suhteellisiin, mutta uskon siitä selvittävän vieläkin nopeammin.

Kiitokset nm:lle hyvästä vinkistä.