Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Backup-Script inkl. Ordner mit Tagesdatum

Anleitung Entwicklung Batch & Shell

Mitglied: hamspirit

hamspirit (Level 1) - Jetzt verbinden

02.11.2009, aktualisiert 18.10.2012, 27257 Aufrufe, 12 Kommentare, 8 Danke

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)

01.
 
02.
: Setzen der Variablen 
03.
set Quellverzeichnis=z:\ 
04.
set Zielverzeichnis=h:\%date:~-4,4%-%date:~-7,2%-%date:~-10,2% 
05.
 
06.
cls 
07.
echo. 
08.
echo --------------------------------------------------------- 
09.
echo. 
10.
echo Die DATENSICHERUNG wird gestartet. 
11.
echo. 
12.
echo. 
13.
set Quellverzeichnis 
14.
echo. 
15.
set Zielverzeichnis 
16.
echo. 
17.
echo. 
18.
echo Bitte beenden Sie alle geöffneten Anwendungen! 
19.
echo. 
20.
echo --------------------------------------------------------- 
21.
pause 
22.
 
23.
 
24.
: Neues Zielverzeichnis (Datum) erstellen 
25.
md h:\%date:~-4,4%-%date:~-7,2%-%date:~-10,2% 
26.
 
27.
: Kopieren der Quelldaten in das neue Verzeichnis 
28.
XCOPY z:\ h:\%date:~-4,4%-%date:~-7,2%-%date:~-10,2% /S /E /C /H /O /R /Y /D /V
Mitglied: Globetrotter
02.11.2009 um 20:31 Uhr
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% 
Bitte warten ..
Mitglied: Biber
02.11.2009 um 20:57 Uhr
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:

01.
@echo OFF & setlocal 
02.
 
03.
set TmpFile="%temp%.\tmp.vbs"  
04.
 
05.
echo> %TmpFile% n=Now  
06.
 
07.
echo>>%TmpFile% With WScript  
08.
echo>>%TmpFile% .Echo "set year=" + CStr(Year(n))  
09.
echo>>%TmpFile% .Echo "set yr="   + Right(Year(n),2)  
10.
echo>>%TmpFile% .Echo "set month="+ Right(100+Month(n),2)  
11.
echo>>%TmpFile% .Echo "set day="  + Right(100+Day(n),2)  
12.
echo>>%TmpFile% .Echo "set hour=" + Right(100+Hour(n),2)  
13.
echo>>%TmpFile% .Echo "set min="  + Right(100+Minute(n),2)  
14.
echo>>%TmpFile% .Echo "set sec="  + Right(100+Second(n),2)  
15.
echo>>%TmpFile% .Echo "set dow="  + WeekDayName(Weekday(n),1)  
16.
echo>>%TmpFile% .Echo "set dow2=" + WeekDayName(Weekday(n))  
17.
echo>>%TmpFile% .Echo "set iso="  + CStr(1 + Int(n-2) mod 7)  
18.
echo>>%TmpFile% .Echo "set iso2=" + CStr(Weekday(n,2))  
19.
echo>>%TmpFile% End With  
20.
cscript //nologo "%temp%.\tmp.vbs" >"%temp%\tmp.bat"  
21.
call "%temp%\tmp.bat"  
22.
:: hier tmp-bat noch nicht löschen 
23.
del  %TmpFile%  
24.
 
25.
set stamp=%year%-%month%-%day%_%hour%.%min%.%sec%  
26.
:: Bei Bedarf zur Kontrolle: -- echo Stamp: %stamp% 
27.
 
28.
:: %stamp% ist ermittelt.... Zwischenvariablen wegbratzen 
29.
For /f "usebackq delims==" %%i in ("%temp%\tmp.bat") do %%i= 
30.
 
31.
:: hier erst tmp-bat  löschen 
32.
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]
Bitte warten ..
Mitglied: Globetrotter
02.11.2009 um 21:19 Uhr
Hi Biber Du -> Klugsch€iss€rle
.. habe das Ding grade 1zu1 kopiert und hatte halt den Stamp noch drinne

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

Nix für Ungut!

Gruss Globe
Bitte warten ..
Mitglied: 60730
02.11.2009 um 23:24 Uhr
Zitat von Globetrotter:
Hi Biber Du -> Klugsch€iss€rle
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

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

Nix für Ungut!
Dito...
Gruss Globe
zurück..
Bitte warten ..
Mitglied: Farbauti
03.11.2009 um 12:07 Uhr
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:
01.
if "%TIME:~0,1%" == " " ( 
02.
	set NOWTIME=0%TIME:~1,1%-%TIME:~3,2%-%TIME:~6,2% 
03.
) else ( 
04.
	set NOWTIME=%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2% 
05.
)
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]
Bitte warten ..
Mitglied: Globetrotter
03.11.2009 um 12:12 Uhr
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
Bitte warten ..
Mitglied: marinux
06.11.2009, aktualisiert 18.10.2012
Das Ganze lässt sich gut mit folgendem Programm kombinieren:

Übersichtlich Backups nach KWs speichern v1.1
Bitte warten ..
Mitglied: priez
13.11.2009 um 02:58 Uhr
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é
Bitte warten ..
Mitglied: Kickinho
27.11.2009 um 19:32 Uhr
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
Bitte warten ..
Mitglied: andipc
01.12.2009 um 19:16 Uhr
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
Bitte warten ..
Mitglied: Biber
01.12.2009 um 19:31 Uhr
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
Bitte warten ..
Mitglied: priez
01.12.2009 um 20:41 Uhr
Hi Biber,

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

Grüße

René
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
Backup Script Optimierung und MSSQL (4)

Frage von TommyB83 zum Thema Batch & Shell ...

Batch & Shell
Ordner inkl. Unterordner nach Dateien überprüfen (4)

Frage von belfry zum Thema Batch & Shell ...

VB for Applications
gelöst VB Script rekursiv statt nur ein Ordner (4)

Frage von Saschaaaaa zum Thema VB for Applications ...

Batch & Shell
gelöst Per Script Ordner überwachen und Prog. ausfühern (9)

Frage von Knuefi zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...