Cronjob zum Löschen bestimmter Daten

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

fummupha

Benutzer
Registriert
19. Okt. 2013
Beiträge
53
Reaktionspunkte
0
Punkte
0
Hallo zusammen, ich hätte gerne einen Cronjob im AUFGABENPLANER angelegt, der mir in einem Ordner X (und allen Unterordner) Daten mit einer bestimmten Dateiendung löscht. In meinem Fall wären das alle .gif und .png Files. Kann mir da freundlicherweise jemand mit dem Code helfen?! Das wäre toll. Vielen Dank!
 
Hallo,

hier das Script:

Rich (BBCode):
#!/bin/sh 
# 
find /pfad/zu/den/dateien \( -name "*.png" -o -name "*.gif" \) -exec rm {} \;

Du solltest vielleicht das "rm" durch "echo" ersetzen und das erstmal auf der Kommandozeile testen ob das Ergebnis deinen Erwartungen entspricht.

Gruß Frank
 
Wow! Wahnsinn! Funktioniert! Wenn ich eine dritte Dateiendung hinzufügen möchte sieht das dann so aus?

Rich (BBCode):
#!/bin/sh 
# 
find /pfad/zu/den/dateien \( -name "*.png" -o -name "*.gif"  -o -name "*.eps" \) -exec rm {} \;

Oder wäre es umgekehrt einfacher zu sagen, alle dateien löschen außer JPG, TIFF und PSD?


Danke für die Hilfe!
 
Völlig korrekt.

Ich wäre immer vorsichtig mit -alles löschen- in Automatismen. Lieber die Kontrolle behalten was genau gelöscht wird.

Gruß Frank
 
Sehr gute Antwort :) Ist der Code dann so richtig für weitere Dateiendungen?

Rich (BBCode):
#!/bin/sh 
# 
find /pfad/zu/den/dateien \( -name "*.png" -o -name "*.gif"  -o -name "*.eps" \) -exec rm {} \;
 
Danke! Ach was man alles machen könnte, wenn man sich damit auskennt. Gibt es irgendwo eine Art SYNOScripting for Dummies :) ? Ich würde das auch gerne ein wenig lernen?! Vielleicht kannst Du mir noch ein letztes Mal helfen? Hab mir überlegt, dass ich die Daten vielleicht nicht lösche, sondern in einen anderen Ordner verschiebe? Wäre für den Code sehr dankbar :)

Daaaaaaaanke!
 
Also um sich in diesem Bereich Wissen anzueignen brauchst Du dich nur mit Linux auseinander zu setzen. Da gibt es soviel, das ich da nicht mal was empfehlen möchte. Kann man ja auch im Netz finden. Einen Teil zur Kommandozeile findest auch im oben verlinktem Wiki. Zu den einzelnen Befehlen kannst Du bei den meisten Befehlen auch eine Hilfe durch den Parameter --help erhalten.

Den Anfang kannst Du ja schon mal mit

Rich (BBCode):
cp --help

machen. 'cp' wäre der Befehl zum kopieren. :)
Entsprechend brauchst Du obiges Script ja nur abwandelt. Hier wird ja der Befehl rm für das löschen aufgerufen. Das könnte auch cp sein.

Gruß Frank
 
Ok, ist wohl nicht ganz so einfach :( Hilfst Du mir noch ein letztes Mal mit

Kopiere Daten mit der Endung .png und .gif aus Ordner A (inkl. aller Unterordner) in den Ordner B

?!
 
Wenn Du immer sofort aufgibst und nicht eventuell auch mal was googlest und testest wird das wohl nichts mit dir und dem scripten.

Hier ein einfaches Beispiel:
Rich (BBCode):
find /pfad/zu/den/dateien \( -name "*.png" -o -name "*.gif"  -o -name "*.eps" \) -exec cp -t /pfad/zum/zieldir {} \;

Gruß Frank
 
ja, sorry. dafür bin ich jetzt gewaltig am probierenl passiert nämlich nichts mit dem skript ;( hab anstatt cp auch mal mv versucht, ist aber auch nichts. naja, werde ich jetzt mal herumprobieren...
 
puuuh ;( ich bekomm das nicht gebacken (war die Nacht über bis 7 Uhr am probieren...). habs mit mv versucht, tut sich aber nichts. ich möchte einfach nur Daten mit dem Suffix JPG und EPs aus dem Ordner a (inkl aller unterordner) in den Ordner b verschieben ;(

wäre ein schönes Weihnachtsgeschenk ;)
 
puuuh ;( ich bekomm das nicht gebacken (war die Nacht über bis 7 Uhr am probieren...). habs mit mv versucht, tut sich aber nichts. ich möchte einfach nur Daten mit dem Suffix JPG und EPs aus dem Ordner a (inkl aller unterordner) in den Ordner b verschieben ;(

wäre ein schönes Weihnachtsgeschenk ;)
verstehe ich nicht, der Command von fpo4711 müsste passen (tut bei mir auf CentOs einwandfrei).
Kann es sein, dass deine Dateiendungen mit Gross-Schrift enden. Also .JPG - so wie du eben hier geschrieben hast!?

Dann könntest du es auch mit "-iname" anstelle "-name" versuchen. (Ignore Lower-/Upper case)

z.B das hier macht bei mir genau sinngemäss was es soll.
find /home/oliver/Desktop \( -iname "*.jpg" -o -iname "*.zip" \) -exec cp -t /tmp {} \;

Gruss
oliver
 
Ich möchte mal behaupten der häufigste Fehler sind Tippfehler. Deshalb bitte noch mal genau prüfen. Jedes Zeichen zählt. Gern werden die schliessenden Anführungszeichen vergessen.

Um zu prüfen ob "find" etwas findet kannst Du in der Zeile "cp" einfach durch "echo" ersetzen. Dann werden dir die entsprechenden Dateinamen ausgegeben. Und zu letzt ist der Zielordner vorhanden bzw. hat dein Benutzer auch Zugriff?

(war die Nacht über bis 7 Uhr am probieren...)

Und über mangelndes Engagement beschwere ich mich bei Dir bestimmt nicht mehr. :)

Gruß Frank
 
Danke Oliver und Frank! Ich hab auch schon an ein Rechteproblem gedacht?! Aber als Admin komm ich doch im DSM überallhin, oder?
Ich bin als Admin in dem Ordner aber zu schreiben und lesen berechtigt. Habe ich gerade nochmal geprüft.
Das Skript steht so in meinem Aufgabenplaner:

Rich (BBCode):
#!/bin/sh 
# 
find /volume1/ag/Sync \( -iname "*.jpg" -o -iname "*.png" \) -exec mv -t /volume1/ag/Fotos {} \;
Ich teste das Skript dann via Aufgabenplaner > Ausführen. Funktioniert mit allen anderen Skripts
wunderbar. Nur hier bewegt sich nichts ;( jpg-Dateien wären ausreichend vorhanden ;(
 
Das Beispiel ist ein Script. Im Aufgabenplaner solltest Du keine kompletten Scripte eintragen. Lege eine Datei mit dem oben beschriebenen Inhalt an z.Bsp. unter /volume1/public/meinscript.sh

Dann trage im Aufgabenplaner ein

Rich (BBCode):
sh /volume1/public/meinscript.sh

und alles ist chic.

Gruß Frank
 
Leider nicht schick ;( Passiert genau so viel. Die anderen Skripts funktionieren aber auch wenn ich sie direkt in den Aufgabenplaner eintrage und nicht auf ein .sh auf der DS verweise?! :( Ich verstehe das nicht :( Das Skript oben sieht richtig aus?
 
Ich habe gerade in dem Ordner folgendes Skript getestet:
Rich (BBCode):
#!/bin/sh 
# 
find /volume1/ag/Sync \( -name "*.spk" -o -name "*.txt" -o -name "*.svg" -o -name "*.eps" \) -exec rm {} \;

Als Skript so wie es ists im Aufgabenplaner laufen lassen, funktioniert einwandfrei. Löscht die oben gewünschten Daten. Nur das Verschieben funktioniert nicht?! Ist doch komisch. Kann dann eigentlich keine Rechtegeschichte sein, oder?
 
Hallo,

Asche auf mein Haupt. Hab dich hier in eine Falle laufen lassen, die natürlich gleich als Beispiel gelten kann. In den Scripten sollte man immer die kompletten Pfade zu den Befehlen eingeben. Bei mir war etwas mehr installiert weshalb hier cp den Parameter -t kannte. Die Synology Variante kennt das nicht. Hier wäre dann der korrekte Aufruf:

Rich (BBCode):
#!/bin/sh 
# 
/usr/bin/find /volume1/ag/Sync \( -iname "*.spk" -o -iname "*.txt" -o -iname "*.svg" -o -iname "*.eps" \) -exec /bin/cp {} /volume1/ag/Fotos \;

Entschuldige bitte wenn ich dich hier in so eine Falle geschickt habe.

Gruß Frank
 
Woohoo! Danke das läuft! Wunderbar!

So meine nächste Lektion. Alle Unterordner des Ordners X, welcher keine PSD oder TIFF Daten enthält löschen.
Mal sehen wie lange die Nacht heute wird.

Danke für das Weihnachtsgeschenk :)

Grüße, Florian
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat