Kirjoittaja Aihe: Duplikaattien poisto-ohjelma  (Luettu 34972 kertaa)

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3389
    • Profiili
Duplikaattien poisto-ohjelma
« : 11.02.12 - klo:12.33 »
Pieni johdanto:
Tästä ohjelmasta voi olla apua jos sinulla on paljon esimerkiksi musiikki-, video- tai valokuvatiedostoja ja mahdollisesti niiden kopioita --- mahdollisesti vielä useammalla eri koneella.  Olisi tarve kerätä ja siivota ylimääräisiä pois mutta et ole aivan varma että mitkähän on jo kopioitu talteen, mitkä ovat kokonaan uusia ja tiedostoja on eri koneillakin.   Ongelma tulee hankalammaksi kun muunnetaan tiedostoja, esimerkiksi  flac --> mp3  --> ogg   tai  flv --> mp4.   Kopioita ja kopion kopioita saattaa olla eri muodoissa.

Itselläni tyypillinen tilanne:  Perheen nuorin nauhoittelee Areenasta lasten ohjelmia, tallettuvat .flv muodossa.   Osa niistä on tallessa pöytäkoneellani, osa läppärillä, paikkaa kun vaihdetaan sen mukaan mitä konetta isi sattuu tarvitsemaan.  Konvertoin nuo nykyään .mp4 muotoon ja siirrän kotipalvelimelle mistä webbiselaimella pystyy noita katselemaan miltä kodin koneelta hyvänsä.   Kun aikaa oli kulunut tuli tarve siivota turhat kopiot, samoja ohjelmia oli läppärillä, pöytäkoneella ja palvelimellani.  Näitä on vuosien jälkeen jo hirvittävä määrä ja joukossa oli katkenneita nauhoituksia kun kone oli sammutettu ennenaikaisesti.   

Käsin vertailemalla yksittäisiä tiedostoja:
  a) Löytyykö saman niminen tiedosto 
  b) Löytyykö se saman pituisena (ehjänä)
  c) Löytyykö se tiedosto eri tiedostotyypillä (.flv --> .mp4)     

alkoi tuntua ikuisuushommalta jo muutaman tiedoston jälkeen --- ja näitä on eri hakemistoissa paljon lisää.    Siispä kirjoittelin ohjelman (bash-skripti) joka sai sattumalta (?)  nimekseen deldup ( Delete Duplicates).

Mitä deldup tekee ?

Deldup on päätteessä ajettava komentoriviohjelma. Käyttö on yritetty tehdä yksinkertaiseksi ja helpoksi oivaltaa jo ensimmäisestä kokeesta alkaen. Siivoustoimnta kohdistuu aina nykyiseen hakemistoon eli haluttun paikkaan mennään ensin tavalliseen tapaan liikkumalla "cd" komennoilla. Asennuksen jälkeen ohjelman käytössä on kaksi vaihetta:
1) Ensin ohjelma kysyy etsitäänkö duplikaatteja ja ohjelma katsoo nykyisestä hakemistosta tiedoston nimen, varmistaa löytyykö nimeltään ja pituudeltaan sama tiedosto toisesta paikasta jonka olet kertonut, jos on talleessa ja saman pituinen niin nimetään nykyisessä hakemistossa oleva tiedosto ".dup" -loppuiseksi.  Näin käydään läpi kaikki tiedostot nykyisessä hakemistossasi, verrataan ja nimetään jos löytyi sama. 
2) Seuraavassa vaiheessa kysytään halutaanko ".dup" nimetyt poistaa.   Tuohon vastataan isolla "R" kirjaimella jos halutaan heti poistaa (ei peruttavissa).  Jos olet epävarma niin voit vastata mitä vaan muuta ja poistoa ei tehdä, ".dup" loppuiset jäävät ja niitä voi käydä tarkastelemassa.
Jos jätit osuman saaneet tiedostot ".dup" loppuisiksi niin pääset tähän kakkosvaiheeseen suoraan uudestaan kun käynnistät deldup: in uudestaan ja vastaat ohjelman alussa että duplikaatteja ei etsitä.         

Tiedostotyypin yliajo

Deldup etsii halutessasi eri tiedostotyyppiä jos kerrot niin.  Jos haluat  ".flv" tiedsotot poistetaan nykyisestä hakemistosta kun sama löytyy "mp4" muodossakin niin voit kertoa tämän määrityksen kahden plus-merkin välissä näin:   +flv=mp4+
Esimerkki tuonnempana valaisee tuota lisää.

Asennus

Asennus on erittäin yksinkertainen:

1)  Tiputa deldup.bash ensin:

[url=http://www.homelinuxpc.com/download/deldup.bash]http://www.homelinuxpc.com/download/deldup.bash[/url]

Edit:  Käytä uudempaa latauslinkkiä tuolla alempana (uudempi versio)

2) Anna ajo-oikeus sille.  Graafisesti tuo käy kun katsoo hiiren oikealla napilla "Tiedoston ominaisuudet", "Oikeudet", ruksi "Salli tiedoston suoritus ohjelmana".   Tai päätteessä siinä kansiossa missä deldup on:

Koodia: [Valitse]
chmod +x deldup
3) Käynnistä pääte.  Mene hakemistoon (=kansioon) minne tiputit tuon "deldup.bash" ohjelman, usein se on /Lataukset Ubuntussa:

Koodia: [Valitse]
cd Lataukset
Varmista "ls" -komennolla että "deldup" on siellä:

Koodia: [Valitse]
ls
Asenna se ajamalla ilman mitään lisukkeita komentorivillä eli näin:

Koodia: [Valitse]
./deldup
Pyytää salasanasi että voi kopioida sen ---> /usr/local/bin

Valmis.

Käyttö

Ohjelmaa voi käyttää kahdelle eri tavalla, esimerkit valaisevat parhaiten:

1. Etsitään ja käsitellään tasan saman nimisiä tiedostoja

Koodia: [Valitse]
deldup  /home/matti/Videot
Etsii nykyisestä hakemistosta tiedoston ja nimeää/poistaa sen vain jos sama löytyy myös /home/matti/Videot hakemistosta (=kansiosta).  Tarkastaa samalla myös että tiedoston koko on sama tai sille ei tehdä mitään.

2. Etsitään ja käsitellään saman nimisiä mutta eri tiedostopäätteellä olevia tiedostoja:

Koodia: [Valitse]
deldup +flv=mp4+   /home/matti/Videot
Etsii nykyisestä hakemistosta vain .flv -tiedostoja ja nimeää/poistaa vain jos saman niminen mutta .mp4 -loppuinen löytyy /home/matti/Videot hakemistosta (=kansiosta).

Muuta

Ohjelma voi kurkkia palvelinlinkkejä yhtä hyvin (ja itse käytänkin sitä niin sftp: n kautta) kunhan linkki on mountattu jonnekin. Ohjelma luo "delduplog" hakemiston kotihakemistosi alle ja kirjoittaa sinne käynnistyessään käynnistymisajan.  Jos tiedostokoko ei täsmää vertailussa  sinne tulee merkintä.  Jos tiedostot ovat eri kokoisia niin asia pitää itse tutkia, jompi kumpi tiedosto on silloin katkennut ja ohjelma ei koske niihin. Jos tiedostopääte "yliajetaan" (esim. +mp3=ogg+ )niin tiedostojen kokovertailua ei tehdä.   
Ohjelma osaa käsitellä myös polkuja ja tiedostoja missä on välilyöntejä nimessä, kannattaa kuitenkin varoiksi käyttää lainausmerkkejä ympärillä jos kohtaat näitä.  Ohjelma yrittää jossain määrin tarkastaa käyttäjän kirjoitus/käyttövirheitä ettei sille kelpaa aivan "deldup hölöpölö".  Myös helppi elää hieman tilanteen mukaan.
Ohjelmassa on sisäänrakennettu installeri joka tarvittaessa päivittää myös ohjelman kun asennusvaihe ajetaan uudemmalla versiolla.

Tietoturva

Ohjelma on alusta loppuun käsiaalaani ja helposti kenen hyvänsä bash-taitoisen tarkastettavissa. Voit tarkastaa näin että lataus on onnistunut ja koodia ei ole väärennetty:

Koodia: [Valitse]
md5sum deldupa1b94a9edf49483d84ba27d9a7c22d17  deldup.bash

Edit:  Tarkasta että tulos on sama kuin deldup.md5 tekstitiedostossa (katso alempana).

Jos versio vaihtuu myöhemmin niin tuo tarkistussuma vaihtuu tietysti myöskin.

Viat

Olen pyöritellyt tuota aika monesti täällä mutta korjattavaa tai parannettavaa varmaan silti löytyy, kommentit tervetulleita.


Edit:  Korjasin pienen bugin ja laitoin uusimman esille. 
deldup -v
deldup v1.14
deldup v1.15

Edit 6.11.2014:  Ohjeesta viivattu yli vanhentuneita kohtia ja lisätty hieman uutta.
« Viimeksi muokattu: 06.11.14 - klo:21.37 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

Jallu59

  • Käyttäjä
  • Viestejä: 3430
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #1 : 11.02.12 - klo:18.30 »
Suuret ja nöyrimmät kiitokset Sinulle Ajaskel tästä deldub-scriptistä. Koneellani on kuvienhallintaohjelmien vaihtumisen myötä kertynyt runsaasti duplikaatteja digikameran kuvista/videoista ja /home:lla on alle Gigatavu vapaata tilaa.  Nyt saan ne siivottua kohtuullisella työmäärällä ja /home:n riittämään taas vähäksi aikaa.  :D :D :D :D :D :D :D :D

T:jallu59
Jari J. Lehtinen, Wanhempi (iki?)tietoteekkari & tietotekniikkakonsultti Turust, P4-HT / 3,0 GHz, Intel945 IGP 226MB & 4GBram & UbuntuStudio 14.04. Toshiba Satellie 50-C, i5 dual-core 2,3GHz, ubuntu-mate 16.04 LTS

Eesaurus

  • Käyttäjä
  • Viestejä: 2820
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #2 : 11.02.12 - klo:21.27 »
Aivan loistavaa työtä!  8) Ainakin kuvakansiot menevät siivoukseen.  :)

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3389
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #3 : 11.02.12 - klo:21.36 »
Kiitos, korjasin yhden bugin mikä tulee vastaan vain jos oletushakemiston tiedostonimissä on välilyöntejä. Kannattaa hakea tuorein versio.   Tuo versio päivittyy kun tiputtaa uudestaan, antaa ajo-oikeuden  ja  ajaa kerran ilman parametreja eli

Koodia: [Valitse]
./deldub.bash

Versio on nyt:
deldup -v
deldup v1.14


Edit:     Ok, korjattu.
« Viimeksi muokattu: 11.02.12 - klo:22.18 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

Eesaurus

  • Käyttäjä
  • Viestejä: 2820
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #4 : 24.02.12 - klo:12.14 »
Tuli mieleen, että saisikos tällä sovelluksella käytyä läpi alikansioitakin? Esim. kun kuvat ovat ensin Kuvat -kansiossa, jonka sisällä on lukuisia alikansioita jne...

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3389
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #5 : 24.02.12 - klo:17.40 »
Se on koodattu toimimaan aina nykyisessä hakemistossa minne käyttäjä on mennyt "cd": n avulla. Mikään ei tosin estä kutsumasta deldup: ia toisesta skriptistä joka selaa (tai etsii) vaikkapa hakemistopuun kokonaan tietystä pisteestä eteenpäin ja tarjoilee deldup: lle tekemistä hakemisto toisensa jälkeen.
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

Minna S

  • Käyttäjä
  • Viestejä: 1053
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #6 : 24.10.12 - klo:14.40 »
Se on koodattu toimimaan aina nykyisessä hakemistossa minne käyttäjä on mennyt "cd": n avulla. Mikään ei tosin estä kutsumasta deldup: ia toisesta skriptistä joka selaa (tai etsii) vaikkapa hakemistopuun kokonaan tietystä pisteestä eteenpäin ja tarjoilee deldup: lle tekemistä hakemisto toisensa jälkeen.
Miten tämä tapahtuu? Kone kipeästi siivouksen tarpeessa ja kaikkien alikansioiden yksitellen läpikäyminen vie paljon aikaa ja on hankalaa.

Linux user # 406601

retu

  • Käyttäjä
  • Viestejä: 905
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #7 : 24.10.12 - klo:15.49 »
FSlint voi olla kokeilemisen arvoinen ;)

mrl586

  • Käyttäjä
  • Viestejä: 4521
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #8 : 24.10.12 - klo:16.19 »
FSlint voi olla kokeilemisen arvoinen ;)
Tai fdupes.

Minna S

  • Käyttäjä
  • Viestejä: 1053
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #9 : 24.10.12 - klo:16.38 »
Kiitos vinkeistä. Kokeillaan :)


FSlintillä kävi homma kätevästi  :D
« Viimeksi muokattu: 24.10.12 - klo:17.39 kirjoittanut Minna Serula »

Linux user # 406601

Postimies

  • Käyttäjä
  • Viestejä: 2272
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #10 : 24.10.12 - klo:19.58 »
Se on koodattu toimimaan aina nykyisessä hakemistossa minne käyttäjä on mennyt "cd": n avulla. Mikään ei tosin estä kutsumasta deldup: ia toisesta skriptistä joka selaa (tai etsii) vaikkapa hakemistopuun kokonaan tietystä pisteestä eteenpäin ja tarjoilee deldup: lle tekemistä hakemisto toisensa jälkeen.
Scripti voisi käyttää vaikka locate komentoa apuna. Duplikaatteja voisi hakea sen tietokannasta. Ei vain yhdestä hakemistosta. Jos nyt oikein ymmärsin toimintatavan.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3389
    • Profiili
Vs: Duplikaattien poisto-ohjelma
« Vastaus #11 : 06.11.14 - klo:21.09 »
Oli taas ohjelmassa .flv / mp4 tiedostojen järjestely kun levytila kävi niukaksi ja ei voinut säilyttää sekä flv- että mp4-muodossa videoita. Vertailuskriptistä oli aika paljon iloa tuossa sen varmistamiseen että kaikki flv-tiedostot on muunnettu mp4-tiedostoiksi ennen kuin poistin lopullisesti ne flv: t. 

Siistin samalla skriptiä hieman, toivottavasti ei tullut uusia bugeja  ::)   Tiputin samalla ".bash" päätteen pois nimestä tarpeettomana. Tässä linkki:

http://www.homelinuxpc.com/download/deldup

MD5-tiedosto:

http://www.homelinuxpc.com/download/deldup.md5

MD5-tarkastus ladatulle tiedostolle päätteessä:

Koodia: [Valitse]
md5sum  deldup
Jos sisältö ei ole muuttunut matkalla niin pitäisi tulla sama luku kuin tuolla MD5-tiedostossa on.
« Viimeksi muokattu: 06.11.14 - klo:21.39 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.