Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Alte Backups automatisch löschen

Mitglied: DauJoe

DauJoe (Level 1) - Jetzt verbinden

19.07.2011 um 21:49 Uhr, 5946 Aufrufe, 14 Kommentare

Hallo,

ich habe folgende Situation:

- Ich möchte wöchentliche automatische Backups von normalen Dokumenten auf die selbe HD durchführen.
- Nun hätte ich noch gerne den Wunsch, dass diese Backup-Ordner immer nach dem jeweiligen Datum benannt werden.
- Nach jedem erfolgreich durchgeführtem Backup sollten alle ausser die letzten 4 Backups gelöscht werden. (ich möchte nur die Backups der letzten 4 Wochen haben, also 4 Ordner)

Gibt es dazu eine Möglichkeit, dies in eine .bat Datei zu schreiben oder kennt hier jemand ein Tool, welches derartiges bewältigen kann?

Danke für alle Antworten
Mitglied: Friemler
19.07.2011 um 22:19 Uhr
Hallo Goalgetter,

  1. Geplanten Task anlegen und mit XCOPY kopieren. Siehe xcopy /?.
  2. md "BackupVerzeichnis\Backup-%date:.=-%"
  3. Folgender Code löscht im Backupverzeichnis alle Verzeichnisse älter als 28 Tage:
01.
@echo off & setlocal
02.

03.
set "VBScript=%Temp%\DeleteOlderThan4Weeks.vbs"
04.

05.
> "%VBScript%" echo If WScript.Arguments.Count ^> 0 Then
06.
>>"%VBScript%" echo   Set objFSO = CreateObject("Scripting.FileSystemObject")
07.
>>"%VBScript%" echo   If objFSO.FolderExists(WScript.Arguments(0)) Then
08.
>>"%VBScript%" echo     For Each objFolder In objFSO.GetFolder(WScript.Arguments(0)).SubFolders
09.
>>"%VBScript%" echo       If DateDiff("d", objFolder.DateCreated, Now) ^> 28 Then objFolder.Delete(True)
10.
>>"%VBScript%" echo     Next
11.
>>"%VBScript%" echo     WScript.Quit 0
12.
>>"%VBScript%" echo   Else
13.
>>"%VBScript%" echo     WScript.Quit 1
14.
>>"%VBScript%" echo   End If
15.
>>"%VBScript%" echo Else
16.
>>"%VBScript%" echo   WScript.Quit 2
17.
>>"%VBScript%" echo End If
18.

19.
cscript /nologo "%VBScript%" "Laufwerk:\Pfad\Backupverzeichnis"
20.

21.
del "%VBScript%"
Bei Erfolg hat ERRORLEVEL den Wert 0, wenn des übergebene Verzeichnis nicht gefunden wurde den Wert 1 und bei fehlendem Verzeichnis den Wert 2.

Weitere Möglichkeit:
01.
@echo off & setlocal
02.

03.
set "BackupDir=Z:\Backups"
04.

05.
for /f "skip=4 delims=" %%d in ('dir /b /a:d /t:c /o:-d "%BackupDir%"') do (
06.
  rd /s /q "%BackupDir%\%%d"
07.
)
Es werden alle Verzeichnisse bis auf die vier jüngsten gelöscht.

Gruß
Friemler
Bitte warten ..
Mitglied: DauJoe
19.07.2011 um 22:44 Uhr
Also:

01.
@ECHO OFF
02.
 set quelle="QUELLENPFAD"
03.
 set ziel="ZIELPFAD\%date%_%time:~0,2%.%time:~3,2%"
04.

05.
md %ziel%
06.
xcopy %quelle% %ziel% /E
Wo genau muss ich nun das VBSCRIPT einbauen? oder muss das nebenher laufen, also auch einen Geplanten Task dafür anlegen?

Gruss
Bitte warten ..
Mitglied: Friemler
19.07.2011 um 22:51 Uhr
Hallo Goalgetter,

Du kannst mein Script von oben in das Backupscript einbauen. Das VBScript wird als temporäre Datei aus dem Batchscript heraus erzeugt und ausgeführt. Ob Du den Aufruf (die Zeile mit cscript /nologo) vor oder nach dem XCOPY einbaust bleibt Dir überlassen. Davor wäre geschickter, dann wird vor einem neuen Backup erstmal Platz geschaffen. Allerdings verlierst Du Backups, falls das neue Backup fehlschlägt.

BTW: XCOPY /E ist zu wenig. Setze Dich besser nochmal mit den Parametern von XCOPY auseinander.

Gruß
Friemler
Bitte warten ..
Mitglied: Friemler
19.07.2011 um 23:01 Uhr
Nachtrag:

Für den Zeitstempel hätte ich noch diese Idee:
01.
@echo off & setlocal
02.

03.
set "quelle=QUELLENPFAD"
04.
set "ziel=ZIELPFAD"
05.

06.

07.
set "VBScript=%Temp%\GetTimeStamp.vbs"
08.

09.
> "%VBScript%" echo WScript.Echo Year(Now) ^& "-" ^& Month(Now) ^& "-" ^& Day(Now) ^& " - " ^& Hour(Now) ^& "-" ^& Minute(Now) ^& "-" ^& Second(Now)
10.
for /f "delims=" %%t in ('cscript /nologo "%VBScript%"') do set "TimeStamp=%%t"
11.

12.
del "%VBScript%"
13.

14.
md "%Ziel%\%TimeStamp%"
15.
xcopy "%quelle%" "%ziel%\%TimeStamp%"
Damit wird ein Zielverzeichnis erstellt, dessen Name das Format JJJJ-MM-TT - HH-MM-SS hat. Sowas lässt sich leichter sortieren.

Gruß
Friemler
Bitte warten ..
Mitglied: DauJoe
20.07.2011 um 10:46 Uhr
Hallo,

also ich habs nun so:

01.
 @echo OFF & setlocal 
02.

03.
set quelle="QUELLENPFAD" 
04.
set ziel="ZIELPFAD" 
05.

06.
set "VBScript=%Temp%\GetTimeStamp.vbs"
07.

08.
> "%VBScript%" echo WScript.Echo Year(Now) ^& "-" ^& Month(Now) ^& "-" ^& Day(Now) ^& " - " ^& Hour(Now) ^& "-" ^& Minute(Now) 
09.

10.
for /f "delims=" %%t in ('cscript /nologo "%VBScript%"') do set "TimeStamp=%%t" 
11.
del "%VBScript%" 
12.

13.
md "%Ziel%\%TimeStamp%" 
14.

15.
xcopy "%quelle%" "%ziel%\%TimeStamp%" /E /C /I? /Y
16.

17.
set "BackupDir=Z:\Backups" 
18.

19.
 
20.

21.
for /f "skip=4 delims=" %%d in ('dir /b /a:d /t:c /o:-d "%BackupDir%"') do ( 
22.

23.
  rd /s /q "%BackupDir%\%%d" 
24.

25.
) 
Wäre das so korrekt? Bei dem xcopy Parameter /I bin ich mir nicht ganz sicher, ob es den benötigt...
Beim Timestamp habe ich mal die Sekunden herausgenommen, die finde ich etwas überflüssig.
Noch eine Frage: Was genau wird eigentlich in Zeile 11 gemacht?
Bitte warten ..
Mitglied: Friemler
20.07.2011 um 11:23 Uhr
Hallo Goalgetter,

Zeile 17 kannst Du Dir sparen und die FOR-Schleife ab Zeile 21 müsste dann so lauten:
01.
for /f "skip=4 delims=" %%d in ('dir /b /a:d /t:c /o:-d "%ziel%"') do (
02.
  rd /s /q "%ziel%\%%d"
03.
)
Den Paramter /I bei XCOPY brauchst Du nur, wenn das Ziel der Kopieraktion nicht existiert. Dann wird das Ziel als Name eines Verzeichnisses interpretiert und dieses Verzeichnis auch angelegt. Du könntest Dir in dem Fall Zeile 13 (md "%Ziel%\%TimeStamp%") sparen.

Da Zeile 11 ein simpler DEL-Befehl ist, gehe ich davon aus, dass Du Zeile 10 meintest. Hier wird mit cscript /nologo "%VBScript%" das temporäre VBScript gestartet, das in Zeile 8 erstellt wurde. Die Ausgabe dieses Scripts wird durch die FOR-Schleife an die Variable TimeStamp zugewiesen. Grund für dieses Vorgehen ist, das Programme/Scripts nur numerische Werte zurückliefern können, keine Zeichenketten. Ausführliche Informationen zur FOR-Schleife liefert mein Tutorial zur FOR-Schleife.

Du solltest evtl. XCOPY noch den Parameter /Z übergeben, wenn Du auf eine Netzwerkfreigabe kopieren willst. Wenn ein Fehler beim kopieren einer Datei auftritt, wird dann der Kopiervorgang für diese Datei neu gestartet.

Gruß
Friemler
Bitte warten ..
Mitglied: DauJoe
20.07.2011 um 12:30 Uhr
Hallo Friemler,

ich meinte schon Zeile 11. Dass das ein delete-Befehl ist, war mir schon klar. Ich versteh nur nicht ganz, wieso dass VBScript gelöscht wird... Oder wird hier eben dieses temporäre Script gelöscht? Dann wäre es klar...

01.
@echo OFF & setlocal 
02.

03.
set quelle="QUELLENPFAD" 
04.
set ziel="ZIELPFAD" 
05.
md %ziel% 
06.
set "VBScript=%Temp%\GetTimeStamp.vbs"
07.

08.
> "%VBScript%" echo WScript.Echo Year(Now) ^& "-" ^& Month(Now) ^& "-" ^& Day(Now) ^& " - " ^& Hour(Now) ^& "-" ^& Minute(Now) 
09.

10.
for /f "delims=" %%t in ('cscript /nologo "%VBScript%"') do set "TimeStamp=%%t" 
11.
del "%VBScript%" 
12.

13.
md "%Ziel%\%TimeStamp%" 
14.

15.
xcopy "%quelle%" "%ziel%\%TimeStamp%" /E /C /Y /Z
16.

17.

18.
for /f "skip=4 delims=" %%d in ('dir /b /a:d /t:c /o:-d "%ziel%"') do ( 
19.

20.
  rd /s /q "%ziel%\%%d" 
21.

22.
)
Zu den Parametern: Die Reihenfolge, wie ich sie angebe ist nicht relevant, oder?

Gruss
Bitte warten ..
Mitglied: Friemler
20.07.2011 um 12:39 Uhr
Hallo Goalgetter,

ja, in Zeile 11 wird das temporäre Script gelöscht. Es hat ja in Zeile 10 seinen Zweck erfüllt, warum sollte man es als Datenschrott auf der Platte lassen?

Die Reihenfolge der Parameter für XCOPY ist egal, Du kannst sie sogar zu /ecyz zusammenfassen.

Gruß
Friemler
Bitte warten ..
Mitglied: DauJoe
20.07.2011 um 16:43 Uhr
Hallo Friemler,

ich habe das Script nun mal getestet:

01.
@echo OFF & setlocal 
02.

03.
set quelle="C:\test1" 
04.
set ziel="C:\Backup\???" 
05.
md %ziel% 
06.
set "VBScript=%Temp%\GetTimeStamp.vbs"
07.

08.
> "%VBScript%" echo WScript.Echo Year(Now) ^& "-" ^& Month(Now) ^& "-" ^& Day(Now) ^& " - " ^& Hour(Now) ^& "-" ^& Minute(Now) 
09.

10.
for /f "delims=" %%t in ('cscript /nologo "%VBScript%"') do set "TimeStamp=%%t" 
11.
del "%VBScript%" 
12.

13.
xcopy "%quelle%" "%ziel%\%TimeStamp%" /E /C /Y /Z
14.

15.

16.
for /f "skip=4 delims=" %%d in ('dir /b /a:d /t:c /o:-d "%ziel%"') do ( 
17.

18.
  rd /s /q "%ziel%\%%d" 
19.

20.
)
In Zeile 4, wie füge ich nun da das VBSCRIPT ein, damit Windows weiss, wie er den Ordner benennen soll? Mit %TimeStamp% funktioniert das nämlich nicht...

Wenn ich die.bat Datei dann ausführe, erscheint immer folgendes: http://puu.sh/3vw0 Egal was ich dann drücke, die Daten werden nicht kopiert, bzw der Ordner mit Zeitangaben wird nicht erstellt.
Bitte warten ..
Mitglied: Friemler
20.07.2011 um 16:52 Uhr
Hallo Goalgetter,

Du brauchst in Zeile 4 nichts einzufügen. %TimeStamp% kann hier auch nicht funktionieren, da die Variable zum Anfang des Scripts noch garnicht definiert ist. Das passiert ja erst in Zeile 10. Schreibe in Zeile 4 einfach set "ziel=C:\Backup", lass' Zeile 5 weg und füge zum XCOPY-Befehl noch den Parameter /I hinzu, dann sollte es funktionieren.

Halt, nicht ganz: Ändere zusätzlich Zeile 3 auf set "quelle=C:\test1", sonst hast Du die Anführungszeichen als Bestandteil der Variablen, was Fehler verursacht. Deshalb auch meine kleine Änderung für Deine Zeile 4.

Als Backupziel das C:-Laufwerk zu nehmen ist eine schlechte Idee.

Gruß
Friemler


[EDIT]
Betr. Screenshot: Der Fehler verschwindet durch den Parameter /I von XCOPY.

Und um sämtliche Unklarheiten zu beseitigen:
01.
@echo off & setlocal 
02.

03.
set "quelle=C:\test1" 
04.
set "ziel=D:\Backup" 
05.

06.
set "VBScript=%Temp%\GetTimeStamp.vbs"
07.

08.
> "%VBScript%" echo WScript.Echo Year(Now) ^& "-" ^& Month(Now) ^& "-" ^& Day(Now) ^& " - " ^& Hour(Now) ^& "-" ^& Minute(Now) 
09.
for /f "delims=" %%t in ('cscript /nologo "%VBScript%"') do set "TimeStamp=%%t" 
10.
del "%VBScript%" 
11.

12.
xcopy /ecyzi "%quelle%" "%ziel%\%TimeStamp%"
13.

14.
for /f "skip=4 delims=" %%d in ('dir /b /a:d /t:c /o:-d "%ziel%"') do ( 
15.
  rd /s /q "%ziel%\%%d" 
16.
)
[/EDIT]
Bitte warten ..
Mitglied: DauJoe
20.07.2011 um 21:01 Uhr
Hallo Friemler,

aah jetzt funktioniert es! Danke dir.

Ist es eigentlich auch möglich, mehrere "quellen" zu kopieren? Also z.B C:\test1 und C:\test2 in den Ordner C:\Backup kopieren.

Oder wäre es einfacher, einfach 2 Scripte laufen zu lassen?

Gruss
Goalgetter
Bitte warten ..
Mitglied: Friemler
20.07.2011 um 22:06 Uhr
Hallo Goalgetter,

klar ist das möglich:
01.
@echo off & setlocal
02.

03.
set "Quellen=C:\Test1 "C:\Anderes Verzeichnis""
04.
set "Ziel=D:\Backup"
05.
set "Aufheben=4"
06.

07.

08.
set "VBScript=%Temp%\GetTimeStamp.vbs"
09.

10.
> "%VBScript%" echo WScript.Echo Year(Now) ^& "-" ^& Right("0" ^& Month(Now), 2) ^& "-" ^& Right("0" ^& Day(Now), 2) ^& " - " ^& Right("0" ^& Hour(Now), 2) ^& "-" ^& Right("0" ^& Minute(Now), 2)
11.
for /f "delims=" %%t in ('cscript /nologo "%VBScript%"') do set "TimeStamp=%%t"
12.
del "%VBScript%"
13.

14.

15.
for /d %%q in (%Quellen%) do (
16.
  xcopy /ecyzi "%%~q" "%Ziel%\%TimeStamp%\%%~nxq"
17.
)
18.

19.

20.
for /f "skip=%Aufheben% delims=" %%d in ('dir /b /a:d /t:c /o:-d "%Ziel%"') do (
21.
  rd /s /q "%Ziel%\%%d"
22.
)
Du musst die Quellen in Zeile 3 angeben, immer durch ein Leerzeichen getrennt. Wenn der Pfad einer Quelle selbst Leerzeichen enthält, muss der Pfad, so wie im Beispiel das Verzeichnis C:\Anderes Verzeichnis, in Anführungszeichen gesetzt werden. Du kannst auch Wildcards (* bzw. ?) verwenden, um mehrere Verzeichnisse anzugeben, z.B. C:\Fotos*.

Wenn das Backup z.B. heute um 22:00 Uhr gestartet würde, würde folgende Verzeichnisstruktur entstehen:
D:\Backup\2011-07-20 - 22-00\Test1
D:\Backup\2011-07-20 - 22-00\Anderes Verzeichnis
Damit Monat, Tag, Stunde und Minuten immer 2-stellig angegeben werden, die kleinen Änderungen im VBScript.

Gruß
Friemler
Bitte warten ..
Mitglied: DauJoe
20.07.2011 um 23:04 Uhr
Hallo Friemler,

nun klappt alles so wie ich es mir vorgestellt habe, danke Dir nochmals!

Gruss und vielen Dank
Goalgetter
Bitte warten ..
Mitglied: Friemler
20.07.2011 um 23:11 Uhr
Hallo Goalgetter,

gern geschehen. Markiere doch bitte noch den Beitrag als gelöst.

Gruß
Friemler
Bitte warten ..
Ähnliche Inhalte
Windows Server

Datensicherung mit Robocopy - Automatische Löschung von Alt-Backups gegen Speicherplatzmangel

Frage von SIGNUM21Windows Server11 Kommentare

Hallo Leute Kann mir bitte jemand weiterhelfen? ich sichere meine Daten schön nach Datum sortiert auf zwei USB-Festplatten. Ich ...

Entwicklung

Automatisch Wordpress Backups auf Raspberry PI Erstellen

Frage von SlakishEntwicklung7 Kommentare

Guten Tag, Ich wollte gerne mehrere Wordpress Seiten backupen und habe mich gerfagt ob das mein Rspi 3 übernehmen ...

Batch & Shell

Skript Backups löschen

Frage von csitsolutions-mgBatch & Shell3 Kommentare

Hallo, ich suche eine Möglichkeit Backup Dateien auf einer USB Platte zu löschen wenn der freie Platz ein vorher ...

Backup

Backups vs. wirkliche Datensicherheit

Frage von 16568Backup15 Kommentare

Hallo liebe Kollegen, ich sitze gerade hier bei einem Kunden, dem hat es seine Daten UND sein Backup gecrypted. ...

Neue Wissensbeiträge
Windows 10

Windows 10 kann XPS erzeugen aber nicht anzeigen ????

Erfahrungsbericht von Deepsys vor 9 StundenWindows 10

Heute schickt mir ein Kollegen eine E-Mail mit einer XPS-Datei vom Kunden im Anhang und fragt wie er diese ...

Exchange Server

1und1 IONOS: Probleme beim Mailversand mit Exchange

Information von reksierp vor 19 StundenExchange Server3 Kommentare

Hallo, seit Do, 17.1.19 etwa Mittags nimmt 1und1 IONOS keine Mails mehr über den Standard-Port SMTP 25 an. Nachdem ...

LAN, WAN, Wireless

Cisco Mikrotik VPN Standort Vernetzung mit dynamischem Routing

Anleitung von aqui vor 1 TagLAN, WAN, Wireless

1. Allgemeine Einleitung Das nachfolgende Tutorial ist eine Fortführung der hier bei Administrator.de schon bestehenden VPN Tutorials und beschreibt ...

Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 2 TagenWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Temporäre WLAN Verbindung für AD-Login
Frage von Christian.WidauerLAN, WAN, Wireless17 Kommentare

Hallo zusammen, ich weiß leider nicht unter welchem Begriff ich dafür suchen muss, daher habe ich bisher leider nichts ...

Windows Server
MSSQL Backup in Form von .sql einspielen
Frage von janosch12Windows Server14 Kommentare

Guten Morgen, wir verwenden das Tool SQLandFTPBackup ( ) zum sichern einiger MSSQL Datenbanken. Nun sichert das Toll die ...

Netzwerkmanagement
Reverse Proxy für TCP und UDP Anfragen
gelöst Frage von flxklsNetzwerkmanagement14 Kommentare

Hallo zusammen, ich besitze einen Rootserver, der nur eine öffentliche IP besitzt und auf dem mehrere VMs laufen. Da ...

Microsoft Office
Office 2016 oder Office 2019
Frage von PeterzMicrosoft Office13 Kommentare

Hallo zusammen, wir müssen unser Office von 2010 auf eine neuere Version Umstellen. Jetzt stellt sich die Frage, ob ...