mitscho2000
Goto Top

Zeitgesteuerte zippen von Dateien durch batch

Hallo Leute das ist mein erster Beitrag und ich hoffe ihr könnt mir bei meinem Problem helfen!

Für mich stellt sich aktuell folgende Situation:

Ich habe einen SQL Server 2000 der automatisch jeden Abend ein Backup von der Hauptdatenbank erstellt. Dieses legt er ab in den Ordner D:\DB-Backup .
Nun möchte ich ganz gerne das er mir diese Datensicherung auch noch paralell als .zip erstellt.
Ich hab mir das so vorgestellt, das ich eine Batchdatei schreibe und diese in einen WindowsTask hineinstecke sodass er diese zeitgesteuert ausführt.
Über einige Suchmaschinen hab ich mich schon versuch etwas schlauer zu machen aber etwas genauereres gibts bisher leider nicht.

Ich danke euch schonmal für eure Antworten!

Viele Grüße,
Mitscho

Content-Key: 91153

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

Printed on: April 19, 2024 at 10:04 o'clock

Mitglied: 60730
60730 Jul 02, 2008 at 14:13:23 (UTC)
Goto Top
Servus,

Tool meiner Wahl ist 7zip

installieren / entpacken und dann
7z.exe a Backup.zip dann den ordner

am besten vorher das Datum in eine Variable schreiben

set "Jahr=%date:~-4%"  
set "Monat=%date:~-7,2%"  
set "Tag=%date:~-10,2%"  

7z.exe a %Jahr%-%Monat%-%Tag%.zip meinordner

...und jeden Tag ein neues zip anlegen.

Das kannst du natürlich noch verfeinern mit
7z.exe a %Jahr%\%Monat%\%Jahr%-%Monat%-%Tag%.zip meinordner
Member: mitscho2000
mitscho2000 Jul 02, 2008 at 14:22:43 (UTC)
Goto Top
Nett das du so schnell geantwortet hast!

7zip scheint eine gute Wahl zu sein! Nun hat sich für mich eine weitere Frage gebildet.......


Die Datenbanksicherung speichert alle Backups in einen Hauptordner ab (D:\DB-Backup). Hier landen also täglich alle Backups!
Wenn ich nun das Batchfile so nehmen würde, würde er auch immer den kompletten Ordner zippen.
Kann ich nun irgendwie festlegen das er immer die neuste Datei aus dem Ordner nehmen soll?

Wegen dem automatismus werde ich wohl einen Windowstask erstellen - das würde mir gefallen.


VIELEN DANK!,
Mitscho
Mitglied: 60730
60730 Jul 02, 2008, updated at Oct 18, 2012 at 16:35:56 (UTC)
Goto Top
Kann ich nun irgendwie festlegen das er immer die neuste Datei aus dem Ordner nehmen soll?
Bastla hat da schon mal etwas vorbereitet face-wink
Wegen dem automatismus werde ich wohl einen Windowstask erstellen - das würde mir gefallen.
Yupp dafür ist es wie geschaffen face-wink

for /f %%i in ('dir /b /od "d:\backup\*.*"') do @set Neueste=%%i
7zip a %Jahr%\%Monat%\%Jahr%-%Monat%-%Tag%.zip d:\backup\%Neueste%

Schau dir halt mal alle Parameter von 7zip.exe mit /? (Dosbox) an - oder die Helpdatei aus dem Ordner vom 7zip.
Member: mitscho2000
mitscho2000 Jul 02, 2008 at 15:01:42 (UTC)
Goto Top
ich versteh den syntax nicht so recht.

wenn ich nun z.b.

for /f %%i in ('dir /b /od "d:\backup\*.*"') do @set Neueste=%%i
7z.exe a %Jahr%\%Monat%\%Jahr%-%Monat%-%Tag%.zip d:\backup\%Neueste%


verwende dann erhalte ich eine Fehlermeldung das er mit dem %jahr%\%monat..etc. nicht zurecht kommt.


dann hab ich den code etwas bearbeitet

for /f %%i in ('dir /b /od "c:\test\*.*"') do @set Neueste=%%i
7z.exe a test.zip c:\test\%Neueste%

und erhalte die meldung "C:\test\DIE : Das System kann die angegenene Datei nicht finden.
Mitglied: 60730
60730 Jul 02, 2008 at 15:55:34 (UTC)
Goto Top
Servus,

dann nochmal in einem zusammenhängenden Script:

Wenn du wirklich nur diese beiden zeilen genommen hast - ist es logisch - denn die Variablen müssen erstmal gesetzt werden.

:datum in Variablen
set "Jahr=%date:~-4%"  
set "Monat=%date:~-7,2%"  
set "Tag=%date:~-10,2%"  

:finde neueste Datei in d:\backup
for /f %%i in ('dir /b /od "d:\backup\*.*"') do set "Neueste=%%i"  
echo Die neueste Datei ist %neueste%
:zippen
%programfiles%\7zip\7z.exe a %Jahr%-%Monat%-%Tag%.zip "D:\DB-Backup\%neueste%"  
:zippen mit struktur
%programfiles%\7zip\7z.exe a %Jahr%\%Monat%\%Jahr%-%Monat%-%Tag%.zip "D:\DB-Backup\%neueste%"  
Kommentar:

Zeile 1-4 Variablen für das aktuelle Datum
Zeile 6-8 auslesen, welche Datei als letzte in d:backup erzeugt wurde
Zeile 9 Ein Zip mit dem aktuellen Datum erstellen und die letzte Datei dort packen (Achtung - werden vorher "mehrere" Dateien erzeugt - das Script findet immer nur die letzte!!)
Zeile 12 Unterorder Jahr und Monat erstellen und dort die letze Datei in d:backup als zip einlagern.


Ps: Kannst du das bitte in Batch & Shell verschieben?

Danke
TimoBeil

[Edit Biber] "Ps: Kannst du das bitte in Batch & Shell verschieben?"... mach ich mal eben. [/Edit]
Member: bastla
bastla Jul 02, 2008 at 20:07:38 (UTC)
Goto Top
Hallo mitscho2000 und TimoBeil!

Dürfte ich ergänzend noch anregen, das eine oder andere Anführungszeichen (aber doch möglichst paarweise face-wink) zu verwenden, vor allem in
for /f %%i in ('dir /b /od "d:\backup\*.*"') do set "Neueste=%%i"  
und dann auch in
%programfiles%\7zip\7z.exe a %Jahr%-%Monat%-%Tag%.zip "D:\DB-Backup\%Neueste%"  
Grüße
bastla
Member: mitscho2000
mitscho2000 Jul 03, 2008 at 09:53:36 (UTC)
Goto Top
Moin zusammen,

ich habe nun folgenden Code zusammenkopiert und als batch im pfad C:\programme\7zip abgespeichert:


:datum in Variablen
set "Jahr=%date:~-4%"
set "Monat=%date:~-7,2%"
set "Tag=%date:~-10,2%"

:finde neueste Datei in c:\test
for /f %%i in ('dir /b /od "c:\test\*.*"') do set "neueste=%%i"
echo Die neueste Datei ist %neueste%

:zippen mit struktur
%programme%\7zip\7z.exe a %Jahr%\%Monat%\%Jahr%-%Monat%-%Tag%.zip "c:\test\%neueste%"


Wenn ich nun die batch ausführe erhalte ich folgende Fehlermeldung:
C:\Program Files\7-Zip>echo Die neueste Datei ist newfile.doc
Die neueste Datei ist newfile.doc

C:\Program Files\7-Zip>\7zip\7z.exe a 2008\07\2008-07-03.zip "c:\test\newfile.do
c"
Das System kann den angegebenen Pfad nicht finden.


im pfad C:\test liegt aber die datei newfile.doc

mach ich etwas falsch?

grüße,
mitscho
Mitglied: 60730
60730 Jul 03, 2008 at 10:04:24 (UTC)
Goto Top
Servus,

Bastla hat mit seinem Tipp ""ins schwarze (dosbox) gehauen face-wink

:zippen mit struktur 
"%programfiles%"\7zip\7z.exe a %Jahr%\%Monat%\%Jahr%-%Monat%-%Tag%.zip "D:\DB-Backup\%neueste%"  

geht beim englischen OS besser - und geht weiterhin davon aus, daß 7zip im Unterordner 7zip liegt.
Passe das noch an deine Umgebung an.

:zippen mit struktur 
"%programfiles%"\7-zip\7z.exe a %Jahr%\%Monat%\%Jahr%-%Monat%-%Tag%.zip "D:\DB-Backup\%neueste%"  
Member: mitscho2000
mitscho2000 Jul 04, 2008 at 10:20:46 (UTC)
Goto Top
Ich bedanke mich für eure Hilfe!

Hat alles gut geklappt!

Ich hab die Augen auf gemacht und sah das der ORdner 7Zip in C:\programme\7-zip liegt und nicht in C:\programme\7zip


Ich denke dieser Tread wird auch anderen Admins weiterhelfen!

THX face-smile