plonk
Goto Top

Daten zeitgesteuert per Script loeschen

Hallo,
hier gleich meine erste Frage:

Wir haben hier ienen MACOSX Server 10.4, auf diesem Server ist eine RAID Level 5 verbunden auf dem Daten liegen, nun möchte ich gerne das der Server automatisch alle DAten löscht die älter als 2 Monate sind.

Das heisst das muss täglich automatisch laufen, da ich kein GEld für ein Programm ausgeben will, das das lösen kann ist meine Frage, geht das irgendwie per Apple Script ?

Grüsse
PLONK

Content-ID: 25264

Url: https://administrator.de/contentid/25264

Ausgedruckt am: 24.11.2024 um 16:11 Uhr

cykes
cykes 06.02.2006 um 07:04:30 Uhr
Goto Top
Hi,

ich kenn mich zwar mit AppleScript nicht wirklich aus, da meines Wissens nach MacOS X auf
einen Linux Kernel aufbaut, kann man das auch über ein recht simples Shell-Script
lösen.

Folgenden Code in eine Textdatei speichern (Name beliebig, z.B. "DELscript").
In diesem Beispiel heisst das Verzeichnis, in dem sich die Daten befinden /daten
dies dann bitte im Script unten entsprechend anpassen:

---Code DELscript---

#/bin/sh
find /daten -type f -mtime +60 | xargs rm -f

---Ende Code DELscript---

(also nur die beiden Zeilen in der Textdatei. Das ganze bitte als Admin, root oder zumindest
einem User, der auf dem Server volle Zugriffsrechte auf die Dateien unter /daten hat machen)
Dieser Textdatei müssen noch die Rechte Ausführbar gegeben werden, das funktioniert so:

chmod 700 DELscript

(wenn man sich auf der Kommandozeile/Shell im Verzeichnis, wo das DELscript liegt, befindet)

Danach erstellt man einen zeitgesteuerten Task mittels des cron(tab) Befehls,
dazu muss der (Unix) cron natürlich installiert sein...
Zunächst muss eine passende cron Datei erstellt mit einem Texteditor erstellt werden:
(Ich habe die Datei hier beispielsweise mal "DELcron" genannt, diese führt das DELscript in diesem Beispiel jeden Tag um 23:00 Uhr aus)

---"Code" DELcron---

SHELL=/bin/sh
0 23 * * * /Pfad_zum_DELscript/DELscript

---Ende DELcron---

Auf der Shell dann folgendes eingeben:

crontab DELcron


Das war's, nun sollten jeden Tag im Verzeichnis /daten alle Dateien die älter als 60 Tage sind,
gelöscht werden.

Gruss

cykes
PLONK
PLONK 06.02.2006 um 12:06:30 Uhr
Goto Top
Hallo,
danke für die Hilfe, aber ich werde wohl auf Apple Script bleiben müssen, da ich von diesem CronJob Zeugs leider überhaupt keine Ahnung habe.
cykes
cykes 06.02.2006 um 15:03:06 Uhr
Goto Top
Hi,

vielleicht hilft Dir diese Seite, dort gibt es kostenfreie AppleScript eBooks:

http://www.computer-books.us/applescript.php

Gruss

cykes
PLONK
PLONK 06.02.2006 um 18:35:49 Uhr
Goto Top
Hallo Cykes,

nun komm ich dochwieder auf die Cron Jobs zurück. Nach einigem suchen im Netz bin ich auf das Freeware Programm CronniX für den Mac gestossen.
Damit kann ein sogenannter "cron-job" eingerichtet werden, welcher zu bestimmten Zeiten eine definierte Aktion auslöst, z.B. das Löschen von Dateien.

Leider habe ich keine Ahnung was ich bei der Kommandozeile des Programms eingeben muss, damit die Daten die ich löschen will gelöscht werden.

Vielleicht kannst Du mir da noch nen Tipp dazu geben.

Hier der Link zum Programm:
http://h5197.serverkompetenz.net:9080/abstracture_public/projects-en/cr ...

mfg
PLONK
cykes
cykes 06.02.2006 um 19:20:42 Uhr
Goto Top
Das programm kenn ich nicht, aber was ich Dir oben beschrieben habe macht
genau das, und das ohne Zusatzsoftware.
Wenn Du der Anleitung folgst, sollte das so funktionieren.

Gruss

cykes
PLONK
PLONK 07.02.2006 um 13:53:23 Uhr
Goto Top
So, nochmal Hallo

und an alle die veilleich einmal das gleiche auf dem mc realisieren wollen hier die Lösung mit dem obenbeschriebenen Programm CroniX:

Hier ist das Apple Script, welches die Dateien, die älter als zwei Monate sind aus dem bestimmten Ordner entfernt. Der Einfachheit halber wird eine fixe Zahl benutzt, nämlich 5270400. Das ist die Anzahl Sekunden von 61 Tagen.

-- die Variable 'targetFolder' als 'property' definieren, damit der Pfad zum Ordner gespeichert bleibt
property targetFolder : ""

-- prüfen, ob der Ordner existiert
-- wenn nicht, den Anwender auffordern, einen Ordner zu wählen
try
targetFolder as alias
on error
set dR to button returned of (display dialog "Der Zielordner ist nicht bestimmt." buttons ¬
{" Abbruch ", "Bestimmen"} default button 2 with icon 2)
if dR = "Bestimmen" then
with timeout of 300 seconds
set targetFolder to (choose folder with prompt "Den zu überwachenden Ordner wählen.") as Unicode text
end timeout
else
error number -128
end if
end try

-- der Variablen 'curDate' das aktuelle Datum zuweisen
set curDate to current date
-- die Objekte des Zielordners auflisten (= nur die Namen)
set fileList to list folder targetFolder without invisibles
-- eine Wiederholungsschleife durch diese Liste
repeat with i from 1 to count of fileList
-- den Pfad zum aktuellen Objekt zusammensetzen
set curFileto targetFolder & item i of fileList
-- die Infos für dieses Objekt verlangen
set fileInfo to info for file curFile
-- falls es sich nicht um einen Ordner handelt ...
if folder of fileInfo is false then
-- ... der Variablen 'modDate' das Änderungsdatum der Datei zuweisen
set modDate to modification date of fileInfo
-- wenn der Unterschied zwischen aktuellem Datum und
-- dem Änderungsdatum grösser als 5270400 Sekunden ist ...
if (curDate - modDate) is greater than 5270400 then
-- den Finder bitten, die Datei zu entfernen
try
tell application "Finder" to delete file curFile
end try
end if
end if
end repeat
---
Dieses Script als Programm sichern und einmal ausführen, damit der Pfad zum überwachten Ordner
gespeichert ist. Dann mit "CronniX" Den 'crontab' editieren, das Script eintragen, den 'crontab'
sichern und "CronniX" beenden.

Auf die eingestellte Zeit wird das Script ausgeführt. Habe es eben erfolgreich getestet. face-smile
Diese Antwor habe ich übrigens in einem anderem Forum bekommen, ich möcht mich nämlich nicht mit fremden Federn schmücken.


mfg
PLONK
Biber
Biber 08.02.2006 um 21:28:31 Uhr
Goto Top
ich möcht mich nämlich nicht mit fremden Federn schmücken..
Na, dafür geb ich Dir fünf Federn... gib mal ein paar davon weiter ins andere Forum face-wink

Gruß Biber