Zum Inhalt springen

Linux Date - Datum berechnen


Empfohlene Beiträge

Geschrieben

Hallo,

dieses Script erstellt mir täglich einen Ordner mit dem aktuellen Datum

#!/bin/sh


dirname=`/bin/date +%Y-%m-%d`


cd /backup/


mkdir $dirname

Ich hätte aber noch gerne das es alle Ordner im Verzeichniss /backup/ löscht (inklusive Inhalt) die älter als 7 Tage sind.

Kann ich date nutzen um das Datum vor 7 Tagen zu bilden (hab in der manpage nichts passendes gefunden)?

Gruß Scratch

Geschrieben

mit dem befehl find kannst du dir alle ordner die älter sind wie $date auflisten lassen. Syntax von find findest du hier: man find :) und poste bitte wie es funktioniert, interessiert mich nämlich ;)

cu

Geschrieben


find /backup -type d -mtime +7 -exec rm -rf {} \;

Damit werden alle Verzeichnisse unterhalb des Verzeichnisses /backup gelöscht, in denen während der letzten Woche keine Änderung vorgenommen wurde.

Aus der Fragestellung geht nicht hervor, ob in den Tagen nach der Erstellung des Verzeichnisses noch Dateien hinzugefügt/verändert worden sind. Dann funktioniert o.g. Aufruf nämlich nicht.

Geschrieben

Hi,

also ... die unschöne aber leichte Variante:

#!/bin/sh


dirname=`/bin/date +%Y-%m-%d`


cd /backup/

mkdir $dirname


dirname=`/bin/date +%Y-%m-%d -d '7 days ago'`

rm -rf $dirname
Problem ist hier wenn ein Ordner älter ist als die 7 Tage wird er nicht mehr angefasst. Sollte aber eigentlich nicht passieren ... die schönere Variante mit find. So wie sie momentan ist wäre sie zwar korrekt aber für die Praxis nicht gerade geeignet:
#!/bin/sh


dirname=`/bin/date +%Y-%m-%d`


cd /backup/

mkdir $dirname


/usr/bin/find  . -ctime +168 -exec /bin/rm -rf {} \; -depth

Problem hier ist das wenn eine Datei in dem Ordner angelegt wird verändert sich das Datum "last modified". Ich habe keine möglichkeit (weder mit mtime oder atime) gefunden das er wirklich das Datum nimmt an dem der Ordner erstell wurde.

Evtl. kann mir da jemand helfen!

Gruß Scratch

Geschrieben

hm so als kleine Überlegeung, wie wäre es wenn du in die namen der ordner einen zeitstempel einbaust? der ist nämlich statisch und du kannst das einfachste format für dich auswählen und dann anhand der namen die ordner löschen.

Geschrieben

Der Name an sich ist ja das Datum an dem der Ordner angelegt wurde.

Das Skript sollte alle Ordner auslesen und vergleichen ob das Datum des Ordners kleiner gleich dem Datum heute() - x Tage ist.

Damit hätte man eine gute Lösung!

Ich mach mich gleich mal dran!

Gruß Scratch

Geschrieben

Ja Hallo, ich glaub ich hab nun eine super Lösung zusammengebaut.

Sieht folgendermassen aus:

#!/bin/sh


dirname=`/bin/date +%Y-%m-%d`


pastdirname=`/bin/date +%Y%m%d -d '7 days ago'`


cd /backup/

/bin/mkdir -p $dirname


for dir in *

do

	dirtoint=`echo $dir | /bin/sed -e 's/[^0-9]//ig'`

	if [ $dirtoint -le $pastdirname ]

	then

		/bin/rm -rf $dir

	fi

done

Bei mir hats funktioniert, ich hoffe bei euch auch.

Falls es noch jemand verbessern möchte oder einen Verbesserungsvorschlag hat einfach posten!!!

Gruß Scratch

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...