44275
10.10.2012
4346
6
0
Automatisch Ordner löschen - nach Plattenplatz
Wie verhindere ich, daß mein Copyjob die Platte überlaufen lässt?
Hallo Allerseits,
ich sichere per xcopy (w2k3) auf täglich wechselnde USB-Platten:
xcopy d:\quellordner1 f:\%date%\zielordner1 /e /c /h /o /i > c:\backuplog\log1%date%.txt
xcopy d:\quellordner2 f:\%date%\zielordner2 /e /c /h /o /i > c:\backuplog\log2%date%.txt
D.h. auf der Platte gibt es nach dem Sicherungsdatum benannte Ordner, die das Backup enthalten.
Wie verhindere ich jetzt (möglichst einfach), daß die Platte überläuft? Ich möchte den ältesten Ordner automatisch löschen wenn entweder
a) ein bestimmter Wert an freiem Speicherplatz unterschritten wird
oder besser
b) der Platz nicht mehr für den Copyjob ausreicht, was natürlich heißt, daß das Script erst einmal ermitteln muss wieviel Platz den benötigt wird.
Ne Idee ?
Gruß
5
Hallo Allerseits,
ich sichere per xcopy (w2k3) auf täglich wechselnde USB-Platten:
xcopy d:\quellordner1 f:\%date%\zielordner1 /e /c /h /o /i > c:\backuplog\log1%date%.txt
xcopy d:\quellordner2 f:\%date%\zielordner2 /e /c /h /o /i > c:\backuplog\log2%date%.txt
D.h. auf der Platte gibt es nach dem Sicherungsdatum benannte Ordner, die das Backup enthalten.
Wie verhindere ich jetzt (möglichst einfach), daß die Platte überläuft? Ich möchte den ältesten Ordner automatisch löschen wenn entweder
a) ein bestimmter Wert an freiem Speicherplatz unterschritten wird
oder besser
b) der Platz nicht mehr für den Copyjob ausreicht, was natürlich heißt, daß das Script erst einmal ermitteln muss wieviel Platz den benötigt wird.
Ne Idee ?
Gruß
5
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 192577
Url: https://administrator.de/contentid/192577
Ausgedruckt am: 15.11.2024 um 11:11 Uhr
6 Kommentare
Neuester Kommentar
Da würde ich erst den Platzbedarf der Quelle berechnen und dann bei freier Platz kleiner 28GB oder Platzbedarf das löschen anstoßen.
dann lösche Ordner mit den ältesten Schreibzugriff.
Vorher aber nochmal überprüfen, ob man damit genug Platz gewonnen hat.
danach wie gewohnt xcopy starten lassen
lks
PS: Mit der bash würde das mit zuhilfenahme von du, df und einigen anderen Standardbefehlen mit wenigen Zeilen funktionieren.
moin 5,
das geht doch Problemlos mit xcopy selbst:
Wenn der Platz wärend des Kopierens nicht reicht wird das alte entsorgt.
edit
Loggingfunktion für besseres Fehlerlogging angepasst.
Dateizähler eingefügt.
/edit
Gruß Phil
das geht doch Problemlos mit xcopy selbst:
Wenn der Platz wärend des Kopierens nicht reicht wird das alte entsorgt.
echo off
setlocal
set "Quelle=d:\quellordner1"
set "Ziel=f:\%date%\zielordner1\"
set "Log=c:\backuplog\log1%date%.txt"
set "DelZiel=F:\"
rem wenn nur der Ordner vom Backupset 1 gelöscht werden soll
rem Nicht unbedingt empfohlen
:: set "DelOrdner=zielordner1\"
call :Backup 1
set "Quelle=d:\quellordner2"
set "Ziel=f:\%date%\zielordner2\"
set "Log=c:\backuplog\log2%date%.txt"
rem wenn nur der Ordner vom Backupset 2 gelöscht werden soll
::set "DelOrdner=zielordner2\"
call :Backup 2
pause
exit /b
:Backup
echo Starte Backup %1
:startBU
rem Option /D muss aktiviert bleiben
(xcopy /E /c /h /o /i /D "%quelle%" "%ziel%" |find /i "%Quelle%" >>"%log%"
) 2>&1 |findstr . >"%temp%\xcopyFehler.txt" && type "%temp%\xcopyFehler.txt" >>"%log%"^
&&find "Nicht gengend Speicherplatz auf dem Datentr„ger." <"%temp%\xcopyFehler.txt" && goto :dellast
for /f %%i in ('find /i /c "%Quelle%" ^<"%log%" ' ) do (>>"%log%" echo %%i Datei^(en^) Kopiert
echo Backup %1 fertig! %%i Datei^(en^) Kopiert
)
exit /b
:dellast
echo Entferne aeltestes Backup ...
pushD "%DelZiel%" || 1>&2 echo Fehler beim entfernen! && pause &&exit /b 2
for /f "tokens=1*delims=:" %%i in ('dir /ad /b /od ^|findstr /n .^|findstr /b 1: ') do (
rd /s /q "%%j\%DelOrdner%" >nul && echo "%%~fj\%DelOrdner%" wurde geloescht.
rem hier könnte noch der passende Log gelöscht werden
rem del "c:\backuplog\log%1%%j.txt"
) >>"%log%"
popD
>>"%log%" echo setze Backup fort.
goto :startBU
edit
Loggingfunktion für besseres Fehlerlogging angepasst.
Dateizähler eingefügt.
/edit
Gruß Phil
moin 5,
zu 1.
zu 2. ja den Ältesten Unterordner von DelZiel (also alle Sicherungen von diesem Datum) löscht es.
Optional ist das Backupset DelOrdner anzugeben, weil Du ja auch zwei Verschiedene Quellen hast (also zwei Sicherungen) dazu müssen die Doppelpunkte davor entfernt werden. Diese Extraoption empfehle ich daher nicht, weil es sein könnte es wird ständig nur ein Backupset entfernt. Dadurch bestehen zB. im einen Set 10 Sicherungen und im anderen nur 2 Sicherungen. Wenn sich diese zusatzOption bewärt kannst Du sie ja nutzen.
Gruß Phil
zu 1.
- Wenn xcopy abbricht weil der Platz nicht ausreicht, dann wird der Älteste Unter-Ordner, welcher bei DelZiel angegeben ist gelöscht (zb: F:\ältesterOrdnermitDatum wird in der Schleife ausgegeben).
- danach (goto :startBU) wird xcopy fortgesetzt. Deswegen die Option /D, damit nicht nochmal von vorn begonnen wird.
- Der batch macht solange bis das komplette Backup Fertig ist bzw. kein Speicherplatzfehler mehr auftaucht.
zu 2. ja den Ältesten Unterordner von DelZiel (also alle Sicherungen von diesem Datum) löscht es.
Optional ist das Backupset DelOrdner anzugeben, weil Du ja auch zwei Verschiedene Quellen hast (also zwei Sicherungen) dazu müssen die Doppelpunkte davor entfernt werden. Diese Extraoption empfehle ich daher nicht, weil es sein könnte es wird ständig nur ein Backupset entfernt. Dadurch bestehen zB. im einen Set 10 Sicherungen und im anderen nur 2 Sicherungen. Wenn sich diese zusatzOption bewärt kannst Du sie ja nutzen.
Gruß Phil