37955
Goto Top

Backup per Batchdatei

Hallo,

ich müsste ein Art auto. Datensicherung per Batch-Datei erstellen.
Nach meinem Wissensstand ist diese Lösung allerdings nicht per Kommandozeile realisierbar - hoffe ihr könnt mich eines besseren belehren! face-smile

Ziel:
Mehrere Dateien sollen per Mausklick oder Task in ein zuvor bestimmtes Verzeichnis kopiert werden. Es handelt sich dabei immer um die selben Dateien, deshalb müsste der Dateiname zuvor mit einer Art Zähler hochgesetzt werden.

Beispiel:
Ursprungsdatei: test.txt
1. Backup: test_00001.txt
2. Backup: test_00002.txt
usw.

Damit das Verzeichnis nicht unendlich mit "Altlasten" zugemüllt wird, sollen in diesem Verzeichnis immer nur Dateien der letzten 7 Tage vorhanden sein.

Gibt es hierfür eine Möglichkeit dieses Ziel durch eine Batchdatei zu realiseren oder nicht?
Eine Anwort für eine Backup-Software bringt mich nicht weiter... ;)

Content-ID: 61653

Url: https://administrator.de/contentid/61653

Ausgedruckt am: 26.11.2024 um 13:11 Uhr

ElSnoopy
ElSnoopy 18.06.2007 um 15:08:19 Uhr
Goto Top
Ich habe das mit folgendem Bach gelöst
Damit wird Dir im Sicherungsverzeichniss ein unterordner mit Datum erstellt. und je nach einstellung nach 1 oder 30 Tagen gelöscht.

@echo off

REM
REM Anzupassen sind Quelle,Ziel,Tage mittels autodelXX.bat
REM
REM set Batch="C:\sicherung"
set Quelle="C:\sven\"
set Ziel="C:\Backup\%date%"
set templog="%temp%\temp.log"


echo .-. >>%windir%\backup.log
echo Starte Backup: %date% %time% von %Quelle% nach %Ziel% >>%windir%\backup.log

xcopy %Quelle% %Ziel% /s /c /i /f /h /k /o /x /y >>%windir%\backup.log
md %Ziel%
echo Starte Überprüfung >>%windir%\backup.log

start /w windiff.exe -Sdx %templog% -T %Ziel% %quelle%
find "different" %templog% >>%windir%\backup.log
echo Fertig >>%windir%\backup.log
start notepad.exe %windir%\backup.log


echo Loesche Verzeichnisse aelter als 14 Tage
echo del %ZIEL% /s /q >autodel14.bat

call autodel01.bat
del autodel01.bat

ren autodel02.bat autodel01.bat
ren autodel03.bat autodel02.bat
ren autodel04.bat autodel03.bat
ren autodel05.bat autodel04.bat
ren autodel06.bat autodel05.bat
ren autodel07.bat autodel06.bat
ren autodel08.bat autodel07.bat
ren autodel09.bat autodel08.bat
ren autodel10.bat autodel09.bat
ren autodel11.bat autodel10.bat
ren autodel12.bat autodel11.bat
ren autodel13.bat autodel12.bat
ren autodel14.bat autodel13.bat
ren autodel15.bat autodel14.bat
ren autodel16.bat autodel15.bat
ren autodel17.bat autodel16.bat
ren autodel18.bat autodel17.bat
ren autodel19.bat autodel18.bat
ren autodel20.bat autodel19.bat
ren autodel21.bat autodel20.bat
ren autodel22.bat autodel21.bat
ren autodel23.bat autodel22.bat
ren autodel24.bat autodel23.bat
ren autodel25.bat autodel24.bat
ren autodel26.bat autodel25.bat
ren autodel27.bat autodel26.bat
ren autodel28.bat autodel17.bat
ren autodel29.bat autodel28.bat
ren autodel30.bat autodel29.bat
ren autodel31.bat autodel30.bat
37955
37955 18.06.2007 um 15:36:15 Uhr
Goto Top
Danke @ ElSnoopy

Allerdings erhalte ich nach dem Anmelden folgende Meldung:

Ungültiger Pfad
Ein Unterverzeichnis oder eine Datei mit dem Namen "C:\Backup\18.06.2007" existi
ert bereits.
Loesche Verzeichnisse aelter als 14 Tage
Der Befehl "autodel01.bat" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
C:\autodel01.bat konnte nicht gefunden werden
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.


Was steckt in der Datei "autodel01.bat"? Wo muss ich diese anlegen?
ElSnoopy
ElSnoopy 18.06.2007 um 16:17:04 Uhr
Goto Top
noch giebt es keine autodel1.bat die giebt es ja erst nch 7 oder 14 Tagen je nachdem.
Du willst ja auch erst nach 7 tagen löschen
37955
37955 18.06.2007 um 16:20:40 Uhr
Goto Top
Klar will ich erst nach 7 Tage löschen... also d.h. ich soll die Meldung ignorieren. In deinem Beispiel gibt es die Datei dann erst nach 14 Tagen?
ElSnoopy
ElSnoopy 18.06.2007 um 16:27:42 Uhr
Goto Top
Ja kannst ignorieren wenn er dir die dateien gesichert hat.
zum testen einfach mal die autodel14 in autodel01 umbennen und dann nochmal schauen obe er löscht.
aber achtung problem ist er lösch nur den Inhalt nicht die Verzeichnisse
miniversum
miniversum 19.06.2007 um 08:39:55 Uhr
Goto Top
Das löschen von Dateien und Verzeichnis die älter als x Tage sind hatten wir hier in diesem Bereich schon mehrmals.
Das geht nur gut mit Zusatztools wie z.B. delage oder indem man die Forderung etwas anders definiert...
Kann man das "löschen nach x Tagen" ändern in "löschen das nur noch die aktuellsten x Verzeichnisse vorhanden sind" geht es einfach mit Bordmitteln. Wird das Backup Taglich durchgeführt würde dies so auch immer die letzten x Tage beinhalten.
Ein Entwurf dafür wäre dann so:

@echo off
set "Quelle=C:\sven\"  
set "Ziel=C:\Backup\"  
set "Zielunterverz=%date:~6%%date:~3,2%%date:~0,2%"  
set letztex=7

REM Kopieren der Dateien
xcopy "%Quelle%" "%Ziel%\%Zielunterverz%" /s /c /i /f /h /k /o /x /y  

REM Löschen bis auf die letzten x Verzeichnisse
if %letztex% gtr 0 (
set "skiptext=skip=%letztex% "  
) else (
set "skiptext="  
)
FOR /F "%skiptext%delims=" %%i in ('dir %Ziel% /B /AD /O-D') do rd /s /q "%%i"  

miniversum
37955
37955 19.06.2007 um 09:27:12 Uhr
Goto Top
@miniversum
Deine Idee kommt mir noch einen Tick sympathischer vor und würde meinen Zweck vollkommen erfüllen.

Ich besitze auf c:\ einen Ordner Test, der die Dateien enthält und ein Ordner Backup, der als Zielverzeichnis dient. Ich habe deine Testdatei wie folgt angepasst:

@echo off
set "Quelle=C:\Test\"
set "Ziel=C:\Backup\"
set "Zielunterverz=%date:~6%%date:~3,2%%date:~0,2%"
set letztex=7

REM Kopieren der Dateien
xcopy "%Quelle%" "%Ziel%\%Zielunterverz%" /s /c /i /f /h /k /o /x /y

REM Löschen bis auf die letzten x Verzeichnisse
if %letztex% gtr 0 (
set "skiptext=skip=%letztex% "
) else (
set "skiptext="
)
FOR /F "%skiptext%delims=" %%i in ('dir %Ziel% /B /AD /O-D') do rd /s /q "%%i"


Leider erhalte ich folgende Meldung:
Ungültiger Pfad
0 Dateien kopiert
miniversum
miniversum 19.06.2007 um 10:09:53 Uhr
Goto Top
Ändere mal wie folgt ab:
@echo off
set "Quelle=C:\Test\"  
set "Ziel=C:\Backup\"  
set "Zielunterverz=%date:~6%%date:~3,2%%date:~0,2%"  
set letztex=7

REM Kopieren der Dateien
xcopy "%Quelle%" "%Ziel%\%Zielunterverz%" /s /c /i /f /h /k /o /x /y  
echo Kopiere von "%Quelle%" nach "%Ziel%\%Zielunterverz%" mit Ergebnis %errorlevel%  

REM Löschen bis auf die letzten x Verzeichnisse
if %letztex% gtr 0 (
set "skiptext=skip=%letztex% "  
) else (
set "skiptext="  
)

FOR /F "%skiptext%delims=" %%i in ('dir "%Ziel%" /B /AD /O-D') do rd /s /q "%%i"  

Was bekommst du als Ausgabe?

miniversum
37955
37955 19.06.2007 um 10:26:21 Uhr
Goto Top
Ungültiger Pfad
0 Datei(en) kopiert
Kopiere von "C:\Test\" nach "C:\Backup\\20070619" mit Ergebnis 4
miniversum
miniversum 19.06.2007 um 10:52:29 Uhr
Goto Top
Du bekommst als fehler 4 zurück.
Lauf MS heißt das:
Beendigungscode Beschreibung
         0      Dateien wurden ohne Fehler kopiert.
         1      Keine Dateien zum Kopieren gefunden.
         2      Der Benutzer hat STRG+C gedrückt, um xcopy zu beenden.
<b>         4      Ein Initialisierungsfehler ist aufgetreten. Es ist nicht genug Arbeitsspeicher oder Speicherplatz vorhanden, oder Sie haben in der Befehlszeile einen ungültigen Laufwerknamen oder eine ungültige Syntax eingegeben.</b>
         5      Fehler beim Schreiben auf den Datenträger aufgetreten.

Durch den zusätzlichen \ im
xcopy "%Quelle%" "%Ziel%\%Zielunterverz%"
hast du da zwei \ im Ziel stehen, also "C:\Backup\\20070619".
Könntest das ja mal in
xcopy "%Quelle%" "%Ziel%%Zielunterverz%"
ändern. Aber ich glaub eigentlich nicht das es daran liegt.

Im Prinzip kannst du auch das xcopy vom vorherigen auch übernehmen. der fehler liegt auf jedenfall beim Kopiervorgang.

miniversum
37955
37955 19.06.2007 um 11:25:21 Uhr
Goto Top
Ok, danke! Teile 1 wäre geschafft, offenbar hatte er ein Problem mit der Variablen "Quelle". Diese hab ich nun entfernt und durch die Konstante "C:\Test\*.*\" ersetzt.

Nun habe ich die Variable "letztex" auf 2 gesetzt und in C:\Backup\ die Verzeichnisse "20070618" und "20070617" angelegt.

Theoretisch müsste er nach dem Anlegen des aktuellen Ordners den Ordner "20070617" löschen, oder? Macht er leider nicht... nun kommt folgendes Ergebnis raus:

C:\>backup2.bat
C:\Test\Test.txt -> C:\Backup\20070619\Test.txt
1 Datei(en) kopiert
Kopiere von "C:\Test\" nach "C:\Backup\20070619" mit Ergebnis 0
Das System kann die angegebene Datei nicht finden.
Das System kann die angegebene Datei nicht finden.
kotik81
kotik81 26.09.2007 um 20:51:20 Uhr
Goto Top
Hallo,

ich brauche Hilfe! Ich habe eine Backup Batch gemacht und es funkt. eigener maßen, aber mir fällt noch dass, wenn im Quell die Datei nicht vorhanden ist aber dafür im Ziel, soll es im Ziel gelöscht werden. Und was kann man hier noch verbessern? Danke im Voraus!

@echo OFF
:neu
CLS
ECHO;
ECHO 1) Daten Kopieren
ECHO;
ECHO 2) Daten Restore
ECHO;
ECHO 3) Daten Backup
ECHO;
ECHO 4)
ECHO;
set choice=
set /P choice=Auswahl:
if not [%choice%]== set choice=%choice:~0,1%
if [%choice%] ==[4] goto vier
if [%choice%] ==[3] goto drei
if [%choice%]==[2] goto zwei
if [%choice%]==[1] goto eins
:eins

xcopy /E /H /Y "C:\Programme\Mozilla Firefox" /D /R /A /V "D:\Anwendungen\Mozilla Firefox\"
xcopy /E /H /Y "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Rainlendar" /D /R /A /V "D:\Anwendungen\Rest\Rainlendar\"
xcopy /E /H /Y "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Locktime" /D /R /A /V "D:\Anwendungen\Rest\Locktime\"
xcopy /E /H /Y "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Mobile Master" /D /R /A /V "D:\Anwendungen\Rest\Mobile Master\"
xcopy /E /H /Y "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Mozilla" /D /R /A /V "D:\Anwendungen\Rest\Mozilla\"
xcopy /E /H /Y "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\concept design" /D /R /A /V "D:\Anwendungen\Rest\concept design\"
xcopy /E /H /Y "C:\Programme\Trillian" /D /R /A /V "D:\Anwendungen\Trillian\"
xcopy /E /H /Y "C:\Programme\autoUSD" /D /R /A /V "D:\Anwendungen\autoUSD\"

xcopy /E /H /Y "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Talkback" /D /R /A /V "D:\Anwendungen\Rest\Talkback\"
xcopy /E /H /Y "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Thunderbird" /D /R /A /V "D:\Anwendungen\Rest\Thunderbird\"
xcopy /E /H /Y "C:\Dokumente und Einstellungen\%USERNAME%\Lokale Einstellungen\Anwendungsdaten\Thunderbird" /D /R /A /V "D:\Anwendungen\ThunderbirdLocal\"
xcopy /E /H /Y "C:\Programme\Mozilla Thunderbird" /D /R /A /V "D:\Anwendungen\Mozilla Thunderbird\"
pause
GOTO acht
:zwei
RD /S /Q "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Mozilla"
md "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Mozilla"


xcopy /E /H "D:\Anwendungen\Rest" /D /R /Y /A /V "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\"
xcopy /E /H "D:\Anwendungen\Mozilla Firefox" /D /R /Y /A /V "C:\Programme\Mozilla Firefox\"
xcopy /E /H "D:\Anwendungen\ThunderbirdLocal" /D /R /Y /A /V "C:\Dokumente und Einstellungen\%USERNAME%\Lokale Einstellungen\Anwendungsdaten\Thunderbird\"
xcopy /E /H "D:\Anwendungen\Mozilla Thunderbird" /D /R /Y /A /V "C:\Programme\Mozilla Thunderbird\"
xcopy /E /H "D:\Anwendungen\Trillian" /D /R /Y /A /V "C:\Programme\Trillian\"
pause
GOTO acht
:drei
RD /S /Q "D:\Anwendungen\Backup"
md "D:\Anwendungen\Backup"
Echo Backup wurde geloescht!
pause
xcopy /E /H "D:\Anwendungen\Mozilla Firefox" /D /R /Y /A /V "D:\Anwendungen\Backup\Mozilla Firefox\"
xcopy /E /H "D:\Anwendungen\Rest" /D /R /Y /A /V "D:\Anwendungen\Backup\Rest\"
xcopy /E /H "D:\Anwendungen\Hitrecorder2" /D /R /Y /A /V "D:\Anwendungen\Backup\Hitrecorder2\"
xcopy /E /H "D:\Anwendungen\ThunderbirdLocal\" /D /R /Y /A /V "D:\Anwendungen\Backup\ThunderbirdLocal\"
xcopy /E /H "D:\Anwendungen\Mozilla Thunderbird" /D /R /Y /A /V "D:\Anwendungen\Backup\Mozilla Thunderbird\"
xcopy /E /H "D:\Anwendungen\Trillian" /D /R /Y /A /V "D:\Anwendungen\Backup\Trillian\"
echo;
Echo Backup wurde erstellt!
pause
GOTO acht
:acht
exit
kotik81
kotik81 27.09.2007 um 13:16:50 Uhr
Goto Top
Hat keiner eine Idee?
Bitte helft mir!
kotik81
kotik81 27.09.2007 um 13:17:23 Uhr
Goto Top
Hat keiner eine Idee?
Bitte helft mir!