Bash - Dateien löschen die älter wie 5 Tage sind -- AUSNAHME Dateien vom 28. eines Monats - Jede Datei die an einem Freitag erstellt wurde
Leider bin ich in Bash/PHP nicht wirklich fit jedoch würde ich folgende Lösung für eine private tägliche Sicherungslösung brauchen
Hallo,
Ich habe folgendes Problem was ich nicht ganz selbst gelöst bekomme.
Aktuell werden tägliche private Sicherungen (ZIP Datei) von mir via FTP auf einem Linux Server gesichert.
Damit die Sicherungen nicht irgendwann den Plattenplatz sprengen benötige ich eigentlich nur ein relativ einfaches Script was folgende Dateien löscht:
- Alle Dateien die älter wie 5 Tage sind
Jedoch gibts folgende Ausnahme:
- Wenn die Datei an einen Freitag erstellt wurde = nicht löschen
- Wenn die Datei an einem 28. eines Monats erstellt wurde = nicht löschen
Leider bekomme ich diese Ausnahmen via Bash nicht realisiert, Google etc. hat mir jetzt leider auch nicht weitergeholfen.
Hat jemand ggfs. einen Tipp oder einen Lösungsansatz (der unter Linux läuft, am besten Bash) für mich? Wäre euch sehr dankbar.
Hallo,
Ich habe folgendes Problem was ich nicht ganz selbst gelöst bekomme.
Aktuell werden tägliche private Sicherungen (ZIP Datei) von mir via FTP auf einem Linux Server gesichert.
Damit die Sicherungen nicht irgendwann den Plattenplatz sprengen benötige ich eigentlich nur ein relativ einfaches Script was folgende Dateien löscht:
- Alle Dateien die älter wie 5 Tage sind
Jedoch gibts folgende Ausnahme:
- Wenn die Datei an einen Freitag erstellt wurde = nicht löschen
- Wenn die Datei an einem 28. eines Monats erstellt wurde = nicht löschen
Leider bekomme ich diese Ausnahmen via Bash nicht realisiert, Google etc. hat mir jetzt leider auch nicht weitergeholfen.
Hat jemand ggfs. einen Tipp oder einen Lösungsansatz (der unter Linux läuft, am besten Bash) für mich? Wäre euch sehr dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 195469
Url: https://administrator.de/contentid/195469
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
1 Kommentar
Hi
Wo haperts denn?
Über alle Dateien des Verzeichnises iterierst du mit:
for FILE in $(ls); do
tu_etwas
done
Das Datum der Datei bekommst du z.B. per:
date=$(stat -c %y ${FILE} | cut -d " " -f 1)
Dein zugehörigen Wochentag gibt's so:
day=$(date --date="$date" | cut -d " " -f 1)
Die Differnz zwischen Dateidatum und heute mit:
diff=$((($(date +%s)-$(date --date="$date" +%s))/86400))
Jetzt brauchst du das ganze nur noch mit einem if und rm zusammensetzen und fertig - also fast :D
Wo haperts denn?
Über alle Dateien des Verzeichnises iterierst du mit:
for FILE in $(ls); do
tu_etwas
done
Das Datum der Datei bekommst du z.B. per:
date=$(stat -c %y ${FILE} | cut -d " " -f 1)
Dein zugehörigen Wochentag gibt's so:
day=$(date --date="$date" | cut -d " " -f 1)
Die Differnz zwischen Dateidatum und heute mit:
diff=$((($(date +%s)-$(date --date="$date" +%s))/86400))
Jetzt brauchst du das ganze nur noch mit einem if und rm zusammensetzen und fertig - also fast :D