ralus67
Goto Top

Gzip aller Dateien ab einem bestimmten Zeitraum

Hallo allen Community Mitglieder

Ich habe eine Frage betreffend gzip
Ich möchte aus einem Bestimmten Verzeichnis z.B /var/log alles Logs weche mit localhost_access_log* beginnen und älter sind 14 Tage, mit gzip comprimieren. Anschliessend sollen die gezippten logdateien gelöscht werden (älter als 14 Tage)

Wer kann mir da eine Lösung geben?

Im Voraus Danke für die Hilfe

Content-Key: 8046062064

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

Printed on: May 1, 2024 at 03:05 o'clock

Member: Kraemer
Kraemer Aug 04, 2023 at 08:12:08 (UTC)
Goto Top
Member: Ralus67
Ralus67 Aug 04, 2023 at 08:17:11 (UTC)
Goto Top
Funktioniert irgendwie nicht richtig. Ich habe die logrotate.conf angepasst, führt aber nicht die gewünschten Änderungen durch. Zudem ersetzt diese spezifische logrotate, welche durch eine Applikation mitgeliefert wird, die /etc/logrotate.conf

Ich sehe weder im crontab noch in einem logrotate daemon wie dieses Logrotate ausgeführt wird.
Deswegen habe ich mich entschieden ein eigenes Skript zu schreiben
Mitglied: 7907292512
7907292512 Aug 04, 2023 updated at 09:14:06 (UTC)
Goto Top
Funktioniert irgendwie nicht richtig
Dann machst du es falsch.
Deswegen habe ich mich entschieden ein eigenes Skript zu schreiben
Wohl eher es "schreiben zu lassen" 😂
find /var/log -type f -name "localhost_access_log*" -mtime +14 | tar czf old.tar.gz -T -  
find /var/log -type f -name "localhost_access_log*" -mtime +14 -delete  
oder gzip einzeln
gzip $(find /var/log -type f -name "localhost_access_log*" -mtime +14)  

S.
Member: Kraemer
Kraemer Aug 04, 2023 at 08:30:06 (UTC)
Goto Top
ChatGPT
#!/bin/bash

# Verzeichnis, in dem die Dateien liegen
log_dir="/var/log"  

# Aktuelles Datum in Sekunden seit der Epoch (UNIX-Timestamp)
current_date=$(date +%s)

# Anzahl der Sekunden in 14 Tagen (60 Sekunden * 60 Minuten * 24 Stunden * 14 Tage)
fourteen_days_ago=$((current_date - 60*60*24*14))

# Schleife durch alle Dateien im Verzeichnis, die mit "localhost_access_log" beginnen 
for file in "$log_dir"/localhost_access_log*; do  
  # Überprüfen, ob die Datei älter als 14 Tage ist
  if [ -f "$file" ] && [ "$(date -r "$file" +%s)" -lt "$fourteen_days_ago" ]; then  
    # Gzip-Komprimierung durchführen
    gzip "$file"  
    echo "Komprimiere Datei: $file"  

    # Die komprimierte Datei löschen
    rm "$file"  
    echo "Lösche Datei: $file"  
  fi
done
Member: godlie
godlie Aug 04, 2023 at 09:38:49 (UTC)
Goto Top
Zitat von @Kraemer:

ChatGPT

Ist zwar nett, aber wie immer wurde die Aufgabenstellung nicht ganz durchgelesen, respektive das Result nicht genau betrachtet.
Der wichtige Punkt welche Dateien behandelt werden sollen, ist in der vermeintlichen Lösung nicht abgedeckt!

grüße
Member: Kraemer
Kraemer Aug 04, 2023 at 09:44:10 (UTC)
Goto Top
Zitat von @godlie:

Zitat von @Kraemer:

ChatGPT

Ist zwar nett, aber wie immer wurde die Aufgabenstellung nicht ganz durchgelesen, respektive das Result nicht genau betrachtet.
Der wichtige Punkt welche Dateien behandelt werden sollen, ist in der vermeintlichen Lösung nicht abgedeckt!

grüße

na das erkläre mal ein wenig genauer
Member: Ralus67
Ralus67 Aug 04, 2023 at 09:46:32 (UTC)
Goto Top
Stimmt, hat mich aber auf den richtigen Weg geführt.
Euch beiden vielen Dank
Member: godlie
godlie Aug 04, 2023 at 09:46:55 (UTC)
Goto Top
@Kraemer

Ich möchte aus einem Bestimmten Verzeichnis z.B /var/log alles Logs weche mit localhost_access_log* beginnen ....

grüße
Member: Kraemer
Kraemer Aug 04, 2023 at 09:48:13 (UTC)
Goto Top
Zitat von @godlie:

@Kraemer

Ich möchte aus einem Bestimmten Verzeichnis z.B /var/log alles Logs weche mit localhost_access_log* beginnen ....

grüße

for file in "$log_dir"/localhost_access_log*; do   
Member: godlie
godlie Aug 04, 2023 at 09:48:34 (UTC)
Goto Top
@Kraemer

sorry mein fehler, hab die for schleife nicht genau angeschaut

grüße
Member: Kraemer
Kraemer Aug 04, 2023 at 09:49:08 (UTC)
Goto Top
Zitat von @godlie:

@Kraemer

sorry mein fehler, hab die for schleife nicht genau angeschaut

grüße

soviel zum Thema zu Ende lesen face-wink