hamspirit
Goto Top

Backup-Script inkl. Ordner mit Tagesdatum

Ich war schon lange auf der Suche nach einem Script für die Dosbox, welches Daten sichert und diese automatisch in einen Ordner mit dem Tagesdatum im Namen schreibt. Ziel war es, mehrere Versionen eines Backup vorhalten zu können.

Hier wird angenommen, dass sich die zu kopierenden Dateien auf Laufwerk Z: befinden und die Sicherung direkt auf Laufwerk H: geschrieben werden sollen.
Erzeugt wird automatisch ein Ordner mit dem Datum im Format: YYYY-MM-DD (also z.B: 2009-11-02)


: Setzen der Variablen
set Quellverzeichnis=z:\
set Zielverzeichnis=h:\%date:~-4,4%-%date:~-7,2%-%date:~-10,2%

cls
echo.
echo ---------------------------------------------------------
echo.
echo Die DATENSICHERUNG wird gestartet.
echo.
echo.
set Quellverzeichnis
echo.
set Zielverzeichnis
echo.
echo.
echo Bitte beenden Sie alle geöffneten Anwendungen!
echo.
echo ---------------------------------------------------------
pause


: Neues Zielverzeichnis (Datum) erstellen
md h:\%date:~-4,4%-%date:~-7,2%-%date:~-10,2%

: Kopieren der Quelldaten in das neue Verzeichnis
XCOPY z:\ h:\%date:~-4,4%-%date:~-7,2%-%date:~-10,2% /S /E /C /H /O /R /Y /D /V

Content-ID: 128475

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

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

Globetrotter
Globetrotter 02.11.2009 um 20:31:51 Uhr
Goto Top
Hi...
Hier ein Script zur bestimmung der Zeit etc.
Dies wurde hier schon sehr oft verwendet und ich denke, dass es das ist, nach dem Du suchst. Den anfolgenden Batch kannst Du dann bequem mit den Variabeln bestücken...

Gruss Globe

@echo OFF
set TmpFile="%temp%.\tmp.vbs"
echo> %TmpFile% n=Now
echo>>%TmpFile% With WScript
echo>>%TmpFile% .Echo "set year=" + CStr(Year(n))
echo>>%TmpFile% .Echo "set yr="   + Right(Year(n),2)
echo>>%TmpFile% .Echo "set month="+ Right(100+Month(n),2)
echo>>%TmpFile% .Echo "set day="  + Right(100+Day(n),2)
echo>>%TmpFile% .Echo "set hour=" + Right(100+Hour(n),2)
echo>>%TmpFile% .Echo "set min="  + Right(100+Minute(n),2)
echo>>%TmpFile% .Echo "set sec="  + Right(100+Second(n),2)
echo>>%TmpFile% .Echo "set dow="  + WeekDayName(Weekday(n),1)
echo>>%TmpFile% .Echo "set dow2=" + WeekDayName(Weekday(n))
echo>>%TmpFile% .Echo "set iso="  + CStr(1 + Int(n-2) mod 7)
echo>>%TmpFile% .Echo "set iso2=" + CStr(Weekday(n,2))
echo>>%TmpFile% End With
cscript //nologo "%temp%.\tmp.vbs" > "%temp%.\tmp.bat"
call "%temp%.\tmp.bat"
del  "%temp%.\tmp.bat"
del  %TmpFile%
set TmpFile=
set stamp=%year%-%month%-%day%_%hour%.%min%.%sec%

Biber
Biber 02.11.2009 um 20:57:22 Uhr
Goto Top
Moin Globetrotter,

schönes handliches Skriptchen.

Falls ich noch einen kosmetischen Vorschlag machen darf..?
Ich würde die nach der %stamp%-Ermittlung überflüssigen "session-globalen" Variablen %year%, %month% etc sicherheitshalber wegen möglicher Seiteneffekte im späteren Skriptverlauf entsorgen:

@echo OFF & setlocal

set TmpFile="%temp%.\tmp.vbs"   

echo> %TmpFile% n=Now 

echo>>%TmpFile% With WScript 
echo>>%TmpFile% .Echo "set year=" + CStr(Year(n))   
echo>>%TmpFile% .Echo "set yr="   + Right(Year(n),2)   
echo>>%TmpFile% .Echo "set month="+ Right(100+Month(n),2)   
echo>>%TmpFile% .Echo "set day="  + Right(100+Day(n),2)   
echo>>%TmpFile% .Echo "set hour=" + Right(100+Hour(n),2)   
echo>>%TmpFile% .Echo "set min="  + Right(100+Minute(n),2)   
echo>>%TmpFile% .Echo "set sec="  + Right(100+Second(n),2)   
echo>>%TmpFile% .Echo "set dow="  + WeekDayName(Weekday(n),1)   
echo>>%TmpFile% .Echo "set dow2=" + WeekDayName(Weekday(n))   
echo>>%TmpFile% .Echo "set iso="  + CStr(1 + Int(n-2) mod 7)   
echo>>%TmpFile% .Echo "set iso2=" + CStr(Weekday(n,2))   
echo>>%TmpFile% End With 
cscript //nologo "%temp%.\tmp.vbs" >"%temp%\tmp.bat"   
call "%temp%\tmp.bat"   
:: hier tmp-bat noch nicht löschen
del  %TmpFile% 

set stamp=%year%-%month%-%day%_%hour%.%min%.%sec% 
:: Bei Bedarf zur Kontrolle: -- echo Stamp: %stamp%

:: %stamp% ist ermittelt.... Zwischenvariablen wegbratzen
For /f "usebackq delims==" %%i in ("%temp%\tmp.bat") do %%i=  

:: hier erst tmp-bat  löschen
del "%temp%\tmp.bat"   

Wie gesagt, rein kosmetisch....

Grüße
Biber

[Edit] Angedeutete Debugzeile ":: Bei Bedarf zur Kontrolle: -- echo Stamp: %stamp%" ergänzt *g [/Edit]
Globetrotter
Globetrotter 02.11.2009 um 21:19:24 Uhr
Goto Top
Hi Biber Du -> Klugsch€iss€rle face-smile
.. habe das Ding grade 1zu1 kopiert und hatte halt den Stamp noch drinne face-smile

Denke, dass dieses Script ne Antwort auf die Frage wert ist... schaun mer mal...

Nix für Ungut!

Gruss Globe
60730
60730 02.11.2009 um 23:24:31 Uhr
Goto Top
Zitat von @Globetrotter:
Hi Biber Du -> Klugsch€iss€rle face-wink
Denke, dass dieses Script ne Antwort auf die Frage wert ist... schaun mer mal...

Servus
(OT)
Ihr dürft mich Korinther nennen, wenn Ihr mögt, aber fü mich war das eine Anleitung, die auch als Anleitung / Tipp durchgeht und keine Frage...
(/OT)
Wobei mir bei der "eigentlichen" Anleitung das "fehlende" @echo off in der ersten Zeile sehr gut gefällt face-wink

Die meisten schreiben ja Ihre Alpha Beta Scripte mit @echo off, damit man es später, wenn das Script denn vielleicht mal von alleine läuft - nicht vergisst nachzutragen face-wink

Nix für Ungut!
Dito...
Gruss Globe
zurück..
Farbauti
Farbauti 03.11.2009 um 12:07:06 Uhr
Goto Top
Wenn ich noch einen Tipp zum ursprünglichen Skript (ich bin kein Fan von VB) geben darf:

Definiere den Namen "yyyy-mm-dd" vorher in einer Variablen.
a) musst du die Substrings nur einmal zusammenfrickeln
b) sollte das Script zufällig über Mitternach laufen, ändert sich das Datum, und dein xcopy kopiert ins Leere -- ja, ok, ist unwahrscheinlich, aber nicht unmöglich.


Ach ja, und der Vollständigkeithalber auch noch etwas Code, um die Zeit als Variable zu nutzen:
if "%TIME:~0,1%" == " " (  
	set NOWTIME=0%TIME:~1,1%-%TIME:~3,2%-%TIME:~6,2%
) else (
	set NOWTIME=%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
)
Ausgabeformat ist hier "hh-mm-ss" inkl. führender Null bei einstelligen Stunden.


Hoffe, das hilft dem einen oder anderen.

Gruß, Farbauti.
[edit: code etwas beautyfied]
Globetrotter
Globetrotter 03.11.2009 um 12:12:18 Uhr
Goto Top
Hi Farbauti...
Deine Idee ist auf jedenfall für das ein oder andere Ding super...
Werde dieses Teil auf jedenfall in meine "Codeschnipsel" aufnehmen.

Danke,

Gruss Globe
marinux
marinux 06.11.2009, aktualisiert am 18.10.2012 um 18:39:52 Uhr
Goto Top
Das Ganze lässt sich gut mit folgendem Programm kombinieren:

Übersichtlich Backups nach KWs speichern v1.1
priez
priez 13.11.2009 um 02:58:00 Uhr
Goto Top
Hi,

Cobian Backup (Freeware) macht das auch einfacher? Oder habe ich hier einen wesentlichen Aspekt (ausser Skripte können in GPOs verwendet werden) übersehen? Ansonsten finde ich das Skript nett.

Grüße

René
Kickinho
Kickinho 27.11.2009 um 19:32:22 Uhr
Goto Top
Vielen Dank für das nette Backupscript. Zwei kleine Wünsche hätte ich noch:

1. Könntest du auch noch den Befehl zum packen der Datei mittels WinRar und dem anschließenden löschen des angelegten Backup-Quellordners einpflegen?
2. Könntest du evtl. noch die Funktion eines Logfiles einbauen, in der die Größe und Anzahl der kopierten Dateien aufgelistet ist?

Würde mich freuen wenn du meine Wünsche noch einbauen könntest!
Vielen Dank für deine Mühe!

LG, Kickinho
andipc
andipc 01.12.2009 um 19:16:52 Uhr
Goto Top
Hi,

wenn ich mir das so alles durchlese, dann bin ich bei traybackup.
Hat so ziemlich alles was oben drin steht.
www.traybackup.de
Interessant wäre noch der eigentliche Kopiervorgang. Hier ist xcopy wohl nicht sehr flexibel.
Mit robocopy ist man fein raus (sofern man die Parameter richtig setzt)
Dazu kann aber das Tool YARCGUI zu Hilfe genommen werden.

Andreas
Biber
Biber 01.12.2009 um 19:31:05 Uhr
Goto Top
Moin andipc und priez,

Zitat von @priez:
Cobian Backup (Freeware) macht das auch einfacher?

Zitat von @andipc:
wenn ich mir das so alles durchlese, dann bin ich bei traybackup.
Hat so ziemlich alles was oben drin steht.

Wenn ich mir aber nicht alles durchlese, sondern nur die ersten 3 Zeilen, dann komme ich zu der Erkenntnis:
  • da steht "Anleitung" drüber und nicht "Frage"
  • und kurz danach "Ich war schon lange auf der Suche nach einem Script fur..." und (sinngemäß) "weil es für mich nix Überzeugendes gab, habe ich mir selbst geholfen.."

--> Und das Ziel war nach meinem Eindruck nicht unbedingt, irgendein Rad neuer, besser oder runder zum 20000sten Mal neu zu erfinden.
Sondern zu zeigen, wie man/frau sich mit einem mittelkomplexen Programmierproblem schrittweise und strukturiert auseinandersetzen kann.

{ Damit will ich nichts gegen Cobian Backup/ TrayBackup oder YARCGUI sagen.... aber ist hier in diesem Thread eher OffTopic. }

Grüße
Biber
priez
priez 01.12.2009 um 20:41:34 Uhr
Goto Top
Hi Biber,

Sorry face-smile Habe zur Info deine Datestrings aber anderweitig benötigt und damit mein Dank an dich!

Grüße

René