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-

Documents pareils