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 mit Sicherung der alten Daten

Frage Entwicklung Batch & Shell

Mitglied: dontknow

dontknow (Level 1) - Jetzt verbinden

14.11.2007, aktualisiert 22.11.2007, 5539 Aufrufe, 5 Kommentare

Hallo zusammen!

Ich habe schon lange gesucht, und bis jetzt nicht das ganz passende gefunden...
Ich mache per Batch-Datei ein Inkrementelles Backup (wahlweise Robocopy oder xcopy).
Funktiniert auch alles recht gut.
Ich hätte gerne noch die Option, dass alten die Dateien und Ordner (im Robocopy-logfile als "Older" gekennzeichnet) und die in der Quelle gelöschten Dateien und Ordner (im Robocopy-logfile als "*EXTRA File / Extra Dir" gekennzeichnet). in einen separaten Ordner geschoben werden (den ich mit Zeitstempel versehen würde).
Das Ziel ist, immer ein genaues Abbild des Quellordners zu haben aber die alten Daten nicht einfach zu überschreiben und die "Extra Files" nicht einfach zu löschen, da man die u.U. nochmal brauchen könnte, wenn man sich was zeschossen hat, und es zu spät merkt.
Das wäre meines Erachtens nach eine sehr übersichtliche und sichere Lösung, aber ich bekomme es so nicht hin!

Wie vorne schon geschrieben, suche ich schon recht lange (auch in diesem Forum), habe aber bis jetzt noch nicht das richtige gefunden. Ich hoffe nicht, dass ich zu blöd zum suchen bin, weil ich doch meine, dass so etwas doch für viele User Sinn machen würde.

Danke schonmal im Voraus für die Mühen!

PS: Das Forum ist einsame Spitze für alles um Windos und speziell für alle Batch Tricks und Kniffe

Gruß

Michael
Mitglied: Biber
14.11.2007 um 22:35 Uhr
Na ja, dontknow,

dann mal "Butter bei die Fische", wie man/frau bei uns sagt.
Dann poste doch mal die relevanten Ausschnitte Deines Batches und vor allem einen "typischen" Beispielausschnitt des Robocopy-Logfiles.

Sonst bleibt es zu abstrakt und auch zu dröge für die MitleserInnen...

Grüße
Biber
Bitte warten ..
Mitglied: dontknow
14.11.2007 um 23:29 Uhr
Hallo zusammen,

hier die wichtige Zeile meiner Batch:

robocopy D:\ \\192.168.5.252\Michael\DS-NB-Akt\D\ /B /E /R:3 /W:2 /LOG:D:\LogDSH-F.txt

In der LogDSH-F.txt steht dann z.B. so etwas drin:

Older 43 desktop.ini 0% 100%
1 D:\Entwicklungen\
*EXTRA Dir -1 \\192.168.5.252\Michael\DS-NB-Akt\D\Entwicklungen\_bv-hw\
*EXTRA Dir -1 \\192.168.5.252\Michael\DS-NB-Akt\D\Entwicklungen\PC-Geh
New File 373760 #Aufkleber-BV-PC.doc 0% 17% 35% 52% 70% 87% 100%

(Die Tabelle nur, damit es lesbar ist, ist eine normale ASCII mit Tabs)

Ich hätte gerne in diesem Fall die Desktop.ini und die beiden "*Extra Dir" auf der Netzwerkplatte in einen definierten Ordner verschoben (oder vor der eigentlichen Sicherung kopiert), dann könnte ich Robocopy so einstellen, dass es die "Older" Files überschreibt und die "*Extra..." löscht.
Die Löschung und Überschreibung möchte ich aber nicht ohne die vorherige Sicherung machen, da es ja mal sein kann, dass man sich Daten löscht oder "kaputtbearbeitet".
Wenn man dass erst nach der nächsten Datensicherung merkt, ist es zu spät.
Ich wollte dann immer neue Ordner mit den "alten Ständen" erzeugen, die man dann nach einigen Montaten nach Bedarf löschen kann.
Ich hoffe, ich konnte mein Anliegen näher bringen, wäre toll, wenn jemand da eine gute Idee hat!

Das muss auch nicht unbedingt mit Robocopy gelöst werden, alles was sich irgendwie "Batchen" lässt ist OK für mich.
(natürlich so einfach wie möglich )

Danke

Michael
[Edit Biber] Hier noch mal für die echten Bätcher im Original:
01.
Older		 43		 desktop.ini    0%  100%					  
02.
 		 1		 D:\Entwicklungen\						  
03.
*EXTRA Dir	 -1		 \\192.168.5.252\Michael\DS-NB-Akt\D\Entwicklungen\_bv-hw\	  
04.
*EXTRA Dir	 -1		 \\192.168.5.252\Michael\DS-NB-Akt\D\Entwicklungen\PC-Geh	  
05.
New File	 373760	 #Aufkleber-BV-PC.doc  0%  17%   35%   52%   70%   87%  100%	 
[/Edit]
Bitte warten ..
Mitglied: miniversum
15.11.2007 um 08:19 Uhr
Hier mal meine ungetestete Idee dazu:
01.
@echo off 
02.
setlocal enabledelayedexpansion 
03.
set "quelle=C:\quellordner" 
04.
set "ziel=C:\sicherungsordner" 
05.
set "backup=C:\backupordner\%date%" 
06.
 
07.
:: Auslesen welche Dateien und Verzeichnisse kopiert werden wuerden in eine temponaere Liste 
08.
xcopy "%quelle%" "%ziel%" /c /s /e /r /v /d /y /i /h /f /o /x /L>"%temp%\liste.txt" 
09.
 
10.
:: Kopieren der Dateien in der Liste zum Backup 
11.
FOR /F "delims=" %%f in ("%temp%\liste.txt") do ( 
12.
set "backuppart=%%f" 
13.
set "backuppart=!backuppart:%ziel%=!" 
14.
copy "%%f" "%backup%\%backuppart%" 
15.
16.
 
17.
:: Nun kopieren des Dateien und Verzeichnisse 
18.
xcopy "%quelle%" "%ziel%" /c /s /e /r /v /d /y /i /h /f /o /x 
19.
 
20.
:: Loeschen der temponaeren Liste 
21.
del "%temp%\liste.txt"
miniversum
Bitte warten ..
Mitglied: dontknow
22.11.2007 um 20:58 Uhr
Hallo und danke für den Tipp nochmal!

Sorry wegen der späten Meldung, aber ich habe in den letzten Tagen erst viel an diesem Problem weitergebastelt...
Der Tipp hat bei mir zwar so nicht funktioniert, aber die Idee mit der Liste war super!!!
Aber nochmal zu Verständnis:
Muss hier nicht was mit "Tokens" rein?
01.
FOR /F "delims=" %%f in ("%temp%\liste.txt") do (
Und was soll diese Zeile ganu bewirken:
01.
set "backuppart=!backuppart:%ziel%=!"
Ich habe die Listen-Idee etwas verändert und erweitert,
hier mein derzeitiger Stand:

01.
@echo off 
02.
if exist BackupFehler.txt del BackupFehler.txt 
03.
for /F "tokens=1,2" %%a in ('Date /T') do set HEUTE=%%a 
04.
 
05.
set Quelle=D:\ 
06.
set /p "ZielDisk=Bitte Sicherungslaufwerk angeben (ohne :) " 
07.
set "Backup=%ZielDisk%:\DatenSicherung-NB\Backup_%HEUTE:~8,4%%HEUTE:~3,2%%HEUTE:~0,2%" 
08.
set "Ziel=%ZielDisk%:\DatenSicherung-NB\D" 
09.
::!!!Unbedingt bei :BackupExtraFile den Eintrag ":~23," an die Länge des Zielpfads anpassen!!! 
10.
set /p "Ablauf=Nur (S)icherung oder mit (B)ackup: " 
11.
if %Ablauf%==s goto Sichern 
12.
 
13.
::Liste der Backup-Dateien erstellen 
14.
robocopy %Quelle% %Ziel% /B /FFT /MIR /R:3 /W:2 /XD $_ $PArchiv Recycler "System Volume Information" /NDL /NS /NJH /NJS /L >"ListeBackup.txt" 
15.
 
16.
:: Kopieren der Dateien in der Liste zum Backup 
17.
FOR /F "tokens=1,2 delims=	" %%i in (ListeBackup.txt) do call :BackupLoop "%%i" "%%j%" 
18.
 
19.
:Sichern 
20.
echo. 
21.
echo Beginne mit der Sicherung.... 
22.
echo. 
23.
robocopy %Quelle% %Ziel% /B /FFT /MIR /R:3 /W:2 /XD $_ $PArchiv Recycler "System Volume Information" 
24.
robocopy "C:\Dokumente und Einstellungen\Keite\Desktop" "%ZielDisk%:\DatenSicherung-NB\Desktop" /B /FFT /MIR /R:3 /W:2 
25.
if %ERRORLEVEL% GEQ 8 goto EndeFehler 
26.
if exist BackupFehler.txt goto EndeFehler 
27.
 
28.
:EndeErfolg 
29.
echo. 
30.
echo ########################################### 
31.
echo # Die Sicherung wurde erfolgreich beendet!  
32.
echo # (Robocopy-Ergebnis %ERRORLEVEL% )           
33.
echo # Taste drcken um Fenster zu schlieáen...  
34.
echo ########################################### 
35.
Pause >nul 
36.
goto :EOF 
37.
 
38.
:EndeFehler 
39.
if exist BackupFehler.txt call BackupFehler.txt 
40.
echo. 
41.
echo ########################################### 
42.
echo # Es ist ein Fehler aufgetreten!            
43.
echo # (Robocopy-Fehler %ERRORLEVEL% )           
44.
echo # Taste drcken um Fenster zu schlieáen...  
45.
echo ########################################### 
46.
Pause >nul 
47.
goto :EOF 
48.
 
49.
:----------------------------------------------Backup-Subroutine 
50.
:BackupLoop 
51.
 
52.
set FileTyp=%1 
53.
echo %FileTyp% 
54.
if %FileTyp%=="    New File  " goto EndeBackupLoop 
55.
if %FileTyp%=="    Newer     " goto BackupNewFile 
56.
if %FileTyp%=="  *EXTRA File " goto BackupExtraFile 
57.
goto EndeBackupLoop 
58.
 
59.
:BackupNewFile 
60.
set BackupQuellPfad=%2 
61.
set BackupQuellPfad=%Ziel%%BackupQuellPfad:~3,-1% 
62.
set BackupZielPfad=%2 
63.
set BackupZielPfad=%Backup%%BackupZielPfad:~3,-1%* 
64.
xcopy "%BackupQuellPfad%" "%BackupZielPfad%" /S /V /H /R /Y /C 
65.
if NOT %ERRORLEVEL%==0 echo ERR-BcpNF bei: "%BackupQuellPfad%" >>BackupFehler.txt 
66.
goto EndeBackupLoop 
67.
 
68.
:BackupExtraFile 
69.
set BackupQuellPfad=%2 
70.
set BackupQuellPfad=%BackupQuellPfad:~1,-1% 
71.
set BackupZielPfad=%2 
72.
set BackupZielPfad=%Backup%%BackupZielPfad:~23,-1%* 
73.
xcopy "%BackupQuellPfad%" "%BackupZielPfad%" /S /V /H /R /Y /C 
74.
if NOT %ERRORLEVEL%==0 echo ERR-BcpEF bei: "%BackupQuellPfad%" >>BackupFehler.txt 
75.
 
76.
:EndeBackupLoop 
77.
goto :EOF 
78.
:----------------------------------------------Backup-Subroutine-Ende
Zur Erläuterung:
Erstmal lösche ich die alter Fehler-Logdatei und erstelle eine Variable für einen Zeitstempel.
Dann frage ich das Sicherungslaufwerk ab, da ich je nach Standort auf eine andere Platte sichern möchte
Das Verzeichnis "DatenSicherung-NB" bleibt gleich,
Dann werden die Pfade für "Backup" und "Ziel" erstellt.
Die Liste selber erstelle ich mit Robocopy, da gibts einige Optionen,
die eine Übersichtliche Gestaltung der Liste ermöglichen und den überflüssigen Kram raus lassen.
Der große Vorteil hierbei ist, dass von Robocopy die "Extra-Files" mit angegeben werden
(um die kümmert sich xcopy meines Wissens leider nicht).
Dann wird jeder Listeneintrag in einer Schleife abgearbeitet:
-Abfrage ob der Eintrag überhaupt als Backup in Frage kommt (Bei "New File" nicht nötig)
-Die entsprechende Backupschleife ausführen (notwendig, weil die "Newer" und
"Extra" Files jewils andere Pfadangaben in der Liste haben)
-Fehler bei einem Backup-Vorgang werden in der Datei "BackupFehler.txt" hinterlegt.

Danach wird die eigentliche Datensicherung (!und Löschung der überflüssigen!) mittels Robocopy durchgeführt.
Zum guten Schluss gibts noch ne Meldung, ob alles OK war, oder ob Fehler aufgetreten sind.
Das kann man nochwesentlich komfortabler gestalten, für die Robocopy-Fehlercodes
gibt es einen schönen "Einbauvorschlag" für Batch-Dateien in der Doku...

Jetzt aber genug vom Geschwafel!
Danke nochmal für den Tipp und wenn jemand noch Verbesserungsvorschläge hat oder Fragen,
immer her damit, werden stets gerne genommen (Zumal das alles trotz erster erfolgreicher Tests
keinen Anspruch auf Perfektion erhebt)

Michael
Bitte warten ..
Mitglied: miniversum
22.11.2007 um 21:39 Uhr
Zur Erklärung:
Mit
FOR /F "delims=" %%f in ("%temp%\liste.txt") do (
set "backuppart=%%f"
wird jede Zeile einzeln aus der Datei ausgelesen und in die Variable backuppart geschrieben. Dort steht dann der Dateiname mit Pfadangabe der Dateien drin die den Zielordner kopiert werden würden. Die Pfadangabe ist allerdings die des Zielordners. Daher wird hier mit
set "backuppart=!backuppart:%ziel%=!"
Der Teil des textes der gleich dem Zielordner entspricht einfach entfernt (siehe dazu set /?) und beim vorherigen sichern der Backupordner davor gestellt.

miniversum
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Cloud-Dienste
gelöst SharePoint Online und Daten Backup (2)

Frage von malika zum Thema Cloud-Dienste ...

Backup
gelöst Sicherung auf USB Festplatte mit Acronis Backup und Robocopy (5)

Frage von mike7050 zum Thema Backup ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...