Script zum Löschen von Dateien und Orndern

Status
Für weitere Antworten geschlossen.

stefan2600

Benutzer
Mitglied seit
08. Jul 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Hallo @ all,

ich betreibe eine DS als Syslog Server. Dort werden Netzwerkaufzeichnung für jeden Tag gespeichert. Es gibt also einen Orndern mit vielen Unterordnern wo Dateien abgelegt sind. Jetzt würde ich gernen jeden Tag automatisch prüfen lassen, ob dort Dateien und Ordner enthalten sind die älter als 14 Tage sind und diese dann automatisch gelöscht werden. Über PHP habe ich das auf meinem Webserver laufen, für die DS bekomme ich leider kein Script hin, welche das realisiert.

Wäre echt super, wenn ihr mir helfen könntet.

Vielen Dank für Eure Hilfe

Stefan Knöbel
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.027
Punkte für Reaktionen
2.527
Punkte
829
Willkommen im Forum!

Bei Verzeichnissen wäre ich vorsichtig, aber für Dateien müsste das z.B. mit

Rich (BBCode):
find <Pfad> -type f -mtime +14 -exec rm -f {} \;

gehen. Bitte den Pfad durch den Wurzelpfad ersetzen, bei dem mit der Suche gestartet werden soll. Und natürlich erstmal mit Testdaten ausprobieren.
 

stefan2600

Benutzer
Mitglied seit
08. Jul 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Hallo dil88,

geht so leider nicht, ich habe in der Systemsteuerung Aufgabenplanung einen Task angelegt und benutzerdefiniertes Script ausgewählt. Bei Aufgabe dann find /volume1/Logfiles/ -type f -mtime +14 -exec rm -f {} \; eingetragen. Hinter Logfiles habe ich auch mit und ohne / probiert. Leider wird nichts gelöscht. Vielleicht noch eine Info dazu, das Änderungsdatum ist immer ein aktuelles, nur das Erstellungsdatum ist ein anderes.

Gruß

Stefan
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.027
Punkte für Reaktionen
2.527
Punkte
829
Finde bitte einmal mittels einer Shell und des Kommandos which den Pfad von find auf Deinem System heraus (which find). Den solltest Du im Aufgabenplaner ergänzen. Probiere es dann nochmal. Das Verzeichnis Logfiles wird mit großem L geschrieben?
 

stefan2600

Benutzer
Mitglied seit
08. Jul 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Äh, habe gearde große ????? Das Verzeichnis ist mit großen L geschrieben.
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.027
Punkte für Reaktionen
2.527
Punkte
829
Vielleicht kannst Du Deine Unklarheiten beschreiben, dann könnte ich versuchen zu helfen.
 

stefan2600

Benutzer
Mitglied seit
08. Jul 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Was meinst Du genau mit Shell und dem Komando wich? Wo kann ich in der DSM einen Shell befehl absetzen?
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.027
Punkte für Reaktionen
2.527
Punkte
829
Du aktivierst im DSM-Webfrontend ssh und verwendest dann ein passendes Programm - unter Windows z.B. putty.

Edit: Das Kommando dann bitte auch erstmal in der Shell testen, da siehst Du dann ggfs. Fehlermeldungen. Erst wenns dort funktioniert mit dem Aufgabenplaner weitermachen.
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.027
Punkte für Reaktionen
2.527
Punkte
829
Ok, dann bitte

Rich (BBCode):
/bin/find /volume1/Logfiles/ -type f -mtime +14 -exec rm -f {} \;

auf der Shell mit dem User root ausführen, wenn in Logfiles nichts liegt, was nicht verloren gehen kann. Ansonsten erstmal mit einem Testverzeichnis testen.
 

stefan2600

Benutzer
Mitglied seit
08. Jul 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Ne, geht leider immer noch nicht. In dem Ordner Logfiles sind nur Verzeichnisse vorhanden in denen Dateien liegen. Hat es damit was zu tun? Es müssten also in dem Ordner Logfiles die Ordner samt den Dateien in den Ordnern gelöscht werden.
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.027
Punkte für Reaktionen
2.527
Punkte
829
Das Skript löscht - wie eingangs gesagt - nur Dateien. Geschieht das? Wenn ja, dann können wir gern Verzeichnisse einschließen.
 

stefan2600

Benutzer
Mitglied seit
08. Jul 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
OK, also das scheint zu funktionieren. Die Ordner sind jetzt leer. Wenn jetzt noch die Ornder auch gelöscht werden, dann schließe ich Dich in mein Nachtgebet mit ein :)
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.027
Punkte für Reaktionen
2.527
Punkte
829
Sehr schön, dann probiere es bitte jetzt nochmal mit

Rich (BBCode):
/bin/find /volume1/Logfiles/ -mtime +14 -exec rm -rf {} \;
 

stefan2600

Benutzer
Mitglied seit
08. Jul 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Ordner sind noch da. Man könnte aber auch gerne 2 Tasks laufen lassen und nach leeren Orndern suchen und diese löschen lassen.
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.027
Punkte für Reaktionen
2.527
Punkte
829
Bei mir funktioniert das Kommando. Es liefert zwar eine Fehlermeldung, weil es nach dem Löschen versucht, in das Verzeichnis zu kommen, und es dann nicht mehr findet. Aber das Verzeichnis ist weg. Bist Du sicher, dass Du alles richtig übernommen hast und dass das Verzeichnis mehr als 14 Tage alt ist? Ansonsten ginge auch als zweites Skript zum Löschen leerer Verzeichnisse:

Rich (BBCode):
/bin/find /volume1/Logfiles/ -type d -empty -exec rmdir {} \;
 

stefan2600

Benutzer
Mitglied seit
08. Jul 2014
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
OK, das mit den leeren Ordnern geht wohl auch. Schon mal vielen vielen Dank für Deine Hilfe. Ich teste das ganze jetzt mal und sehe dann ob das so alles richtig läuft. Über die Aufgabenplanung könnte ich auch einen Reboot einpflegen, oder? So als Schutz, dass das System immer mal wieder neu gestartet wirde. Z.B. einmal die Woche. Reicht da bei Aufgabenplanung einfach reboot einzutragen?
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.027
Punkte für Reaktionen
2.527
Punkte
829
Das solltest Du nicht über den Aufgabenplaner machen. Dafür gibt es eine Funktion in den Energieoptionen.
 
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