🚮 Dateien löschen die älter als ein Tag sind

Begonnen von Torxgewinde, 24 März 2025, 07:29:20

Vorheriges Thema - Nächstes Thema

Torxgewinde

Hallo,
Mal ein ganz simpler Snippet um täglich einen Ordner von alten Dateien zu befreien, sprich um Dateien die älter als ein Tag sind zu löschen (Ein at-Device hätte es auch getan, aber ich bevorzuge DOIF):

⚠️ Vorsicht bei der Wahl des Ordners, der Befehl löscht alles was älter als ein Tag ist ⚠️

defmod TaeglichTimer DOIF ([00:00:01])\
({for my $file (glob "/opt/fhem/www/SVGcache/*") { if (-f $file && -M $file > 1) { Log(1, "TaeglichTimer: Deleting: $file");; unlink $file or Log(1, "TaeglichTimer: Failed to delete $file: $!");; }}})\

attr TaeglichTimer do always

betateilchen

Änderungen auf Betriebssystemebene (z.B. multiples löschen von Dateien oder Verzeichnissen) mache ich immer auf Betriebssystemebene mit einem cronjob.

find /tmp/* -mtime +7 -exec rm {} \;
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

yersinia

find kann auch ohne übergabe an rm löschen:
find /tmp/* -type f -mtime +7 -deleteMan kann mit type noch weiter einschränken (hier file)
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

betateilchen

Ja, mein code sollte auch nur ein Beispiel sein, wie man Dateiaktionen auf Betriebssystemebene mit "älter als" umsetzen kann, rm war halt das aktuelle Beispiel. Man kann aber auch andere Befehle aufrufen, was dann mit find selbst nicht mehr geht. Ich nutze sowas zum Beispiel, um Dateien in einen S3-Speicher zu verschieben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DeeSPe

Aus dem FHEM Sonos Wiki benutze ich:
find /opt/fhem/SonosSpeak -name "RINCON*" ! -atime -5 -deleteum die Sprachausgabedateien zu löschen die länger als 5 Tage nicht benutzt wurden.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Torxgewinde

Danke für die Ideen.

Ein Vorteil, solch einen Aufräumvorgang in FHEM zu starten, ist die Möglichkeit, Logeinträge dazu zu haben und/oder sich eine Pushnachricht zu senden. Das ist besonders nützlich, wenn man den Vorgang regelmäßig ausführt. Im Gegensatz zu interaktiven Shell-Befehlen, bei denen man oft keine Logs hat, bietet FHEM eine bessere Möglichkeit zur Protokollierung und Wiederauffindbarkeit. Außerdem ist es praktischer, den Vorgang in FHEM zu integrieren, anstatt einen zusätzlichen crontab-Eintrag zu erstellen, insbesondere wenn man längere Zeit nicht auf der Shell des Servers aktiv ist.

CoolTux

Da hier unterschiedliche Methoden gezeigt werden. Hier mal ein Ansible Playbook um das FHEM Backup-Verzeichnis auf zu räumen.

- name: Cleanup backup directory's at fhem servers
  hosts: fhemserver
  become: true
  gather_facts: false
  vars:
    fhembackuppath: /opt/fhem/backup
    olderthan: 7d
  tags:
    - cleanbackup-fhemserver
  tasks:
  - name: clean up the "{{ fhembackuppath }}" - delete files older than "{{ olderthan }}"
    block:
    - name: find all files that are older than "{{ olderthan }}"
      find:
        paths: "{{ fhembackuppath }}"
        age: "{{ olderthan }}"
        recurse: no
      register: filesOlderThan
    - name: remove older than "{{ olderthan }}"
      file:
        path: "{{ item.path }}"
        state: absent
      with_items: "{{ filesOlderThan.files }}"

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net