Synology-Forum.nl

Firmware => Synology DSM algemeen => Topic gestart door: hans114 op 26 april 2014, 16:22:32

Titel: Automatisch verwijderen bestanden
Bericht door: hans114 op 26 april 2014, 16:22:32
Kent iemand een manier om periodiek bestanden uit een gedeelde map te verwijderen? Ik wil graag, wellicht via een crontask o.i.d., bestanden ouder dan een week automatisch laten verwijderen.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 26 april 2014, 17:32:16
Dit zou je in de Taak Planner kunnen zetten en dan plannen:
find /volume1/<shared map>/* -mtime +5 -exec rm {} \;

-mtime +<n>
Hiermee geef je aan files ouder dan, in dit geval, 5 dagen.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: hans114 op 26 april 2014, 18:34:23
Bedankt, ik ga ermee aan de gang.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 26 april 2014, 21:07:12
Hoor graag terug of het je gelukt is  ;)
Titel: Re: Automatisch verwijderen bestanden
Bericht door: hans114 op 27 april 2014, 11:59:51
Dag Birdy,

Wanneer ik de task "find /volume1/snap/* -mtime +1 -exec rm {} \;" laat uitvoeren worden bestanden van gisteren die ouder zijn dan (nu) 24 uur niet verwijderd. Als ik de task "find /volume1/snap/* -exec rm {} \;" laat uitvoeren worden alle bestanden verwijderd.

Het zou kunnen dat het systeem niet checkt op de tijd van de te verwijderen files maar op alleen op datum. Ik weet dat pas als we een dagje verder zijn.

Groet, Hans.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 27 april 2014, 21:09:20
Om te beginnen:
Citaat
Als ik de task "find /volume1/snap/* -exec rm {} \;" laat uitvoeren worden alle bestanden verwijderd.
Dat klopt helemaal.

Citaat
"find /volume1/snap/* -mtime +1 -exec rm {} \;" laat uitvoeren worden bestanden van gisteren die ouder zijn dan (nu) 24 uur niet verwijderd.

Probeer eens (heb zelf niet zo'n zin/tijd om zelf te testen  ;) ), maar dit moet meer exact zijn: -mmin +$((60*24))
"find /volume1/snap/* -mmin +$((60*24)) -exec rm {} \;"
Titel: Re: Automatisch verwijderen bestanden
Bericht door: hans114 op 28 april 2014, 07:50:31
Dat werkt als een zonnetje, bedankt!
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 28 april 2014, 12:54:50
Ha.....cool  8)
Have fun.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: reempje op 28 april 2014, 15:37:11
wordt bij deze code ook de bestanden uit de sub-folders verwijderd?
ik denk bijv. aan tvseries ( /volume1/sharedmap/tvserie/seizoen/*.1.mkv )

kan ik volstaan met de sharedmap of moet ik elke serie apart opgeven?
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 28 april 2014, 20:48:05
find /volume1/sharedmap/tvserie/seizoen/*.1.mkv -mmin +$((60*24)) -exec rm {} \;
Alle files in map /volume1/sharedmap/tvserie/seizoen/ van 1 dag en ouder die eindigen op .1.mkv worden verwijderd.
Geen probleem.

Je kunt overigens even testen door "rm" te vervangen door "ls" (bijvoorbeeld).
Wat je dan ziet zou verwijderd worden (rm).
Titel: Re: Automatisch verwijderen bestanden
Bericht door: reempje op 29 april 2014, 14:05:39
Het volgende werkt voor mij na wat googlen en de voorzet van Birdy:
find "/volume1/sharedmap/" -depth \( -name *.1.mkv -type f \) -exec rm {} \;

het maakt voor mij niet uit hoe oud de bestanden zijn (schedule 1x per week)
Ik probeer nu in het script veld meerdere regels toe te voegen, omdat ik meerdere sharedmaps heb waar ik een soortgelijke cleanup wil uitvoeren. Dit werkt echter niet, is het wel mogelijk of moet ik meerdere script rules aanmaken?
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 29 april 2014, 14:11:09
In feite kun je in de taakplanner 1 regel ingeven echter, wanneer het meerdere regels gaat bevatten dan kun je beter een script maken en die aanroepen vanuit de taakkplanner.
Of je maakt meerdere taken aan voor elke (gedeelde) map.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: chrisdrh op 30 april 2014, 08:38:58
Bedankt Birdy het werkt perfect. (toppie) :D
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 30 april 2014, 14:38:22
Mooi zo  ;D
Titel: Re: Automatisch verwijderen bestanden
Bericht door: 53Starter91 op 09 december 2016, 22:27:05
Hallo Birdy,

Doordat ik destijds (i.v.m. beperkingen surveillance station; inmiddels wel na RFC wel opgelost dor syology :thumbup:) er voor gekozen heb de opname van mijn hikvision via IVMS op mijn SS te laten plaatsvinden, loop ik nu tegen het feit aan dat de schijf vol raakt. Via IVMS heb ik geen optie om dat te laten overschrijven (oud tegen nieuw). Op het forum kom ik deze optie als script niet tegen. Wel de optie in deze topic om bestanden ouder dan x dagen te later verwijderen middels script. Jij geeft aan "-mtime +<n>
Hiermee geef je aan files ouder dan, in dit geval, 5 dagen." Verder lees ik dat dit niet werkt en men met een moeilijke formule aan de gang gaat. Dit begrijp ik niet zo, maar vindt -mtime +<n> vreemd. Zou niet -mtime - <n> de oplossing zijn?
Ik ben benieuw naar je antwoord. Thx
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 09 december 2016, 22:57:08
Alles kan echter, dan wordt het script anders, nu wordt er gezocht naar groter dan +n, dan verwijderen, met kleiner dan -n, dan niet verwijderen.
Lood om oud ijzer dus.

Citaat
Verder lees ik dat dit niet werkt
find /volume1/sharedmap/tvserie/seizoen/*.1.mkv -mmin +$((60*24)) -exec rm {} \;Werkt toch prima.

Citaat
en men met een moeilijke formule aan de gang gaat.
Welke moeilijke formule bedoel je ?

Maar goed, met de -n werken en daarbij de nodige aanpassingen, kun je zelf toch wel even testen ? ;)
Titel: Re: Automatisch verwijderen bestanden
Bericht door: 53Starter91 op 10 december 2016, 00:02:27
Wat ik wil bereiken is dat ik elke dag automatisch alle bestanden ouder dan 20 dagen wil laten verwijderen uit mijn folder volume1/Hikvision opname/camera 1. Met de optie find /volume 1/Hikvision opname/camera 1/ -mtime +24 –exec rm {} \; gebeurde er niets. Ik dacht dat +20 betekende 20 dagen na nu, vandaar de optie -20. Helaas werkt ook dit niet. Omdat ik $((60*24*24)) niet begrijp uiteindelijk find /volume 1/Hikvision opname/camera 1/* -exec rm {} \; geprobeerd. Geen van de bestanden in de directory werden gewist. Ook via het configuratiescherm -actie - resultaat bekijken kom ik niet verder. Ik zie geen gegevens bij Script en Standaard uitvoerfout. Het lijkt dat het script of programeercode niet wordt geaccepteerd. Welke programeercode heb jij gebruikt.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Ben(V) op 10 december 2016, 08:26:01
Het is geen berekening.
De + betekent ouder dan en de - nieuwer dan.

En beter lezen is ook wel handig er staat toch duidelijk in dit topic dat na de modificatie het prima werkt.
Het foutje zat in het feit dat er initieel gedacht werd dat het in dagen moest (de +1) maar het moet in minuten (60*24).
De werkende regel is dus:
Citaat
"find /volume1/snap/* -mmin +$((60*24)) -exec rm {} \;"

PS Als je dat een moeilijke regel vind zou je kunnen googlen wat de verschillende delen betekenen of eventueel hier vragen.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 10 december 2016, 09:48:35
Welke programeercode heb jij gebruikt.
Linux en DSM is een Linux variant.

Jij geeft aan -mtime +<n>
Nee, uiteindelijk geef ik aan -mmin +<n>
find /volume1/sharedmap/tvserie/seizoen/*.1.mkv -mmin +$((60*24)) -exec rm {} \;
Citaat
-mmin +$((60*24))
Het voorbeeld is gebaseerd op 1 dag en ouder dus, wil je 2 dagen en oude dan is het
Citaat
-mmin +$((60*48))

Overigens,
Citaat
/volume 1/Hikvision opname/camera 1/
"/volume 1" het script vindt dus nooit wat je zoekt, moet n.l. zijn "volume1"

Citaat
Hikvision opname
Heet die gedeelde map ook "Hikvision opname" ?
Dus, Hoofdletter "H" en er zit een spatie tussen "Hikvision" en "opname" ?

Zelfde voor "camera 1"
Dus, zit er een spatie tussen "camera" en "1" ?

Mappen en files zijn in Linux case sensitive.

Betreft -mtime +of- en -mmin +of- "er zijn vele wegen die naar Rome leiden" uiteindelijk was "-mmin +<n>" de beste keuze en werkt prima maar, dan moet je het wel goed doen b.v. "volume1"
Titel: Re: Automatisch verwijderen bestanden
Bericht door: 53Starter91 op 10 december 2016, 11:27:25
Birdy op voorhand al bedankt voor de snelle reactie. Je uitleg komt mij duidelijk over, ook wat betreft mtime +$((60*24)). Probleem is alleen dat er niks is gebeurd nadat ik het script laat uitvoeren. Ik doe iets verkeerd, maar weet dus niet wat. Ik heb ook al de diverse spaties weggehaald maar zonder resultaat. Ik zag dat ik de Hoofdletter V bij volume was vergeten maar ook dat geeft geen resultaat.
Nogmaals (zie bijlage) ik denk dat het bij mij echt Volume 1 is. Dus met Hoofdletter V en spatie tussen Volume en 1. Verder heb ik de directory volledig gekopieerd. M.a.w. ook daar moeten de hoofdletters en spaties goed staan. Zowel aangevuld met de opties /* -exec rm {} \; als  ook met /* -mtime +$((60*24)) –exec rm {} \; en /* -mtime +20 –exec rm {} \; geeft dit geen resultaat.
Ik heb de taakplanner in de SS geopend. Daarna via Maken- Geplande Taak en Door gebruiker gedefinieerde script het ik de taak aangemaakt. Daartoe heb ik als Gebruiker gekozen voor admin, Planning op dagelijks en in het Veld Door de gebruiker gedefinieerde script bijv. find/Volume1 /Hikvision opname/camera 1/* -exec rm {} \;  gekopieerd. Daarna heb ik deze taak geselecteerd en op uitvoeren gedrukt. In de betreffende directory is dan niks gebeurd. Als ik hierna de taakregel nog eens selecteer en via Actie - Resultaat bekijken het beschouw levert dat voor mij drie vraagtekens op (zie bijgevoegd bestand Resultaat uitvoeren).  Er gaat  dus zeker wat fout. Ik ben hierin helaas een groentje. Heb jij enig idee of heb jij een eenvoudig script om e.e.a. uit te sluiten/ te testen?

Thx
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Briolet op 10 december 2016, 11:36:03
Citaat
…ik denk dat het bij mij echt Volume 1 is. Dus met Hoofdletter V en spatie tussen Volume en 1.…

In het "volume1" zit echt geen spatie. Verder mag je geen spaties in een script gebruiken als het een filenaam of pad betreft. Je moet de spatie dan laten vooraf gaan door een escape karakter. Lees je nog wat verder in, in de linux syntax als je een script wilt schijven. Want een script van slechts één regel is bij mij geen moeilijk script, zoals je elders schrijft.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 10 december 2016, 12:12:04
Het is NIET Volume 1 en NIET Volume1 het IS volume1 zoals ik ook in het script heb aangegeven, nogmaals dan:

Citaat
find /volume1/sharedmap/tvserie/seizoen/*.1.mkv -mmin +$((60*24)) -exec rm {} \;

Kijk in PuTTY, de mount is volume1 en daar kijkt het script naar en niet wat je in je browser ziet.
Browser:
[attachimg=2]

PuTTY (Linux):
[attachimg=1]

Mappen MET spaties zet je tussen quotes: "Map met spaties"
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 10 december 2016, 12:25:10
gedefinieerde script bijv. find/Volume1 /Hikvision opname/camera 1/* -exec rm {} \;  gekopieerd.
is ook helemaal fout dus, jouw voorbeeld moet zijn:
Citaat
find /volume1/"Hikvision opname"/"camera 1"/* -exec rm {} \;

Citaat
Heb jij enig idee of heb jij een eenvoudig script om e.e.a. uit te sluiten/ te testen?
Je kunt testen op de Command Line in PuTTY (http://www.synology-forum.nl/algemeen/nas-benaderen-met-ssh-winscp-putty/):

Dus jou voorbeeld weer gebruikende:

[attachimg=1]

Titel: Re: Automatisch verwijderen bestanden
Bericht door: 53Starter91 op 10 december 2016, 13:24:39
Poe :'(, ik durf bijna niet meer te reageren. Vind mijzelf zelfs geen groentje maar meer een zaadje wat dit betreft. Desalniettemin heb je mij al weer een heel eind op pad geholpen. Om te testen heb ik op de SS een directory TEST aangemaakt en daaronder een directory Oud bestand (Expres getest met hoofdletters en spaties). Als eerste het script find /volume1/TEST/* -exec rm {} \; geprobeerd. En ja hoor Bij resultaat bekijken stond bij Huidige status: Normaal (0). Geen fouten dus en alle eerder geplaatste bestanden weg; zowel uit de directory TEST als Oud Bestand. :) Hierna nieuwe bestanden met een datum ouder dan 10 dagen geplaatst en het script find /volume1/TEST/* -mtime +10 -exec rm {} \; geprobeerd. Ook dit was succesvol. :thumbup:
Toen alleen in de directory Oud bestand bestanden met een datum ouder dan 10 dagen geplaatst. Toen het script laten draaien op alleen deze directory met jouw aanbeveling van de aanhalingstekens ("). Script was daarbij find /volume1/TEST/”Oud bestand”/* -mtime +10 -exec rm {} \; Daar gaat het nog fout. Bij resultaat bekijken stond bij Huidige status: Onderbroken (1). Conclusie is dus dat het fout gaat bij een directory met een spatie in de naam. De "-tekens lossen het niet op. Ik las nog ergens dat '-tekens ook zou kunnen, maar ook dat werkt niet.  :twisted:
Tja...
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Ben(V) op 10 december 2016, 14:08:38
Je moet de hele filespecs tussen apostrofs zetten.
Dus zo:
Citaat
find '/volume1/TEST/Oud bestand/*' -mmim +10 -exec rm {} \;

Houd je er wel rekening mee dat die +10 maar 10 minuten betekent en niet 10 dagen.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 10 december 2016, 14:12:12
Citaat
Conclusie is dus dat het fout gaat bij een directory met een spatie in de naam.
Foute conclusie, heeft er niets mee te maken, je gebruikt -mtime (i.p.v. -mmin), mappen met spatie tussen quotes werkt gewoon.

Heb dus maar even getest voor je:

[attachimg=1]

En jij wilt -mtime gebruiken ? Prima hoor, wat jij wilt maar, dan werkt het dus ook anders, voorbeeld:

[attachimg=2]

Bij mtime telt alleen hele dagen (dus, doet afronden op hele dagen) en als je groter dan wilt moet je nog eens -1 dag doen dus, wordt het -mtime +9

Doe je het dan op mijn manier dus met -mmin, dan wordt het exact en niet afgerond.

[attachimg=3]


Snappie ?
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Briolet op 10 december 2016, 14:27:56
Citaat
Je moet de hele filespecs tussen apostrofs zetten.

Of het escape karakter "\". gebruiken voor de speciale tekens zoals een spatie.

find /volume1/TEST/Oud\ bestand/* -mmim +10 -exec rm {} \;
Maar ik moet toegeven dat apostrofs het leesbaarder houden.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: 53Starter91 op 10 december 2016, 14:33:07
MOD: Niet onnodig (alles) quoten.

Ik word er moedeloos van, heb alles geprobeerd. Zou je bereid zijn middels teamviewer mee te kijken?
Titel: Re: Automatisch verwijderen bestanden
Bericht door: 53Starter91 op 10 december 2016, 14:55:41
Dit werkt:   find /volume1/TEST/* -mtime +10 -exec rm {} \;                             
Dit werkt:   find /volume1/TEST/"Oud bestand"/* -exec rm {} \;           

en de combinatie: find /volume1/TEST/"Oud bestand"/* -mtime +10 -exec rm {} \;             werkt nu eindelijk ook. Lijkt dus goed te gaan komen. Waarom het eerder niet werkte is voor mij een raadsel. Allen hartelijk bedankt.

PS Putty is voor mij nog echt een brug te ver. Is er ergens een nederlandse uitleg?
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 10 december 2016, 15:28:41
Had je al een link gegeven over PuTTY echter, je kent geen Linux, ben ik inmiddels wel achter dus, wel een beetje gevaarlijk.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: 53Starter91 op 10 december 2016, 15:55:36
Had je al een link gegeven over PuTTY echter, je kent geen Linux, ben ik inmiddels wel achter dus, wel een beetje gevaarlijk.

Ja ik had Putty zelf al gedownload maar echt nog een brug te ver. Heb denk ik ook een idee waarom het nu wel ineens werkte. Schijnbaar is er een verschil tussen aanhalingstekens. Je hebt blijkbaar “  en ". Het ene teken komt van mijn toetsenbord en het andere uit het voorbeeld wat ik van het forum had gekopieerd.
Ga toch kijken voor wat Putty leesvoer voor tijdens de kerst ;)
Nogmaals bedankt.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 10 december 2016, 15:56:57
Dat is een heel verschil in Linux: “  en "  :lol:
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Briolet op 10 december 2016, 17:10:00
En daarom moet je ook een code editor gebruiken. Bij gewone teksteditors wordt een ingetikte " soms ongemerkt in een ” veranderd. Is mij ook wel eens gebeurd.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Ben(V) op 10 december 2016, 19:56:38
Een ' gebruiken in plaats van " voorkomt ook veel verwarringen.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Briolet op 10 december 2016, 20:29:59
Kent shell script ook een rangorde in quotes, zoals in JavaScript? Daar kun je ook enkele en dubbele quotes gebruiken voor een string.

Als je dan een quote in de string wilt hebben, moet je de string van de andere quote voorzien.  b.v.:
string1="It's five o'clock!";
string2='<A HREF="index.htm">';
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Gunmen13 op 04 november 2018, 01:20:42
Ik ben net nieuw hier en heb eigenlijk een account aan gemaakt om hier op te reageren ik zou namelijk graag willen vragen of jullie me kunnen helpen. Ik heb zelf een NAS gebouwd. Hier op heb ik sinds vandaag een camera aangekopeld en ik wil dat het beeld matriaal dat ouder is dan 30 dagen wissen. Ik snap alleen niet helemaal hoe je het in zou moeten stellen welke map hij wist. in de map heb ik twee mappen staan met film en foto's van de camera. In beide moet dit worden gedaan. Alvast bedankt voor jullie hulp.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 04 november 2018, 14:42:41
Citaat
Ik heb zelf een NAS gebouwd.
Interessant, wat voor een Synology NAS heb je zelf gebouwd ?
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Gunmen13 op 05 november 2018, 15:47:15
Geen synology. Maar eentje van mijn oude pc.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Birdy op 05 november 2018, 15:53:45
O....nou....dit is een Synology Forum, misschien moet je maar naar een Linux Forum gaan.
Titel: Re: Automatisch verwijderen bestanden
Bericht door: Briolet op 05 november 2018, 16:13:15
Afgezien daarvan: Het antwoord stond toch al in dit draadje? Gewoon teruglezen en niet alleen de titel lezen.