Backuproutine
Suche Script oder Programm
Hallo Leute,
Suche Script oder Programm für Backuproutine (Windows/Linux)
In einem Backup-Ordner werden jeden Tag 2 Backupdateien (z. B: 2007-Mrz-31--1547.zip). Die letzte Zahl ist die Uhrzeit der 2. Sicherung.
Nun soll an jedem Monatsende jeweils die letzte Backupdatei in ein Verzeichnis „Archiv“ (Backup-Ordner) kopiert/verschoben werden. Der Rest der Dateien soll gelöscht werden.
Vielen Dank im voraus
fstueber
Hallo Leute,
Suche Script oder Programm für Backuproutine (Windows/Linux)
In einem Backup-Ordner werden jeden Tag 2 Backupdateien (z. B: 2007-Mrz-31--1547.zip). Die letzte Zahl ist die Uhrzeit der 2. Sicherung.
Nun soll an jedem Monatsende jeweils die letzte Backupdatei in ein Verzeichnis „Archiv“ (Backup-Ordner) kopiert/verschoben werden. Der Rest der Dateien soll gelöscht werden.
Vielen Dank im voraus
fstueber
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 56213
Url: https://administrator.de/contentid/56213
Ausgedruckt am: 27.11.2024 um 01:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo fstueber!
Für momentan hätte ich folgenden Ansatz:
Die ersten beiden "echo" in der letzten Zeile sorgen dafür, dass der Ablauf nur simuliert wird - erst, wenn Du sie entfernst, wird wirklich verschoben und gelöscht.
Grüße
bastla
Für momentan hätte ich folgenden Ansatz:
@echo off & setlocal
set "BackupDir=D:\Backups"
set "ArchivDir=Z:\Archiv"
set Neueste=
for /f "delims=" %%i in ('dir "%BackupDir%\*.zip" /b /a-d /o-d') do if not defined Neueste set "Neueste=%%i"
echo move "%BackupDir%\%Neueste%" "%ArchivDir%" && echo del "%BackupDir%\*.zip" || echo Fehler beim Verschieben von %Neueste%
Grüße
bastla
... Nachtrag: Sollte ich Dich vorhin falsch verstanden haben und es soll von den beiden täglichen Sicherungsdateien jeweils die jüngere archiviert werden, müsste das anhand des Dateinamens so gehen:
Vorausgesetzt wird, dass im Dateinamen (wie in Deinem Beispiel oben) die Uhrzeit durch "--" vom Tag getrennt ist.
Auch hier gilt wieder: Die beiden gekennzeichneten "echo" löschen, um die Aktionen tatsächlich ausführen zu lassen.
Grüße
bastla
@echo off & setlocal
set "BackupDir=D:\Backups"
set "ArchivDir=Z:\Archiv"
set Zuletzt=NA
for /f "delims=" %%i in ('dir "%BackupDir%\*.zip" /b /a-d /o-n') do call :ProcessFile "%%i"
::nächstes "echo" löschen
echo del "%BackupDir%\*.zip"
goto :eof
:ProcessFile
for /f "delims=--" %%f in ('echo %~n1') do (
if /i "%%f"=="%Zuletzt%" goto :eof
set "Zuletzt=%%f"
::nächstes "echo" löschen
echo move "%BackupDir%\%~1" %ArchivDir% || echo Fehler beim Verschieben von %~1
)
Auch hier gilt wieder: Die beiden gekennzeichneten "echo" löschen, um die Aktionen tatsächlich ausführen zu lassen.
Grüße
bastla
Hallo fstueber!
Im Allgemeinen verkrafte ich auch mehr Informationen in einem Post, als nur "Ich bekomme einen Syntaxfehler zurück."
Unter der Annahme, dass Du Dich auf die zweite Batchvariante beziehst, sollte es so besser gehen:
Grüße
bastla
P.S.: Sorry, hatte mich beim Testen nur auf die Trennung Tag-Zeit konzentriert ...
[Edit] Unnötige Variable entfernt [/Edit]
Im Allgemeinen verkrafte ich auch mehr Informationen in einem Post, als nur "Ich bekomme einen Syntaxfehler zurück."
Unter der Annahme, dass Du Dich auf die zweite Batchvariante beziehst, sollte es so besser gehen:
@echo off & setlocal
set "BackupDir=D:\Backups"
set "ArchivDir=D:\Archiv"
set Zuletzt=NA
for /f "delims=" %%i in ('dir "%BackupDir%\*.zip" /b /a-d /o-n') do call :ProcessFile "%%i"
::nächstes "echo" löschen
echo del "%BackupDir%\*.zip"
goto :eof
:ProcessFile
for /f "tokens=1,2,3 delims=-" %%f in ('echo %~n1') do (
if /i "%%f-%%g-%%h"=="%Zuletzt%" goto :eof
set "Zuletzt=%%f-%%g-%%h"
::nächstes "echo" löschen
echo move "%BackupDir%\%~1" %ArchivDir% || echo Fehler beim Verschieben von %~1
)
Grüße
bastla
P.S.: Sorry, hatte mich beim Testen nur auf die Trennung Tag-Zeit konzentriert ...
[Edit] Unnötige Variable entfernt [/Edit]
Moin fstueber,
wollen wir jetzt
a)den Beitrag auf "gelöst" setzen? DONE by fstueber 10.4.2007...
b)den Beitrag auf "geschlossen" setzen? DONE by Biber 11.4.2007
c)den Beitrag offen lassen und weitermachen, wenn Dein Linux-Server da ist? Gestrichen 11.4. Biber
d) oder dann einen neuen Thread aufmachen?
e)alles nach "Batch und Shell" verschieben? DONE by Biber 10.4.2007
Mehrfachnennungen möglich, aber nicht alle Kombinationen kann ich umsetzen...
Gruss
Biber
[Edit] 11.4. Mögliche Optionen etwas weiter eingeschränkt *gg und Thread geschlossen [/Edit]
wollen wir jetzt
a)
b)
c)
d) oder dann einen neuen Thread aufmachen?
e)
Mehrfachnennungen möglich, aber nicht alle Kombinationen kann ich umsetzen...
Gruss
Biber
[Edit] 11.4. Mögliche Optionen etwas weiter eingeschränkt *gg und Thread geschlossen [/Edit]