Ausgebaute BackUp Batch
seid gegrüsst administrator.de Community
habe mal angefangen mir eine backup batch zu erstellen. habe jetzt eigentlich auch schon alles so wie ich das gerne möchte. bis auf den hauptpunkt das backUp selber. in meinem letzten beitrag konnten schon einige fehler behoben werden. nun stehe ich vor einem erneuten problem. ich würde gerne die drei verschiedenen BackUp arten zur auswahl stellen, nur bekomme ich diese nicht hin mit dem xcopy...
könntet ihr mir bidde vorschläge oder vielleicht sogar lösungen bei steuern?
danke vielmals schon im voraus!
bin am verzweifeln! xD
mfg
Waldgeist
mode 100, 60
:start
echo *
echo.
echo backup-batch hauptmenu
echo.
echo *
echo was moechten sie tun?
echo.
echo backup optionen
echo *
echo [1] vollbackup
echo [2] inkrementelles backup
echo [3] differenzielles backup
echo.
echo logfile optionen
echo **
echo [4] logfile ansehen
echo [5] logifle loeschen
echo [6] logfile inhalt loeschen
echo.
echo.
echo [b] beenden
echo.
echo.
set /p choice=Bitte Treffe Deine Auswahl:
if %choice% == 1 goto vollbackup
if %choice% == 2 goto inkrementelles
if %choice% == 3 goto differenzielles
if %choice% == 4 goto logfilea
if %choice% == 5 goto logfilel
if %choice% == 6 goto logfileil
if %choice% == b goto beenden
if not %choice% == 1 goto RESTART
if not %choice% == 2 goto RESTART
if not %choice% == 3 goto RESTART
if not %choice% == 4 goto RESTART
if not %choice% == 5 goto RESTART
if not %choice% == 6 goto RESTART
if not %choice% == b goto RESTART
REM ----------------------------------------------------------------------------------------------
REM ------------------------------------------------------------------------------"unterprogramme"
REM ----------------------------------------------------------------------------------------------
:vollbackup
IF exist log.txt echo %date% %time% voll_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
IF exist path.txt goto :pfad vorhanden
IF NOT exist path.txt echo neue path.txt erstellt am %date% um %time% > log.txt | echo neue path.txt erstellt | echo erstellt am %date% um %time% > path.txt | goto :pfadneu
set /p Quellpfad=bitte pfad der zu kopierenden daten/verzeichnisse angeben:
IF [%quellpfad%]==[} goto :xcopyvoll
If exist "%Quellpfad%" Echo %Quellpfad% >> path.txt
REM set /p Zielpfad=bitte ziel-Pfad angeben:
IF [%Zielpfad%]==[} goto :start
If exist "%zielpfad%" Echo %Zielpfad% >> path.txt
:xcopyvoll
REM xcopy %Quellpfad% %Zielpfad% /v /e /s /t /r /h /o /x
goto :Start
goto :START
:inkrementelles
IF exist log.txt echo %date% %time% inkrementelles_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
set /p Quellpfad=bitte pfad der zu kopierenden daten/verzeichnisse angeben:
IF [%quellpfad%]==[} goto :start
If exist "%Quellpfad%" Echo %Quellpfad% >>path.txt
goto :Start
goto :START
:differenzielles
IF exist log.txt echo %date% %time% differenzielles_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
set /p Quellpfad=bitte pfad der zu kopierenden daten/verzeichnisse angeben:
IF [%quellpfad%]==[} goto :start
If exist "%Quellpfad%" Echo %Quellpfad% >>path.txt
goto :Start
:logfilea
IF exist log.txt echo %date% %time% logfile(log.txt) ansehen gewaehlt >> log.txt | start log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
goto :START
:logfilel
del log.txt
echo.
echo Das logfile(log.txt) wurde erfolgreich geloescht!
echo.
goto :START
:logfileil
del log.txt
echo. > log.txt
goto :START
:RESTART
set /p _ok=Falsche Eingabe! Bitte Treffe Deine Auswahl:
goto START
:beenden
exit
:end
habe mal angefangen mir eine backup batch zu erstellen. habe jetzt eigentlich auch schon alles so wie ich das gerne möchte. bis auf den hauptpunkt das backUp selber. in meinem letzten beitrag konnten schon einige fehler behoben werden. nun stehe ich vor einem erneuten problem. ich würde gerne die drei verschiedenen BackUp arten zur auswahl stellen, nur bekomme ich diese nicht hin mit dem xcopy...
könntet ihr mir bidde vorschläge oder vielleicht sogar lösungen bei steuern?
danke vielmals schon im voraus!
bin am verzweifeln! xD
mfg
Waldgeist
mode 100, 60
:start
echo *
echo.
echo backup-batch hauptmenu
echo.
echo *
echo was moechten sie tun?
echo.
echo backup optionen
echo *
echo [1] vollbackup
echo [2] inkrementelles backup
echo [3] differenzielles backup
echo.
echo logfile optionen
echo **
echo [4] logfile ansehen
echo [5] logifle loeschen
echo [6] logfile inhalt loeschen
echo.
echo.
echo [b] beenden
echo.
echo.
set /p choice=Bitte Treffe Deine Auswahl:
if %choice% == 1 goto vollbackup
if %choice% == 2 goto inkrementelles
if %choice% == 3 goto differenzielles
if %choice% == 4 goto logfilea
if %choice% == 5 goto logfilel
if %choice% == 6 goto logfileil
if %choice% == b goto beenden
if not %choice% == 1 goto RESTART
if not %choice% == 2 goto RESTART
if not %choice% == 3 goto RESTART
if not %choice% == 4 goto RESTART
if not %choice% == 5 goto RESTART
if not %choice% == 6 goto RESTART
if not %choice% == b goto RESTART
REM ----------------------------------------------------------------------------------------------
REM ------------------------------------------------------------------------------"unterprogramme"
REM ----------------------------------------------------------------------------------------------
:vollbackup
IF exist log.txt echo %date% %time% voll_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
IF exist path.txt goto :pfad vorhanden
IF NOT exist path.txt echo neue path.txt erstellt am %date% um %time% > log.txt | echo neue path.txt erstellt | echo erstellt am %date% um %time% > path.txt | goto :pfadneu
set /p Quellpfad=bitte pfad der zu kopierenden daten/verzeichnisse angeben:
IF [%quellpfad%]==[} goto :xcopyvoll
If exist "%Quellpfad%" Echo %Quellpfad% >> path.txt
REM set /p Zielpfad=bitte ziel-Pfad angeben:
IF [%Zielpfad%]==[} goto :start
If exist "%zielpfad%" Echo %Zielpfad% >> path.txt
:xcopyvoll
REM xcopy %Quellpfad% %Zielpfad% /v /e /s /t /r /h /o /x
goto :Start
goto :START
:inkrementelles
IF exist log.txt echo %date% %time% inkrementelles_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
set /p Quellpfad=bitte pfad der zu kopierenden daten/verzeichnisse angeben:
IF [%quellpfad%]==[} goto :start
If exist "%Quellpfad%" Echo %Quellpfad% >>path.txt
goto :Start
goto :START
:differenzielles
IF exist log.txt echo %date% %time% differenzielles_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
set /p Quellpfad=bitte pfad der zu kopierenden daten/verzeichnisse angeben:
IF [%quellpfad%]==[} goto :start
If exist "%Quellpfad%" Echo %Quellpfad% >>path.txt
goto :Start
:logfilea
IF exist log.txt echo %date% %time% logfile(log.txt) ansehen gewaehlt >> log.txt | start log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
goto :START
:logfilel
del log.txt
echo.
echo Das logfile(log.txt) wurde erfolgreich geloescht!
echo.
goto :START
:logfileil
del log.txt
echo. > log.txt
goto :START
:RESTART
set /p _ok=Falsche Eingabe! Bitte Treffe Deine Auswahl:
goto START
:beenden
exit
:end
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 56988
Url: https://administrator.de/contentid/56988
Ausgedruckt am: 26.11.2024 um 08:11 Uhr
20 Kommentare
Neuester Kommentar
Incrementell und differentiell kannst du auch Ohne Archivbit machen indem du mit der option /D die Sicherung durchführst. Genauer: Du nimst die Option /L und /D dazu und erzeugst so eine Liste in eine Datei mit den Dateien Die sich unterscheiden und Arbeitest diese Liste dann in einem Zweiten Schrit ab. Das würde dan auchmit dem Normalen copy und einer Forschleife gehen.
miniversum
miniversum
Ich habe mein zu sicherndes Verzeichnis (C:\org), die letzte Vollsicherung (C:\fullbak) und das Verzeichnis indas die Sicherung kommen soll (C:\incr)
also vergleiche ich erstmal welche Dateien in C:\org anders sind wie in C:\fullbak und schreibe diese Liste in eine Datei.
dann werden die dateien veglichen udn die unterschiede (Äbderung seit der letzten inkrementellen Sicherung in eine Dritte temponäre Datei geschrieben (zusichernte.txt).
Dann kopiere ich manuell die einzelnen Dateien die in der Liste der zusichernte.txt aufgeführt sind vom C:\org in das C:\incr Verzeichnis mit Hilfe einer Forschleife.
Die genauen Code dazu kennst Du ja selbst.
Oder hab ich was Übersehen?
miniversum
also vergleiche ich erstmal welche Dateien in C:\org anders sind wie in C:\fullbak und schreibe diese Liste in eine Datei.
xcopy C:\org C:\fullbak /D /L /andereoptionen>liste.txt
Dann das gleiche mit der letzten inkrementellen Sicherung in eine andere Datei (weg.txt)dann werden die dateien veglichen udn die unterschiede (Äbderung seit der letzten inkrementellen Sicherung in eine Dritte temponäre Datei geschrieben (zusichernte.txt).
Dann kopiere ich manuell die einzelnen Dateien die in der Liste der zusichernte.txt aufgeführt sind vom C:\org in das C:\incr Verzeichnis mit Hilfe einer Forschleife.
Die genauen Code dazu kennst Du ja selbst.
Oder hab ich was Übersehen?
miniversum
Hallo miniversum!
Deine Zielsetzung würde ich eher als Kombination von "inkrementell" und "differenziell" sehen: Durch das inkrementelle Hinzufügen der Daten hast Du weniger zu sichern und als Ergebnis trotzdem alle Änderungen seit der letzten Vollsicherung (also eine Differenzsicherung).
Im Vergleich zur "klassischen" Inkrementsicherung in jeweils eigene Sicherungsstände (worauf sich meine Frage eigentlich bezogen hatte) fehlt Dir damit eigentlich nur die Möglichkeit, bei Bedarf auf ältere Versionen zurückzugreifen (also etwa bei wöchentlichen Vollsicherungen und tageweise angelegten inkrementellen Ständen die Datei von vorvorgestern hervorzuzaubern) - aber wenn das wichtig ist, wirst Du ohnehin eine Art von Versionierung verwenden.
Ich weiß nicht, ob ich Deine Vorgangsweise richtig verstanden habe, aber etwa so hätte ich es mir zurechtgelegt:
Vergleich aktuelle Daten : Vollsicherung -> Unterschiede in "ListeV.txt"
Vergleich aktuelle Daten : Inkrement-(Differenz-)Sicherung -> Unterschiede in "ListeI.txt"
Kopieren der in beiden Listen vorkommenden Dateien in die Inkrement-Sicherung
Grüße
bastla
Deine Zielsetzung würde ich eher als Kombination von "inkrementell" und "differenziell" sehen: Durch das inkrementelle Hinzufügen der Daten hast Du weniger zu sichern und als Ergebnis trotzdem alle Änderungen seit der letzten Vollsicherung (also eine Differenzsicherung).
Im Vergleich zur "klassischen" Inkrementsicherung in jeweils eigene Sicherungsstände (worauf sich meine Frage eigentlich bezogen hatte) fehlt Dir damit eigentlich nur die Möglichkeit, bei Bedarf auf ältere Versionen zurückzugreifen (also etwa bei wöchentlichen Vollsicherungen und tageweise angelegten inkrementellen Ständen die Datei von vorvorgestern hervorzuzaubern) - aber wenn das wichtig ist, wirst Du ohnehin eine Art von Versionierung verwenden.
Ich weiß nicht, ob ich Deine Vorgangsweise richtig verstanden habe, aber etwa so hätte ich es mir zurechtgelegt:
Vergleich aktuelle Daten : Vollsicherung -> Unterschiede in "ListeV.txt"
Vergleich aktuelle Daten : Inkrement-(Differenz-)Sicherung -> Unterschiede in "ListeI.txt"
Kopieren der in beiden Listen vorkommenden Dateien in die Inkrement-Sicherung
Grüße
bastla
Ich glaube jetzt hab ich deine Vorgehensweise falsch verstanden (naja bin auch kein ITler).
Wenn Du die Unterschiede zur Vollsicherung machst und in eine Datei schreibst und die Unterschiede zur letzten inkrementellen Sicherung udn die in eine Andere Datei schreibst udnd ann Beide Dateien Abarbeitest als listen dann hast du doch Dateien doppelt gesichert? Ich dachte eher den unterschied der beiden Dateien in eine Extra Datei und diese zum Sichern abarbeiten.
Also in deinem Beispiel:
ListeV.txt - ListeI.txt = ListeS.txt
Danach ListeS.txt abarbeiten.
miniversum
Wenn Du die Unterschiede zur Vollsicherung machst und in eine Datei schreibst und die Unterschiede zur letzten inkrementellen Sicherung udn die in eine Andere Datei schreibst udnd ann Beide Dateien Abarbeitest als listen dann hast du doch Dateien doppelt gesichert? Ich dachte eher den unterschied der beiden Dateien in eine Extra Datei und diese zum Sichern abarbeiten.
Also in deinem Beispiel:
ListeV.txt - ListeI.txt = ListeS.txt
Danach ListeS.txt abarbeiten.
miniversum
Hallo miniversum!
Meine Idee war, jene Dateien zu sichern, die weder in der einen (Voll-) noch in der anderen (Inkrement-) Sicherung aktuell sind (und daher in beiden Listen vorkommen müssen), also:
Grüße
bastla
Meine Idee war, jene Dateien zu sichern, die weder in der einen (Voll-) noch in der anderen (Inkrement-) Sicherung aktuell sind (und daher in beiden Listen vorkommen müssen), also:
for /f "delims=" %%i in (ListeV.txt) do findstr /C:"%%i" ListeI.txt && copy /y "%%i" C:\incr
Grüße
bastla
Hallo miniversum!
Bei meiner Variante nehme ich an, wenn eine Datei über "xcopy /D /L" nur in eine Liste eingetragen wird, bedeutet das, dass sie in der anderen Sicherung ohnehin schon aktuell ist und daher nicht gesichert werden muss.
Beispiel: Alle seit der Vollsicherung unveränderten Dateien landen in der "ListeI", da sie ja in der Inkrement-Sicherung nicht enthalten sind, während sie in der "ListeV" nicht auftauchen, da ja in der Vollsicherung bereits eine übereinstimmende Datei liegt.
Wird umgekehrt eine veränderte Datei erstmals in die Inkrement-Sicherung aufgenommen, kommt sie in weiterer Folge nur noch in die "ListeV" (da in der Vollsicherung noch die alte Version enthalten ist), muss dann aber nicht nochmals gesichert werden, da sie ja in der Inkrementsicherung beim letzten Mal bereits berücksichtigt wurde.
Grüße
bastla
Ja eben. meine ja auch. Die Idee war also die Gleiche. :D
Dort landen wir erfreulicherweise öfter (und, neidlos anerkannt, öfters bei Deinen Ideen ... ).Nur Umgesetzt hätte ich sie halt über den /D parameter vom xcopy zum Vergleich der Verzeichnisse direkt udn dem /L Parameter zusammen der nur anzeigt welche copiert werden würden. Diese Ausgabe dan inne datei umleiten udn feritig.
Genau das hatte ich vorausgesetzt (damit entstehen ja die beiden Listen) - nur die Auflösung gehen wir anscheinend unterschiedlich an ...Bei meiner Variante nehme ich an, wenn eine Datei über "xcopy /D /L" nur in eine Liste eingetragen wird, bedeutet das, dass sie in der anderen Sicherung ohnehin schon aktuell ist und daher nicht gesichert werden muss.
Beispiel: Alle seit der Vollsicherung unveränderten Dateien landen in der "ListeI", da sie ja in der Inkrement-Sicherung nicht enthalten sind, während sie in der "ListeV" nicht auftauchen, da ja in der Vollsicherung bereits eine übereinstimmende Datei liegt.
Wird umgekehrt eine veränderte Datei erstmals in die Inkrement-Sicherung aufgenommen, kommt sie in weiterer Folge nur noch in die "ListeV" (da in der Vollsicherung noch die alte Version enthalten ist), muss dann aber nicht nochmals gesichert werden, da sie ja in der Inkrementsicherung beim letzten Mal bereits berücksichtigt wurde.
Grüße
bastla
Hallo miniversum!
Sie landen da, weil zu Beginn die Inkrementsicherung leer ist, und daher beim ersten Durchlauf alle Dateien in die Liste aufgenommen werden. Sobald die seit der Vollsicherung veränderten Dateien erstmals in die Inkrementsicherung gelangt sind, fehlen dort im Vergleich zum aktuellen Datenstand immer noch alle unveränderten Dateien.
Oder Kurzfassung: Mit "xcopy /D" erhalte ich alle veränderten sowie alle im Ziel nicht vorhandenen Dateien.
Grüße
bastla
Sie landen da, weil zu Beginn die Inkrementsicherung leer ist, und daher beim ersten Durchlauf alle Dateien in die Liste aufgenommen werden. Sobald die seit der Vollsicherung veränderten Dateien erstmals in die Inkrementsicherung gelangt sind, fehlen dort im Vergleich zum aktuellen Datenstand immer noch alle unveränderten Dateien.
Oder Kurzfassung: Mit "xcopy /D" erhalte ich alle veränderten sowie alle im Ziel nicht vorhandenen Dateien.
Grüße
bastla
ok das mit dem xcopy /D weiß ich ja.
Aber jetzt weiß ich wo wir an einander vorbei reden glaub ich.
Ich bin davon ausgegangen das schon eine inkrementelle Sicherung vorhanden ist die neuer ist wie die Vollsicherung.
Also z.B. Sonntag war Vollsicherung, Montag inkrementelle Sicherung und heute ist Dienstag und ich will weider ne Inkrementelle Sicherung machen.
miniversum
Aber jetzt weiß ich wo wir an einander vorbei reden glaub ich.
Ich bin davon ausgegangen das schon eine inkrementelle Sicherung vorhanden ist die neuer ist wie die Vollsicherung.
Also z.B. Sonntag war Vollsicherung, Montag inkrementelle Sicherung und heute ist Dienstag und ich will weider ne Inkrementelle Sicherung machen.
miniversum
Hallo Waldgeist!
Vielleicht kannst Du auf Basis der fogenden Skizze weitermachen:
Da ich nicht so ganz verstehe, was Du mit "path.txt" vor hast, habe ich diese Datei vorläufig nur zum Loggen der Pfade verwendet.
Grüße
bastla
[Edit] Anmerkung: Die "xcopy"-Option /Y zum kommentarlosen Überschreiben bereits vorhandener Dateien wäre vor allem für die Differenzsicherung ratsam. [/Edit]
Vielleicht kannst Du auf Basis der fogenden Skizze weitermachen:
@echo off
mode 100, 60
:start
cls
echo *
echo.
echo backup-batch hauptmenu
echo.
echo *
echo was moechten sie tun?
echo.
echo backup optionen
echo ***
echo [1] vollbackup
echo [2] inkrementelles backup
echo [3] differenzielles backup
echo.
echo logfile optionen
echo.
echo [4] logfile ansehen
echo [5] logifle loeschen
echo [6] logfile inhalt loeschen
echo.
echo.
echo [b] beenden
echo.
echo.
:Auswahl
set /p choice=Bitte Treffe Deine Auswahl:
if %choice% == 1 goto vollbackup
if %choice% == 2 goto inkrementelles
if %choice% == 3 goto differenzielles
if %choice% == 4 goto logfilea
if %choice% == 5 goto logfilel
if %choice% == 6 goto logfileil
if %choice% == b goto beenden
echo.
echo Falsche Eingabe!
goto :Auswahl
REM ----------------------------------------------------------------------------------------------
REM ------------------------------------------------------------------------------"unterprogramme"
REM ----------------------------------------------------------------------------------------------
:vollbackup
IF exist log.txt echo %date% %time% voll_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt & echo da noch kein logfile(log.txt) existierte, wurde eines erstellt. & pause
IF NOT exist path.txt echo neue path.txt erstellt am %date% um %time% > log.txt & echo neue path.txt erstellt & echo erstellt am %date% um %time% > path.txt & pause
:QuellPfadVoll
set /p Quellpfad=bitte pfad der zu kopierenden daten/verzeichnisse angeben:
IF [%quellpfad%]== goto :START
If not exist "%Quellpfad%" goto :QuellPfadVoll
set /p Zielpfad=bitte ziel-Pfad angeben:
IF [%Zielpfad%]== goto :start
echo Quellpfad: %Quellpfad% >> path.txt
echo Zielpfad: %Zielpfad% >> path.txt
echo.
xcopy /C /I /e /s /r /h /o /x "%Quellpfad%" "%Zielpfad%" && attrib -a /s %QuellPfad%\*.*
pause
goto :START
:inkrementelles
IF exist log.txt echo %date% %time% inkrementelles_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt & echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. & pause
IF NOT exist path.txt echo neue path.txt erstellt am %date% um %time% > log.txt & echo neue path.txt erstellt & echo erstellt am %date% um %time% > path.txt & pause
:QuellPfadInc
set /p Quellpfad=bitte pfad der zu kopierenden daten/verzeichnisse angeben:
IF [%quellpfad%]== goto :START
If not exist "%Quellpfad%" goto :QuellPfadInc
set /p Zielpfad=bitte ziel-Pfad angeben:
IF [%Zielpfad%]== goto :start
echo Quellpfad: %Quellpfad% >> path.txt
echo Zielpfad: %Zielpfad% >> path.txt
xcopy /M /C /I /e /s /r /h /o /x "%Quellpfad%" "%Zielpfad%"
echo.
pause
goto :START
:differenzielles
IF exist log.txt echo %date% %time% differenzielles_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt & echo da noch kein logfile(log.txt) existierte, wurde eines erstellt. & pause
IF NOT exist path.txt echo neue path.txt erstellt am %date% um %time% > log.txt & echo neue path.txt erstellt & echo erstellt am %date% um %time% > path.txt & pause
:QuellPfadDiff
set /p Quellpfad=bitte pfad der zu kopierenden daten/verzeichnisse angeben:
IF [%quellpfad%]== goto :START
If not exist "%Quellpfad%" goto :QuellPfadDiff
set /p Zielpfad=bitte ziel-Pfad angeben:
IF [%Zielpfad%]== goto :start
echo Quellpfad: %Quellpfad% >> path.txt
echo Zielpfad: %Zielpfad% >> path.txt
xcopy /A /C /I /e /s /r /h /o /x "%Quellpfad%" "%Zielpfad%"
echo.
pause
goto :Start
:logfilea
IF exist log.txt echo %date% %time% logfile(log.txt) ansehen gewaehlt >> log.txt & start log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt & echo da noch kein logfile(log.txt) existierte, wurde eines erstellt. & goto :START
goto :START
:logfilel
del log.txt
echo.
echo Das logfile(log.txt) wurde erfolgreich geloescht!
echo.
pause
goto :START
:logfileil
echo. > log.txt
goto :START
:beenden
exit
Grüße
bastla
[Edit] Anmerkung: Die "xcopy"-Option /Y zum kommentarlosen Überschreiben bereits vorhandener Dateien wäre vor allem für die Differenzsicherung ratsam. [/Edit]
@miniversum
Simulieren wir den Ablauf mit ein paar Dateien:
... and so on ...
Grüße
bastla
Simulieren wir den Ablauf mit ein paar Dateien:
Verzeichnis Vollbackup (erstellt: Sonntag 15.04.2007)
Datei1.txt 11.04.2007
Datei2.txt 12.04.2007
Datei3.txt 13.04.2007
Datei4.txt 14.04.2007
Verzeichnis Inkrementbackup (Stand: Montag 16.04.2007)
leer
Verzeichnis Daten (Stand: Montag 16.04.2007)
Datei1.txt 16.04.2007 (am Montag geändert)
Datei2.txt 12.04.2007
Datei3.txt 13.04.2007
Datei4.txt 14.04.2007
Datei5.txt 16.04.2007 (am Montag hinzugefügt)
Backup Montag 16.04.2007
========================
"xcopy /D /L Daten Vollbackup" ergibt:
Datei1.txt 16.04.2007
Datei5.txt 16.04.2007
"xcopy /D /L Daten Inkrementbackup" ergibt:
Datei1.txt 16.04.2007
Datei2.txt 12.04.2007
Datei3.txt 13.04.2007
Datei4.txt 14.04.2007
Datei5.txt 16.04.2007
Zu kopieren (da in beiden Listen enthalten):
Datei1.txt 16.04.2007
Datei5.txt 16.04.2007
Verzeichnis Inkrementbackup (Stand: Dienstag 17.04.2007)
Datei1.txt 16.04.2007
Datei5.txt 16.04.2007
Verzeichnis Daten (Stand: Dienstag 17.04.2007)
Datei1.txt 16.04.2007 (am Montag geändert)
Datei2.txt 17.04.2007 (am Dienstag geändert)
Datei3.txt 13.04.2007
Datei4.txt 14.04.2007
Datei5.txt 16.04.2007 (am Montag hinzugefügt)
Datei6.txt 17.04.2007 (am Dienstag hinzugefügt)
Backup Dienstag 17.04.2007
========================
"xcopy /D /L Daten Vollbackup" ergibt:
Datei1.txt 16.04.2007
Datei2.txt 17.04.2007
Datei5.txt 16.04.2007
Datei6.txt 17.04.2007
"xcopy /D /L Daten Inkrementbackup" ergibt:
Datei2.txt 17.04.2007
Datei3.txt 13.04.2007
Datei4.txt 14.04.2007
Datei6.txt 17.04.2007
Zu kopieren (da in beiden Listen enthalten):
Datei2.txt 17.04.2007
Datei6.txt 17.04.2007
Verzeichnis Inkrementbackup (Stand: Mittwoch 18.04.2007)
Datei1.txt 16.04.2007
Datei2.txt 17.04.2007
Datei5.txt 16.04.2007
Datei6.txt 17.04.2007
Verzeichnis Daten (Stand: Mittwoch 17.04.2007)
Datei1.txt 16.04.2007 (am Mittwoch neuerlich geändert)
Datei2.txt 17.04.2007 (am Dienstag geändert)
Datei3.txt 13.04.2007
Datei4.txt 14.04.2007
Datei5.txt 16.04.2007 (am Montag hinzugefügt)
Datei6.txt 17.04.2007 (am Dienstag hinzugefügt)
Datei7.txt 18.04.2007 (am Mittwoch hinzugefügt)
Backup Mittwoch 18.04.2007
========================
"xcopy /D /L Daten Vollbackup" ergibt:
Datei1.txt 18.04.2007
Datei2.txt 17.04.2007
Datei5.txt 16.04.2007
Datei6.txt 17.04.2007
Datei7.txt 18.04.2007
"xcopy /D /L Daten Inkrementbackup" ergibt:
Datei1.txt 18.04.2007
Datei3.txt 13.04.2007
Datei4.txt 14.04.2007
Datei7.txt 18.04.2007
Zu kopieren (da in beiden Listen enthalten):
Datei1.txt 18.04.2007
Datei7.txt 18.04.2007
Verzeichnis Inkrementbackup (Stand: Donnerstag 19.04.2007)
Datei1.txt 18.04.2007
Datei2.txt 17.04.2007
Datei5.txt 16.04.2007
Datei6.txt 17.04.2007
Datei7.txt 18.04.2007
... and so on ...
Grüße
bastla
@miniversum
Schematisch sähe das so aus:
Wenn (vermutlich) die "ListeV.txt" kürzer ist, wird es aus Performancegründen besser sein, diese per Schleife abzuarbeiten, ansonsten kann man die Listen auch umgekehrt anordnen.
Grüße
bastla
Schematisch sähe das so aus:
@echo off & setlocal enabledelayedexpansion
set "Daten=C:\Alle Daten"
set "Voll=D:\Sicherung\Voll"
set "Inkr=D:\Sicherung\Inkr"
xcopy /D /L /S /Y "%Daten%" "%Voll%" | findstr /v /C:"Datei(en) kopiert" > ListeV.txt
xcopy /D /L /S /Y "%Daten%" "%Inkr%" | findstr /v /C:"Datei(en) kopiert" > ListeI.txt
for /f "delims=" %%i in (ListeV.txt) do findstr /C:"%%i" ListeI.txt >nul && call :Kopiere "%%i"
goto :eof
:Kopiere
set "Pfad=%~dp1"
set "RelPfad=!Pfad:%Daten%\=!
set "AbsPfad=%Inkr%\%RelPfad%"
if not exist "%AbsPfad%" md "%AbsPfad%"
copy /y %1 "%AbsPfad%" >nul
Grüße
bastla
@miniversum
Die von Dir angeführte Tatsache scheint Dich nicht daran zu hindern, sinnvolle Beiträge mit guten Ideen zu einem "IT"-Thema zu verfassen ...
Grüße
bastla
Naja bin eben kein ITler...
Diese Aussage von Dir lese ich jetzt zumindest schon zum zweiten Mal und stelle mir zumindest zum zweiten Mal die Frage: So what?Die von Dir angeführte Tatsache scheint Dich nicht daran zu hindern, sinnvolle Beiträge mit guten Ideen zu einem "IT"-Thema zu verfassen ...
Grüße
bastla