Top-Themen

Aktuelle Themen (A bis Z)

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

RoboCopy mit sichern von gelöschten Dateien

Anleitung Entwicklung Batch & Shell

Mitglied: bernhard.h

bernhard.h (Level 1) - Jetzt verbinden

13.12.2010 um 10:39 Uhr, 10127 Aufrufe, 4 Kommentare, 1 Danke

ich sichere mit RoboCopy in regelmäßigen Abständen meine Daten. Da jedoch durch die Option /MIR oder /PURGE versehentlich gelöschte Daten oder Verzeichnisse auch in der Sicherung gelöscht werden habe ich dieses Script geschrieben um gelöschte Daten in ein eigenes Verzeichnis zu verschieben.

Die Sicherung erfolgt zuerst mit RoboCopy ohne /MIR bzw. /PURGE Option. Dabei muss allerdings eine Logdatei mit speziellem Aufbau generiert werden. Die dazu benötigten Optionen sind:

/BYTES (Dateigröße immer in Bytes, da ansonsten zusätzliche Leerzeichen die Auswertung erschweren)
/FP (komplette Dateipfade loggen)
/LOG:file (Dateiname muss im Script eingetragen werden)


Im Script selbst braucht dann nur noch der Name des Logfiles sowie das gewünschte Sicherungsverzeichnis festgelegt werden.

01.
@echo off 
02.
REM 
03.
REM Job zum Auswerten des Logfiles von Robocopy und verschieben der gelöschten Dateien in ein Sicherungsverzeichnis 
04.
REM 
05.
 
06.
REM "Hilfsprogramme" ausführen 
07.
if "%1" == "-CHECK-" GOTO DoCheck 
08.
if "%1" == "-COPYF-" GOTO DoCopyFile 
09.
if "%1" == "-COPYD-" GOTO DoCopyDir 
10.
 
11.
REM Hier die gewünschten Parameter eintragen: 
12.
REM COPY_DIR: Verzeichnis in welches die gelöschten Daten verschoben werden 
13.
REM LogFile: RoboCopy Logdatei 
14.
SET COPY_DIR=Deleted\%date%_%time:~0,2%_%time:~3,2%_%time:~6,2% 
15.
SET LogFile=Sicherung.log 
16.
 
17.
REM Logdatei durcharbeiten 
18.
FOR /F "tokens=1,2,3,*" %%i in (%LogFile%) DO CALL %0 -CHECK- %%i %%j %%k "%%l" 
19.
goto Fertig 
20.
 
21.
REM Prüfen einer Log-Zeile 
22.
:DoCheck 
23.
REM      %2    %3         %4         %5 
24.
REM *ZUS. Verz.       -1 D:\test\robo\d\u1\ 
25.
REM  *EXTRA Datei 1875110 D:\test\robo\d\cygwin1.dll 
26.
 
27.
SET iii=%2 
28.
IF "%iii:~0,1%"=="*" ( 
29.
echo %2 %3 %4 %5 
30.
IF "%4"=="-1" ( 
31.
CALL %0 -COPYD- %5 
32.
) ELSE ( 
33.
CALL %0 -COPYF- %5 
34.
35.
ECHO. 
36.
37.
goto end 
38.
 
39.
 
40.
REM Datei verschieben 
41.
:DoCopyFile 
42.
IF NOT EXIST "%COPY_DIR%\%~p2" ( 
43.
ECHO MD "%COPY_DIR%\%~p2" 
44.
MD "%COPY_DIR%\%~p2" 
45.
46.
ECHO CopyFile: %2 to "%COPY_DIR%\%~pnx2" 
47.
move %2 "%COPY_DIR%\%~pnx2" 
48.
goto end 
49.
 
50.
REM Verzeichnis verschieben 
51.
:DoCopyDir 
52.
IF NOT EXIST "%COPY_DIR%\%~pnx2" ( 
53.
ECHO MD "%COPY_DIR%\%~pnx2" 
54.
MD "%COPY_DIR%\%~pnx2" 
55.
56.
ECHO CopyDir: "%~2*.*" TO "%COPY_DIR%\%~pnx2" 
57.
FOR /R %2 %%f IN (*.*) DO MOVE %f "%COPY_DIR%\%~pnx2" 
58.
rem XCOPY "%~2*.*" "%COPY_DIR%\%~pnx2" 
59.
goto end 
60.
 
61.
:Fertig 
62.
 
63.
:end
Ich habe das Script mit englischem und mit deutschem Betriebssystem getestet und es funktioniert bei beiden.
Mitglied: r1chy2
21.01.2011 um 12:35 Uhr
Hallo,

vielen Dank für diese Anleitung. Genau das was ich gesucht habe!

Aber ich habe ja ein kleines Problem beim Alltagstest festgestellt:

Nachdem ich eine Datei vom Quellverzeichnis gelöscht habe, verschiebt das Skript diese Datei in den "Deleted"-Ordner (...\Deleted\%Datum_Zeit%\Pseudopfad\Datei).

Wenn ich dann aber dann das Skript noch einmal ausführe, egal ob Dateien verändert/gelöscht/erstellt wurden oder nicht, dann wird (unter anderem) der oben genannte Ordner noch einmal erstellt (mit neuem Zeitstempel).

PS: Mit ist aufgefallen, dass diese Zeile im Sicherung.log erhalten bleibt:
*EXTRA Dir -1 C:\J\Deleted\
Bitte warten ..
Mitglied: bernhard.h
21.01.2011 um 13:40 Uhr
Hallo r1chy2,

sollte mit folgender Änderung (ab Zeile 58) behoben sein:

ECHO CopyDir: "%~2*.*" TO "%COPY_DIR%\%~pnx2"
FOR /R %2 %%f IN (*.*) DO MOVE %f "%COPY_DIR%\%~pnx2"
REM Ordner nach verschieben löschen
rd %2
goto end

lg
Bernhard
Bitte warten ..
Mitglied: r1chy2
21.01.2011 um 14:33 Uhr
Hallo Bernhard,

danke für die Antwort. Ich hab das Skript korrigiert, aber der Fehler ist nach wie vor vorhanden.
Ich hab mich mal mit dem Code und der Systematik beschäftigt und mir ist folgendes aufgefallen:

%4 ist dann -1, wenn der Ordner/die Datei im Zielverzeichnis vorhanden ist, nicht aber im Quellverzeichnis.
Demnach erkennt das Skript Ordner/Dateien, die gelöscht wurden und verschiebt es im Zielverzeichnis entsprechend in den Delete-Ordner.
Da der Delete-Ordner und dessen Inhalt aber auch nicht im Quellverzeichnis vorhanden ist, bekommt er im Sicherung.log ebenfalls die Markierung -1 (bei %4).

Wenn es möglich wäre, eine if-else-Bedingung reinzuprogrammieren, die prüft ob %5 das Verzeichnis ist, in das die gelöschten Daten verschoben wurden (also: Deleted\%date%_%time:~0,2%_%time:~3,2%_%time:~6,2%). Und wenn ja, dann diese Zeile/diesen Ordner ignoriert, dann könnte es ja funktionieren.

Ich kann leider Batch nicht so gut programmieren.

Danke!
Bitte warten ..
Mitglied: bernhard.h
21.01.2011 um 16:36 Uhr
Hallo r1chy2,

ich habe leider erst jetzt gesehen was das eigentliche Problem ist:

du schiebst die gelöschen Dateien in ein Unterverzeichnis des Zielordners. Das ist so nicht vorgesehen. Der Ordern für die gelöschten Dateien sollte nicht im Zielverzeichnis liegen!!

verwende nicht C:\J\Deleted\ sondern C:\Deleted\.

lg
Bernhard
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Robocopy Backup Script
Tipp von kunert0345Batch & Shell9 Kommentare

Backupscript zum Erstellen monatlicher Backups und zur täglichen Aktualisierung der monatlichen Backups:

Batch & Shell
Robocopy mit Powershell und Fortschrittsanzeige
Anleitung von SamTrexBatch & Shell2 Kommentare

Die Aufgabe Ich sichere von Zeit zu Zeit verschiedene Verzeichnisse von unserem Familien-Server auf mehrere externe Festplatten weg. In ...

Sicherheit
Sicherer Umgang mit Supportkonten
Anleitung von DerWoWussteSicherheit6 Kommentare

Dies ist eine kompakte Anleitung zu folgendem Admin-Problem, hier gemünzt auf Windows: User brauchen unseren Support und wir Supporter ...

Cloud-Dienste
BDrive: sichere Alternative der Bundesdruckerei zum Thema Cloudspeicher
Tipp von em-pieCloud-Dienste5 Kommentare

Guten Morgen zusammen, per Zufall bin ich gestern einmal im Rahmen meines CeBIT-Besuches über das Produktportfolio unserer (deutschen) Bundesdruckerei ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 12 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 19 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 21 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 1 TagMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1018 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...