Zum Inhalt springen

Linux Date - Datum berechnen


Scratch

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen


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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...