Dateien mit internem Cronjob löschen

Prev Next

Sie können eine Klasse konfigurieren, die einen internen Cronjob (ohne Profil) erstellt, der alte Dateien löscht. Dafür gibt es eine ältere Klasse und eine leistungsfähigere neue Klasse. Gelöschte Dateien werden dauerhaft entfernt.

Legacy-Klasse

Bitte verwenden Sie für neue Entwicklungen die neue Klasse.

Aktivieren Sie folgenden Abschnitt in der Konfigurationsdatei ./etc/cron.xml. Hiermit wird ein Cronjob definiert, der alle 10 Minuten alte Dateien löscht.

...

<Call name="addJob">
	<Arg>
		<New class="com.ebd.hub.services.cron.CronJob">
			<Arg>Remove files</Arg>
			<Arg>
				<New class="com.ebd.hub.services.cron.DeleteFilesCronJob">
					<Set name="configFilename">./conf/sample_delete_cron_old.properties</Set>
				</New>
			</Arg>
			<Call name="setTimeSchedule">
				<Arg>
					<New class="com.ebd.hub.services.cron.Schedule">
						<Arg type="long">600000</Arg>
					</New>
				</Arg>
			</Call>
		</New>
	</Arg>
</Call>

...

Im Parameter configFilename ist der Pfad zu einer Properties-Datei anzugeben, die die spezifischen Einstellungen zum Löschen enthält.

# sample config for cron job to delete files within named directory
# define the entry folder to look for
directory=./tmp
# do this for sub folders within named directory as well
recursive=true 
# define file pattern for selecting files
file.pattern=*.tmp
# files older than 7 days are being removed
retain.days=7

Neue Klasse (DeleteFilesCronJobWithPathSupport)

Fügen Sie den folgenden Abschnitt in die Konfigurationsdatei ./etc/cron.xml ein.

...
<Call name="addJob">
    <Arg>
        <New class="com.ebd.hub.services.cron.CronJob">
            <Arg>Remove files</Arg>
            <Arg>
                <New class="com.ebd.hub.services.cron.DeleteFilesCronJobWithWildCardSupport">
                    <Set name="configFilename">./conf/sample_wildcard_delete_cron.properties</Set>
                </New>
            </Arg>
            <Call name="setTimeSchedule">
                <Arg>
                    <New class="com.ebd.hub.services.cron.Schedule">
                        <Arg type="long">600000</Arg>
                    </New>
                </Arg>
            </Call>
        </New>
    </Arg>
</Call>
...

Cron-Job-Name

Der Name des Cron-Jobs wird in der Klasse CronJob festgelegt. In diesem Fall lautet der Name “Remove files“.

Cron-Job-Intervall

Das Cron-Intervall wird in der Klasse Schedule in Millisekunden festgelegt. In diesem Fall: 600000 Millisekunden 10 Minuten.

Konfigurationsdatei

Die detaillierten Parameter der Klasse werden in einer Properties-Datei festgelegt, die im Parameter configFilename angegeben ist.

Beispiel 1:

directory=./var/logs
file.pattern=*.log
exclude.pattern=*.tmp;important/*
retain.days=30
recursive=true
verbose=false

Diese einfache Konfiguration ist abwärtskompatibel, was bedeutet, dass Sie die Properties-Dateien verwenden können, die Sie mit der alten Klasse verwendet haben.

Beispiel 2:

# Default/Global settings (optional fallback)
retain.days=30
recursive=true
verbose=true
# Path configuration 1
path.1.directory=./var/logs/application
path.1.pattern=*.log;*.txt
path.1.exclude=important/*;*backup*
path.1.retain.days=7
path.1.recursive=true
# Path configuration 2
path.2.directory=./var/logs/system
path.2.pattern=*.log
path.2.exclude=critical/*;audit/*
path.2.retain.days=90
path.2.recursive=false
# Path configuration 3
path.3.directory=./tmp/cache;/tmp/temp
path.3.pattern=*.*
path.3.retain.days=1

Wie Sie sehen können, können Sie in den erweiterten Einstellungen mehrere Löschpfade (mit spezifischen Parametern) definieren. Wenn ein optionaler Parameter für einen Pfad nicht festgelegt ist, gilt der jeweilige globale Defaultwert.

Parameter (globale Default-Werte)

Parameter

Typ

Default

Beschreibung

directory

String

Kein Default-Wert.

(Pflicht) Durch Semikolons getrennte Liste der zu überwachenden Verzeichnisse. Nicht vorhandene Verzeichnisse werden übersprungen.

file.pattern

String

*.*

(optional) Durch Semikolons getrennte Dateieinbindungsmuster.

exclude.pattern

String

Kein Default-Wert.

(optional) Durch Semikolons getrennte Dateiausschlussmuster.

retain.days

Integer

7

(optional) Anzahl der Tage, die die Dateien aufbewahrt werden sollen. Muss ≥ 1 sein (bei Null oder negativen Werten wird die Ausführung übersprungen).

recursive

Boolean

false

(optional) Unterverzeichnisse rekursiv scannen?

verbose

Boolean

false

(optional) Detailliertes Logging aktivieren?

Parameter (Pfad-spezifisch)

Der Platzhalter N kann zwischen 1 und 100 liegen.

Parameter

Typ

Beschreibung

path.N.directory

String

(Pflicht) Durch Semikolons getrennte Liste der zu überwachenden Verzeichnisse. Nicht vorhandene Verzeichnisse werden übersprungen.

path.N.pattern

String

(optional) Durch Semikolons getrennte Dateieinbindungsmuster. Überschreibt den globalen Parameter file.pattern.

path.N.exclude

String

(optional) Durch Semikolons getrennte Dateiausschlussmuster. Überschreibt den globalen Parameter exclude.pattern.

path.N.retain.days

Integer

(optional) Anzahl der Tage, die die Dateien aufbewahrt werden sollen. Überschreibt den globalen Parameter retain.days.

path.N.recursive

Boolean

(optional) Unterverzeichnisse rekursiv scannen? Überschreibt den globalen Parameter recursive.

Pattern Matching

Pattern

Beschreibung

Match

*

Matcht beliebige Zeichen.

*.log matches all .log files

*.*

Matcht jede Datei mit Dateiendung.

Matches all files with dots

test*

Matcht Dateien, die mit "test" beginnen.

test.log and test123.txt matches

*backup*

Matcht Dateien, die "backup" enthalten.

mybackup.sql and backup_old.zip matches

Muster, die / enthalten, werden mit dem vollständigen relativen Pfad abgeglichen.

Pattern

Beschreibung

Match

logs/*/*.tmp

Temp-Dateien in Unterverzeichnissen.

logs/app/cache.tmp

*/temp/*

Alle Dateien in Temp-Ordnern.

data/temp/file.txt

important/*

Alle Dateien in Verzeichnis “important”.

important/data.xml

*backup*/*

Alle Dateien in Verzeichnissen, die im Namen "backup" enthalten.

mybackup/file.txt

Verwenden Sie das Präfix regex: für komplexe Muster. Falsche Regex-Muster führen zu Fehlern.

file.pattern=regex:.*\.(log|txt)$
exclude.pattern=regex:.*_(backup|archive)_.*

Wo kann ich meinen Cronjob sehen?

Um Ihren Cron-Job anzuzeigen, navigieren Sie zu “Control Center → Jobs → Cron jobs“, wählen Sie “Kalenderdarstellung“ aus und aktivieren Sie die Option “Alle Cron-Jobs anzeigen“ (da es sich um einen internen Cron-Job und nicht um einen Profil-Cron-Job handelt).

Eine weitere Möglichkeit besteht darin, zu “Verwaltung→ Admin-Konsole” und dann zu “Services → CronJobService” zu navigieren.

Logging

Um die Log-Nachrichten Ihres Cron-Jobs anzuzeigen, navigieren Sie zu „Verwaltung → Server logging → CronLogManager”.

Anwendungsbeispiele generell

Beispiel 1: Application-Logs bereinigen

# Clean logs older than 7 days, keep important logs
directory=./opt/app/logs
file.pattern=*.log;*.out
exclude.pattern=error.log;fatal.log;important/*
retain.days=7
recursive=true
verbose=true

Beispiel 2: Bereinigung mehrerer Verzeichnisse

# Default settings
retain.days=30
recursive=true
# Application logs - keep 7 days
path.1.directory=./var/log/myapp
path.1.pattern=*.log
path.1.exclude=audit/*;security/*
path.1.retain.days=7
# System logs - keep 90 days
path.2.directory=./var/log/system
path.2.pattern=*.log
path.2.retain.days=90
# Temp files - delete after 1 day
path.3.directory=./tmp/app;./tmp/cache
path.3.pattern=*.*
path.3.retain.days=1

Beispiel 3: Fortgeschrittene Exclusions

directory=./data/uploads
file.pattern=*.*
exclude.pattern=*important*;*/archive/*;*/backup/*;permanent/*
retain.days=14
recursive=true

Beispiel 4: Regex-basierte Bereinigung

directory=./logs
file.pattern=regex:^(debug|trace)_.*\.log$
exclude.pattern=regex:.*_(critical|fatal)_.*
retain.days=3
recursive=true