theuntouchable
Goto Top

Überprüfen ob Ordner 5 Ordner enthält, wenn mehr den ältesten Ordner löschen

So ich bins wiedereinmal ;)

Nach dem ich jetzt das Problem mit dem Sichern der Konfigurations unseres Nagios Servers gelöst habe, brauche ich nun ein Script was die erstellten Backups auf 5 beschränkt. Es soll quasi überprüfen ob 5 Backups erstellt worden sind, ist dies der Fall soll das älteste gelöscht werden. Hat wer eine Idee wie das am Einfachsten zu bewerkstelligen ist? Die Sicherungen werden immer als Ordner mit dem jeweiligen Datum gespeichert zb. 21.10.2008

Content-Key: 99833

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

Printed on: April 18, 2024 at 16:04 o'clock

Member: lemmi222
lemmi222 Oct 21, 2008 at 11:34:25 (UTC)
Goto Top
in etwa:

#!/bin/sh

ls /sicherungsverzeichnis | wc -l > /tmp/number
read varNumber < /tmp/number
if [ $varNumber==5 ] ; Then
ls /sicherungsverzeichnis | sort > /tmp/dir
read varDEL < /tmp/dir
rm -R "$varDEL" > /dev/null
rm /tmp/dir
fi
rm /tmp/number


Gruß

Lemmi
Member: TheUntouchable
TheUntouchable Oct 21, 2008 at 11:37:27 (UTC)
Goto Top
Hallo Lemmi,

danke für deine Antwort! Leider hab ich vergessen zu erwähnen das der Script für die Bereinigung auf einem Windows 2003 Server laufen soll.. Und nicht auf dem Nagios Server selber =/
Member: lemmi222
lemmi222 Oct 21, 2008 at 11:43:21 (UTC)
Goto Top
kein Problem face-smile

Soll es über eine batch, oder über ein VB-Script gelöst werden?
Member: TheUntouchable
TheUntouchable Oct 21, 2008 at 11:45:29 (UTC)
Goto Top
Über einen Batch, dann kann ichs gleich in mein Sicherungsscript einbauen. Hab mir das so vorgestellt, das bevor die Sicherung startet, überprüft wird ob schon 5 Ordner vorhanden sind, ist dies der Fall soll der älteste gelöscht werden und dann mit dem Backupscript weiter gemacht werden. Danke schon mal für deine Bemühungen!
Member: miniversum
miniversum Oct 21, 2008 at 11:58:27 (UTC)
Goto Top
Ungetestet sollte es so funktionieren:
@echo off
set "ordner=C:\ordner"  
set "maximum=5"  

FOR /F "skip=%maximum% delims=" %%i in ('dir /B /A-D %ordner%') do echo rd /S /Q "%%i"  

Es solte nru angezeigt werden was gelöscht wird. Zum wirklichen löschen das echo entfernen.
Member: TheUntouchable
TheUntouchable Oct 21, 2008 at 12:39:08 (UTC)
Goto Top
Danke für deine Antwort miniversum!

Leider hat dein Script so nicht genau funktioniert, so abgeändert hat er aber bis jetzt das richtige ausgegeben:

:MaxBackupUeberpruefen
set "maximum=4"  

FOR /F "skip=%maximum% delims=" %%i in ('dir /O-D /B /AD .\Sicherung\Nagios-Config\') do echo rd /S /Q .\Sicherung\Nagios-Config\"%%i"  
pause

GOTO :EOF

Auf das mit dem Skip hätte ich eigentlich selber kommen können, danke für den Gedankenschubs!