Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Automatische Dateilöschung

Automatische Dateilöschung

iTüte
iTüte27.11.0922:01
Hallo zusammen,
ich würde gerne jeden Tag automatisch Dateien die älter als 6 Wochen sind aus einem Ordner löschen und das noch ohne sie in den Papierkorb zu werfen. Also direktes löschen. Ich wäre für Hilfe überaus dankbar... Achso... System ist ein 10.5 kein Upgrade möglich.
0

Kommentare

pb_user
pb_user27.11.0922:52
wie wäre es mit einem automator-script, warum du allerdings den papierkorb meiden willst, ist doch nur ein klickchen für ein wenig (selbst)kontrolle ...?
0
iTüte
iTüte28.11.0910:12
das S
ystem muss autag laufen... Das ist das Problem...
0
Wowbagger28.11.0910:33
Du kannst Dir selbst was basteln mit Automator und iCal, ist nicht sehr elegant, aber später leicht anzupassen (z.B. anderer Zeitraum, andere Kriterien).
Für Automator brauchst Du folgende Abläufe (ich glaube, die sollte es auch unter Leopard geben)
1. "Angegebene Finder-Objekte abfragen" - Dort fügst Du den entsprechenden Ordner hinzu.
2. "Ordnerinhalt abfragen" - Gibt die enthaltenen Dateien an die nächste Aktion weiter.
3. "Finder-Objekte filtern" - Hier definierst Du Deine Löschkriterien
4. "Shell-Skript ausführen" - Ändere bei "Eingabe übergeben" die Einstellung auf "Als Argumente"
und ändere das Musterskript ab:

for f in "$@"
do
    rm "$f"
done

"rm" kannst Du nach Bedarf auch mit "-rf" verwenden. Achtung! Wenn Du das Skript änderst, sei vorsichtig, dass Du nur die richtigen Dateien an das Shell-Skript übergibst, mit "rm" und besonders "rm -rf" kann man einigen Schaden anrichten, da eben direkt gelöscht wird.

Das Ganze speicherst Du als Programm, erstellst einen neuen Kalender in iCal und darin einen täglich wiederholten Termin. Bei "Erinnerung" wählst Du "Datei öffnen" und dann dein Programm.
Entfern dann noch den Haken beim Kalender, dann ist er ausgeblendet.

Wie gesagt nicht elegant, aber auch ohne fremde Hilfe zu ändern.
0
Wowbagger28.11.0910:35
So könnte das dann aussehen:
0
ts
ts28.11.0911:40
Alternative zu Automator wäre cron mit einem cronjob zu benutzen, der dann ein sh-Skript aufruft.
0
ExMacRabbitPro28.11.0911:47
ts
Alternative zu Automator wäre cron mit einem cronjob zu benutzen, der dann ein sh-Skript aufruft.

wenn, dann launchd statt cron.
0
_mäuschen
_mäuschen28.11.0911:48

Wenn schon eine Alternativ, dann mit launchd

0
Marcel Bresink28.11.0912:03
Wenn man keine zusätzlichen Hilfsmittel nutzt, ist cron aber wesentlich einfacher als launchd zu bedienen. Und cron kann über jeden Job-Aufruf oder aufgetretene Fehler per E-Mail berichten, wenn man das will.
0
sierkb28.11.0912:08
ts
Alternative zu Automator wäre cron mit einem cronjob zu benutzen, der dann ein sh-Skript aufruft.

Da cron seit MacOSX 10.4 funktionell durch launchd abgelöst worden ist bzw. seitdem unter MacOSX als "deprecated" (missbilligt) gilt, dann wohl eher launchd bzw. ein entsprechendes launchd-Skript, das dann meinetwegen benutzerspezifisch in ~/Library/LaunchAgents liegt...

Angelegt und konfiguriert werden kann so ein launchd-Skript z.B. prima mit dem Programm Lingon , welches dann dieses kleine Shell-Skript regelmäßig entweder beim Login, in gewissen Abständen oder zu bestimmten Uhrzeiten aufruft.

Bei einem Shell-Einzeiler kann ggf. auch auf das Skript verzichtet werden und dieser Einzeiler dann direkt als String-Argument in das betreffende launchd-Skript eingebaut werden.

Das Skript selber hier jetzt mundfertig vorzukauen (irgendwie muss ja das Datei-Alter von älter als 6 Wochen noch eingearbeitet werden), dazu bin ich grad' zu faul...
Andere Alternative: das launchd-Skript wird nur alle 6 Wochen aufgerufen und macht dann halt einfach ein rm -r des betreffenden Ordners bzw. der betreffenden Dateien...
0
sierkb28.11.0912:12
Marcel Bresink
Wenn man keine zusätzlichen Hilfsmittel nutzt, ist cron aber wesentlich einfacher als launchd zu bedienen. Und cron kann über jeden Job-Aufruf oder aufgetretene Fehler per E-Mail berichten, wenn man das will.

Da cron aber seit MacOSX Tiger von Apple als "deprecated" gilt, wissen wir alle nicht, wie lange Apple den cron daemon überhaupt noch zur Verfügung stellen wird.
Ich meine, ich hätte mal unlängst zu Leopard-Zeiten einen entsprechenden Kommentar in einer cron-Konfigurationsdatei von MacOSX (Leopard) gelesen, dass man da bitte möglichst nicht reinschreiben solle bzw. auf launchd wechseln solle, weil Apple sich vorbehalte, cron irgendwann komplett zu entfernen (könnte dann ja auch evtl. mal ohne Vorwarnung mit einem zwischenzeitlichen System-Update passieren, oder?)...
Z.B. finde ich unter Snow Leopard keine /etc/crontab mehr vor. Ist, glaube ich, seit Leopard so; Tiger hatte sie wohl noch.
0
ts
ts28.11.0912:30
Naja, zur Not könnte man z.B. auch fcron benutzen. Jedenfalls ist launchd momentan eine „Insellösung”.
0
sierkb28.11.0912:47
ts
Naja, zur Not könnte man z.B. auch fcron benutzen.

Wieso das? Wozu?
Vielleicht noch Ubuntus Upstart?
Jedenfalls ist launchd momentan eine „Insellösung”.

Wenn ich Apple und das Konzept von launchd bisher richtig verstanden habe, ist launchd alles andere als nur eine "Insellösung", sondern deutlich mehr und durchaus auch eine Richtungsvorgabe und Orientierung (was Konzept und Umsetzung angeht) für andere unixoide Systeme (Ubuntus Upstart z.B.)...

Wer unter MacOSX das Unix-System benutzt bzw. damit arbeiten will, der sollte sich meiner Meinung nach unbedingt mit launchd auseinandersetzen und sich damit anfreunden, statt es innerlich abzulehnen und stattdessen alte Zöpfe länger hoch zu halten, die nicht nur unter MacOSX langsam aber sicher ganz bewusst durch Neues ersetzt werden.


0
_mäuschen
_mäuschen28.11.0913:31

…back from lunch…


als Einzeiler


find folder -Btime 42 -exec rm -r {} \;


0
_mäuschen
_mäuschen28.11.0913:46
Marcel Bresink
Wenn man keine zusätzlichen Hilfsmittel nutzt, ist cron aber wesentlich einfacher als launchd zu bedienen. Und cron kann über jeden Job-Aufruf oder aufgetretene Fehler per E-Mail berichten, wenn man das will.

The launchd daemon is essentially a replacement for init, rc, the init.d and rc.d scripts, SystemStarter (Mac OS X), inetd and xinetd, atd, crond and watchdogd. Apple has stated that it intends to eliminate all of the aforementioned services in favour of launchd.

0
sierkb28.11.0913:50
_mäuschen:

Als Ergänzung für launchd:

Passendes launchd-Skript dazu (ein Vorschlag, mit Lingon grad' mal eben schnell erstellt):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.iTuete.rmFolder</string>
    <key>ProgramArguments</key>
    <array>
        <string>find</string>
        <string>~/MeinVerzeichnis</string>
        <string>-Btime</string>
        <string>42</string>
        <string>-exec</string>
        <string>rm</string>
        <string>-r</string>
        <string>{}</string>
        <string>\;</string>
    </array>
    <key>QueueDirectories</key>
    <array/>
    <key>RunAtLoad</key>
    <true/>
    <key>WatchPaths</key>
    <array/>
</dict>
</plist>

Wobei das launchd-Skript dann z.B. unter ~/Library/LaunchAgents/com.iTuete.rmFolder.plist liegt (Namen und Verzeichnsse bitte anpassen). Das Skript wird dann jedesmal beim Einloggen des Benutzers ausgeführt (RunAtLoad=true).

Bitte verbessern/ergänzen, wo Verbesserungs-/Ergänzungsbedarf besteht. Die vielen Strings des Skripts kann man sicher auch zusammenfassen, ich hab's erstmal so gelassen, wie es Lingon zusammenstellt (nach jedem Leerzeichen wird ein neuer String angefangen)
0
sierkb28.11.0914:00
_mäuschen:

Danke für den Einzeiler. Er lag mir bereits auf der Zunge, doch ein wenig für Dich wollte ich ja auch noch übrig lassen...

Ergänzug zu dem launchd-Skript:
Wahlweise meinetwegen auch so schreiben, dass es nicht beim Systemstart bzw. nach dem Login ausgeführt wird, sondern z.B. täglich um 12:00 mittags.

Dann wäre der betreffende Abschnitt:
    <key>RunAtLoad</key>
    <false/>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>12</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>

Kann man sich in Lingon alles prima zusammenklicken, Ausgabe ist dann eine solche XML-Datei.

Habe das Skript jetzt nicht ausprobiert, ob's tatsächlich läuft. Ausprobieren.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.