Ga naar inhoud


Hoe automatisch opnames verwijderen dmv een script.


mati

Aanbevolen berichten

Ik wil mijn dreambox elke nacht automatisch opnames laten verwijderen die ouder zijn dan 7 dagen.

Ik wil vanuit de crontab elke nacht een script aanroepen die dit uitvoert.

 

Dmv het commando: "find /hdd/movie -mtime +7" wil ik de bestanden ophalen die ouder zijn dan 7 dagen.

 

Helaas ondersteund BusyBox in de Dreambox versie de parameter -mtime niet.

 

Wie heeft er een andere oplossing voor een dergelijk script.

 

Gr

Marcel

Pli op DM800, VU+ DUO  en DM8000 met 4xDVB-S2, Wave Frontier T90

Link naar reactie
Delen op andere sites


Misschien overkill voor je probleem, maar misschien kun je perl

(of gawk) installeren op je db (enige kennis van deze scripttalen vereist).

Geen idee of dit nu nog steeds kan op je (recente?) image.

 

Voor perl:

Ik keek even door de manual: # man perlfunc

en vond daar:

-M Script start time minus file modification time, in days.

en:

stat($filename)

Returnt veld 9:

9 mtime last modify time in seconds since the epoch

 

Maar helaas ben ik geen perlwizard....

Link naar reactie
Delen op andere sites

Het enige commando dat ik kan vinden in het Dreambox-repertoire waarmee je rechtstreeks tijden kunt vergelijken is 'if [ file1 -ot file2 ] ; then commando ; fi

Als die cron precies eenmaal per dag wordt uitgevoerd, kun je dus iets maken in de orde van:

#!/bin/sh

mv 6.tmp 7.tmp

mv 5.tmp 6.tmp

mv 4.tmp 5.tmp

mv 3.tmp 4.tmp

mv 2.tmp 3.tmp

mv 1.tmp 2.tmp

touch 1.tmp

for i in *.ts *.eit; do if [ $i -ot 7.tmp ]; then rm $i; fi; done

 

Je maakt dus elke dag een nieuwe 1.tmp aan die in 7 dagen 'promoveert' tot 7.tmp.

Met de tijd van die 7.tmp ga je vergelijken, en al wat ouder is gooi je weg.

Niet volledig getest, dus er kan nog wat sleutelwerk nodig zijn, maar het principe zou moeten werken.

Mooi is ook anders, maar ja, je moet wat...

 

Suc6, Lion.

Link naar reactie
Delen op andere sites

@waps

 

Is inderdaad wel een overkill

 

@Lion251

 

Jouw oplossing werkt, maar is vrij riskant.

Indien het script op een dag, niet of meer dan 1 keer wordt uitgevoerd, krijg je verkeerde resultaten.

Pli op DM800, VU+ DUO  en DM8000 met 4xDVB-S2, Wave Frontier T90

Link naar reactie
Delen op andere sites

Dat is inderdaad een risico, maar ik denk dat dat meevalt.

Als je hem vanuit de cron laat uitvoeren dagelijks op een vaste tijd zal hij niet gauw tweemaal per dag worden uitgevoerd.

Je box moet wel aan/standby staan op het moment dat het script gedraaid moet worden, anders slaat-ie hem over. Dat heeft dan tot gevolg dat er een dag langer bewaard wordt.

Maar dit was de enige 'datumfunctie' die ik in de boordmiddelen kon vinden.

 

Hoewel... een andere optie zou nog kunnen zijn dat je met awk de output van ls -l gaat parsen, en dan zelf de datumberekening in je shell script voor je rekening neemt.

 

Greetz, Lion.

Link naar reactie
Delen op andere sites

Verroest, awk zit standaard in de busybox (gemini).

 

Het shellscript voldoet natuurlijk prima, maar als je in plaats daarvan

ls -l parsed, zoals Lion251 al zegt en de streepjes in veld 6 weghaalt,

omvormt tot het systime formaat en vervolgens vergelijkt

met de huidige systime dan blijft alles beperkt tot het

vergelijken van twee getallen:

 

 

----

ls -l *.ts* *.eit* | awk '

BEGIN{secnow=systime()}

{

date=$6;

gsub(/-/," ",date);

time=$7;

gsub(/:/," ",time);

secfile=date" "time" 00";

secfile=mktime(secfile);

if ((secfile+(7*60*60*24))<secnow){

print "removing "$8;

system("rm "$8);

}

}'

----

 

*niet getest!*

Pas op, 'system' statement verwijdert direct bestanden...!

Geen idee welke rampzalige fout ik hier over het hoofd heb gezien.

Je moet ook die indexbestanden weggooien, hoe heten die ook al weer?

 

Mocht de awk op de db. strftime("%F niet snappen, dan valt nog altijd de

date +%F te importeren via awk -v date=$`date +%F` of zoiets

 

Bye, wps

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...