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-ID: 8046062064

Url: https://administrator.de/en/gzip-aller-dateien-ab-einem-bestimmten-zeitraum-8046062064.html

Ausgedruckt am: 22.12.2024 um 03:12 Uhr

Kraemer
Kraemer 04.08.2023 um 10:12:08 Uhr
Goto Top
Ralus67
Ralus67 04.08.2023 um 10:17:11 Uhr
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
7907292512
7907292512 04.08.2023 aktualisiert um 11:14:06 Uhr
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.
Kraemer
Kraemer 04.08.2023 um 10:30:06 Uhr
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
godlie
godlie 04.08.2023 um 11:38:49 Uhr
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
Kraemer
Kraemer 04.08.2023 um 11:44:10 Uhr
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
Ralus67
Ralus67 04.08.2023 um 11:46:32 Uhr
Goto Top
Stimmt, hat mich aber auf den richtigen Weg geführt.
Euch beiden vielen Dank
godlie
godlie 04.08.2023 um 11:46:55 Uhr
Goto Top
@Kraemer

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

grüße
Kraemer
Kraemer 04.08.2023 um 11:48:13 Uhr
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   
godlie
godlie 04.08.2023 um 11:48:34 Uhr
Goto Top
@Kraemer

sorry mein fehler, hab die for schleife nicht genau angeschaut

grüße
Kraemer
Kraemer 04.08.2023 um 11:49:08 Uhr
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