Dateien löschen via "Script" bei Systemstart

Status
Für weitere Antworten geschlossen.

naase

Benutzer
Mitglied seit
13. Okt 2008
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen

wäre es möglich ein Skript auf die DS zu installieren mit welchem bei jedem Start der DS zB. im Ordner Backup\test\client01 alle Dateien die älter als zB. 14 Tage sind zu löschen?

Hintergrund sind Backups respektive inkementelle Backups von PC's die wenn älter als 14 Tage nicht mehr benötigt werden und nur die HD füllen...

Ich weis das man das ganze auch am PC mit VBS-Skript machen könnte, fände aber eine Lösung direkt auf der DS viel eleganter.

Wäre cool wenn das funktionieren würde, ich habe aber leider keine Ahnung wie das realisiert werden kann..

DS 107+ DSM 2.3-1141

Danke für Eure Antworten
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Code:
find /volume1/test -ctime 14 | xargs -n 1 ls -al
setzt allerding voraus, dass ipkg findutils installiert sind
Wenn du sicher bist, dass keine "falschen" Dateien erwischt werden, kannst du den Code auch mal "scharfmachen"
Code:
find /volume1/test -ctime 14 | xargs -n 1 rm
Schau auch mal ins Manual von find
 

naase

Benutzer
Mitglied seit
13. Okt 2008
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Danke für die schnelle Antwort...

Muss mich wohl zuerst noch schlauer machen wo ich findutils finde :confused: und wie ich das ganze paket installiere aber das wird sicher in einem anderen Thema bereits beschrieben sein

Bin kein grossartiger Linux kenner, habe nur diverse Versuche mit Suselinux gemacht...

eventuell hast Du einen link zu einer Beschreibung?;)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Unser Wiki weiss viel über ipkg und dessen Installation
 

naase

Benutzer
Mitglied seit
13. Okt 2008
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Danke Jahlives

ich habe IPKG installiert weis aber nicht ob es die neuste Version war denn update gemäss WIKI hat nicht funktioniert.

mit Telnet funktioniert jetzt der Befehl find...

sobald ich aber eine "Expression" eingebe reklamiert der Befehl.

Bsp: find /volume1/Backup/Computer/Client06

zeigt mir alle Files in diesem Ordner an aber:

find /volume1/Backup/Computer/Client06 -ctime 5

zeigt:Usage: find [PATH...] [EXPRESSION]

ich weis nicht warum...dies sollte doch alle Files zeigen die älter als 5 Tage sind.

Ich bin wohl doch zu doof.

Falls die Abfrage dann funktioniert, wo repektive wie muss ich das File abspeichern dass das Script beim starten der DS ausgeführt wird?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hast du mal folgendes probiert?
Code:
ipkg install findutils
erst mit der ipkg Version von find hast du die nötigen Parameter für find. Auch xargs wird afaik erst mit findutils installiert
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.016
Punkte für Reaktionen
272
Punkte
393
Hallo,
... denn update gemäss WIKI hat nicht funktioniert.
dann ist die IPKG Installation in die Hose gegangen.
Welches bootstrap hast Du verwendet?

Gruß Götz
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ist denn bei der Installation von bootstrap keinerlei Fehlermeldung aufgetaucht? Du warst auch sicher als root mit PW vom admin angemeldet?
 

naase

Benutzer
Mitglied seit
13. Okt 2008
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Typischer Anfängerfehler....
Ich habe mich als admin eingeloggt und nicht als root :rolleyes:
die Installation hat aber keine eigentliche Fehlermeldung gebracht anscheinend einfach nicht alles ausgeführt.

Die Installation hat jetzt geklappt und die find-Anfrage liefert mir das gewünschte Ergebnis.

Soweit alles in Ordnung

In welchem Verzeichnis und mit welchem Namen/Endung kann ich jetzt diese Abfrage speichern damit sie bei jedem Start der DS ausgeführt wird?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Start/Stop Scripte liegen entweder unter /usr/syno/etc.defaults/rc.d/SXXscriptname oder /opt/etc/init.d/SXXscriptname.sh Das Script muss ausführbar sein und sollten keinerlei Output erzeugen
Code:
#!/bin/sh
[FONT=Verdana]if test "$*" = 'start'; then[/FONT]
  find /volume1/test -ctime 14 | xargs -n 1 rm > /dev/null 2>&1
fi
Speichere das Script in einem der angegebenen Verzeichnisse und mach es mittels
Code:
chmod +x /path/to/script.sh
ausführbar. Ausgeführt wird es nur beim Start. Wenn du es auch beim Runterfahren ausführen willst, dann entferne das "if test ..." und das "fi" am Ende
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Vielleicht sollte man über das Konzept nachdenken. Eine DS ist ja eher dazu konzipiert, rund um die Uhr zu laufen, so dass man das Starten ja eher als eine Ausnahmen ansehen sollte. Deswegen würde ich ein 'Aufräum'-Skript eher vom crond in regelmäßigen Abständen ausführen lassen ...

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Vielleicht sollte man über das Konzept nachdenken. Eine DS ist ja eher dazu konzipiert, rund um die Uhr zu laufen, so dass man das Starten ja eher als eine Ausnahmen ansehen sollte. Deswegen würde ich ein 'Aufräum'-Skript eher vom crond in regelmäßigen Abständen ausführen lassen ...

Itari
Gutes Argument :)
 
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