ich habe eine 100mb Access-Datenbank, die aus verschiedenenen Gründen auf meinem C-Laufwerk liegt und nicht auf einem Fileserver - mein Computer ist 24/7 an.
Für den Fall der Fälle erstelle ich täglich alle 2h ein Backup, das mache ich so:
Sub AutoSaveDB()
Application.OnTime TimeValue("07:30:00"), "SaveMe"
Application.OnTime TimeValue("09:30:00"), "SaveMe"
Application.OnTime TimeValue("11:30:00"), "SaveMe"
Application.OnTime TimeValue("13:30:00"), "SaveMe"
Application.OnTime TimeValue("15:30:00"), "SaveMe"
Application.OnTime TimeValue("23:59:00"), "SaveMe"
End Sub
Sub SaveMe()
'legt ein Backup der Datenbank an
Dim fso As Object
Dim strFileFrom As String
Dim strFileTo As String
strFileFrom = "C:\Pfad\Datenbank.accdb"
strFileTo = "C:\Pfad\Backup\" & Format(Now, "YYYY_MM_DD_hhmm_") & "Datenbank.accdb"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.copyfile strFileFrom, strFileTo
End Sub
Funktioniert auch sehr gut und vor allem automatisch.Nur verursache ich so natürlich über 0.5GB redudante Daten auf meinem C-Laufwerk. Daher gehe ich alle paar Wochen mal in das Backup-Verzeichniss und lösche alles was älter als 5 Tage ist.
Frage: Wie kann ich das in der "SaveMe" Routine gleich automatisieren? Sprich: Lege ein Backup an, dann lösche alle Dateien im Ordner C:\Pfad\Backup die älter als 5 Tage sind?
Bonuspunkte: Lösche alle Dateien die älter als 5 Tage sind, ausser denen die zwischen 23:00 und 00:00 gespeichert wurden (dann hätte ich ein Tagesbackup übrig).
Bestimmt nur 2 oder 3 Zeilen, aber ich bekomme es grad nicht hin gegoogelt.
LG,
Klaus M.