rem Robo_Backup.b
Transcription
rem Robo_Backup.b
D:\Projekte\Backup\Backup SynoWiki\Robo_Backup.bat Freitag, 25. März 2011 19:45 @echo off rem ================================================================================= rem Programm: rem Robo_Backup.bat - Dieses Script dient als Beispiel, wie ein Backup mit rem dem Microsoft (c) Tool 'Robocopy' realisiert werden kann. rem rem Funktion: rem Verzeichnisse mithilfe von 'Robocopy' sichern und anschliessend den Rechner rem mithilfe von 'PowerOff' herunterfahren. rem rem Beschreibung: rem Das Script kopiert an einem gewähltem Wochentag ALLE Dateien eines rem Verzeichnisses (oder mehrerer Verzeichnisse). An den anderen Wochentagen rem werden nur geänderte Dateien kopiert (inkrementell oder differentiell). rem Nach dem Kopieren wird der Rechner heruntergefahren. rem rem Folgende Anpassungen sind durchzuführen: rem o Wochentag für Full-Backup angeben - siehe (1) rem o Backup-Typ eintragen - siehe (2) rem o Sicherungsquellen und -ziele eintragen - siehe (3) rem rem Abhängigkeiten: rem o Robocopy. Robocopy ist ein Programm vom Microsoft (c). Es ist in den rem 'Windows Server 2003 Resource Kit Tools' von Microsoft (c) enthalten. rem Download: rem http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cf fd rem Robocopy.exe in dasselbe Verzeichnis speichern, wie diese Batch-Datei. rem rem o PowerOff (Created by Jorgen Bosman) rem Mit PowerOff kann ein Rechner automatisch und ohne Administratorrechte rem heruntergefahren werden. rem Download: http://users.telenet.be/jbosman/applications.html) rem Poweroff.exe in dasselbe Verzeichnis speichern, wie diese Batch-Datei. rem rem Beispiel für Verzeichnisstruktur: rem D:\Programme\Backup\Backup_Robo.bat rem D:\Programme\Backup\robocopy.exe rem D:\Programme\Backup\PowerOff.exe rem rem Bemerkung: rem Auf das Archivbit bezogen bietet Robocopy nur die Möglichkeiten rem a) alle Dateien kopieren rem b) nur Dateien mit gesetztem Archivbit kopieren rem c) nur Dateien mit gesetztem Archivbit kopieren und Archivbit löschen rem Was fehlt, ist die Möglichkeit rem d) Alle Dateien kopieren und Archivbit löschen rem Workaround: Archivbit nach dem Kopieren separat löschen rem (attrib -a %source%\*.* /s /d) rem --------------------------------------------------------------------------------rem History: rem -------rem 05.06.2010 - V1.0 A-Jay rem 23.03.2011 - V1.1 Überarbeitet für Veröffentlichung im Synology-Wiki rem ================================================================================= ; -1- D:\Projekte\Backup\Backup SynoWiki\Robo_Backup.bat Freitag, 25. März 2011 19:45 rem --------------------------------------------------------------------------------rem (1) Wochentag für Full-Backup Eintragen (Mon|Tue|Wed|Thu|Fri|Sat|Sun) set DayOfFullBackup=Sun rem --------------------------------------------------------------------------------rem (2) Backup-Typ für restliche Wochentage eintragen (I)nkrementell (D)ifferentiell set BackupType=I rem --------------------------------------------------------------------------------; ; ; rem ----------------------------rem Aktuellen Wochentag ermitteln rem ----------------------------; for /f "tokens=3" %%i in ('robocopy /?^|find "Started"') do ( set DayOfWeek=%%i ) set DayOfWeek=%DayOfWeek:~0,3% ; ; rem -----------------------------------rem Datum im Format YYYY-MM-DD ermitteln rem -----------------------------------; set year=%date:~-4% set month=%date:~-7,2% set day=%date:~-10,2% set dat=%year%-%month%-%day% ; ; rem --------------------rem Log-Dateien festlegen rem --------------------; IF /I NOT EXIST .\log md .\log set logfile=".\log\Robo_Backup_%dat%.log" ; ; ;@echo off ; ; rem --------------------------------------------------------------rem Robocopy-Job-Datei erstellen (-> Full- bzw. Inc/Diff-Backup) rem --------------------------------------------------------------; IF /I %DayOfWeek%==%DayOfFullBackup% (set BT=F) ELSE (set BT=%BackupType%) IF /I %BT%==C robocopy /NOSD /NODD /SAVE:Robo_Backup /QUIT & GOTO doit IF /I %BT%==F robocopy /NOSD /NODD /SAVE:Robo_Backup /QUIT & GOTO doit IF /I %BT%==I robocopy /NOSD /NODD /SAVE:Robo_Backup /QUIT & GOTO doit IF /I %BT%==D robocopy /NOSD /NODD /SAVE:Robo_Backup /QUIT & GOTO doit IF /I %BT%==M robocopy /NOSD /NODD /SAVE:Robo_Backup /QUIT & GOTO doit ; :doit /E /R:3 /W:5 /NP /ETA /LOG+:%logfile% /E /R:3 /W:5 /NP /ETA /LOG+:%logfile% /E /R:3 /W:5 /NP /ETA /M /LOG+:%logfile% /E /R:3 /W:5 /NP /ETA /A /LOG+:%logfile% /E /R:3 /W:5 /NP /ETA /MIR /LOG+:%logfile% -2- D:\Projekte\Backup\Backup SynoWiki\Robo_Backup.bat Freitag, 25. März 2011 19:45 ; echo . >>%logfile% echo --------------------------------------------------------------------- >>%logfile% echo Starte Backup: %date% %time% (%DayOfWeek%) >>%logfile% echo --------------------------------------------------------------------- >>%logfile% ; ; IF /I %BT%==C set bd=Copy IF /I %BT%==F set bd=%dat% (%BT%) IF /I %BT%==I set bd=%dat% (%BT%) IF /I %BT%==D set bd=%dat% (%BT%) IF /I %BT%==M set bd=Mirror ; ; rem ------------------------------------------------------------------------------rem (3) Hier die JOBs definieren rem ------------------------------------------------------------------------------rem rem Parameter: rem source: Quellpfad rem destin: Backupziel rem exdir : Auszuschliessende Verzeichnisse (Verzeichnisse werden nicht kopiert) rem exfil : Auszuschliessende Dateien (Dateien werden nicht kopiert) rem rem exdir+exfil: rem exdir=*temp* *abc* rem --> Verzeichnisse die 'temp' oder 'abc' im Namen enthalten rem werden nicht kopiert (z.B. C:\Test\xxxabcyyy\daten\ rem exfil=*bak* *pic* rem --> Dateien die 'bak' oder 'pic' im Namen enthalten, werden nicht rem kopiert (z.B. 'C:\Test\Blome.bak' oder 'C:\Test\pic_001.jpg' rem ------------------------------------------------------------------------------; ; rem ---------------------------------------------rem JOB 1 rem ---------------------------------------------set source="C:\Dokumente und Einstellungen\A-Jay" set destin="\\DS207p\Backup\%bd%"\C\DuE\A-Jay set exdir=*temp* *tmp* *verlauf* *cookies* *recent* *cache* set exfil=*ntuser* *UsrClass* *temp* *tmp* ; robocopy %source% %destin% /XF %exfil% /XD %exdir% /JOB:Robo_Backup IF /I %BT%==F (attrib -a %source%\*.* /s /d) ; ; rem ---------------------------------------------rem JOB 2 rem ---------------------------------------------set source="D:\Daten\A-Jay" set destin="\\DS207p\Backup\%bd%\D\daten\A-Jay" set exdir=*temp* *tmp* set exfil=*temp* *tmp* ; robocopy %source% %destin% /XF %exfil% /XD %exdir% /JOB:Robo_Backup IF /I %BT%==F (attrib -a %source%\*.* /s /d) ; -3- D:\Projekte\Backup\Backup SynoWiki\Robo_Backup.bat Freitag, 25. März 2011 19:45 ; rem ---------------------------------------------rem JOB 3 rem ---------------------------------------------set source="D:\Musik" set destin="\\DS207p\Backup\%bd%\D\Musik" set exdir=*temp* *tmp* *ctupdate* set exfil=*temp* *tmp* *mp3* ; robocopy %source% %destin% /XF %exfil% /XD %exdir% /JOB:Robo_Backup IF /I %BT%==F (attrib -a %source%\*.* /s /d) ; ; rem ---------------------------------------------rem JOB 4 rem ---------------------------------------------set source="D:\Projekte" set destin="\\DS207p\Backup\%bd%\D\Projekte" set exdir=*temp* *tmp* set exfil=*temp* *tmp* ; robocopy %source% %destin% /XF %exfil% /XD %exdir% /JOB:Robo_Backup IF /I %BT%==F (attrib -a %source%\*.* /s /d) ; ; ; :done echo --------------------------------------------------------------------- >>%logfile% echo Backup Fertig: %date% %time% >>%logfile% echo --------------------------------------------------------------------- >>%logfile% echo . >>%logfile% ; GOTO end ; ; :end rem ----------------------------------------------------------------------rem Mit PowerOff wird der Rechner heruntergefahren rem Mit Administratorrechten sollte das auch ohne das Programm 'PowerOff' rem gehen, dann einfach hier 'shutdown -s' aufrufen. rem Soll der Rechner nicht heruntergefahren werden, einfach den Aufruf rem auskommentieren. rem ----------------------------------------------------------------------echo . echo -------------------------------------------------------------------------echo . echo Backup done. Computer will shutdown in 30 seconds. Press CTRL-C to abort echo . ping 1.1.1.1 -n 1 -w 30000 > nul :: shutdown -s .\Poweroff poweroff ; -4-