Wie kann ich eine Datei vom Server sichern und die letzten n Versionen aufbewahren?

730
Chico3001

Ich versuche ein Batch-Skript zu erstellen, um eine Access-Datenbank von einem NAS-Server auf einem anderen Server zu sichern und die letzten "n" -Versionen dieser Datei beizubehalten (n ist im Skript festgelegt). Dieses Skript wird jeweils zweimal ausgeführt Tag

Das Problem im Moment ist, dass beim Kopieren der Datei robocopydas Änderungsdatum nicht aktualisiert wird und forfilesdie letzten Tage nicht erkannt werden können

Das andere Problem ist, dass ich die letzten n Dateien aufbewahren muss, aber forfileserst nach n Tagen lösche. Gibt es eine Möglichkeit, dies zu erreichen?

Hier ist mein Skript bis jetzt:

@echo off  set numver=20 set datetime=%date:~-2%%date:~3,2%%date:~0,2%t%time:~0,2%%time:~3,2% set filename=scep2012.mdb set origin=\\supercepsrv\supercep set destin=C:\Teknia Shares\Respaldos\Sistemas\SuperCEP  robocopy "%origin%" "%destin%" %filename% /r:0 /w:2 ren "%destin%\%filename%" "%datetime%_%filename%" forfiles -p "%destin%" /s /m *.* /d %numver% /c "cmd /c del @path"  :end 
1

1 Antwort auf die Frage

0
BeowulfNode42

Vergessen Sie Tage, da Sie das Skript eine festgelegte Anzahl von Zeiten pro Tag ausführen. Lassen Sie die Dateien einfach nummerieren, um etwa Folgendes zu erreichen. Der Datumsstempel für jede Datei gibt an, wann die Sicherung durchgeführt wurde.

  • C: \ Teknia Shares \ Respaldos \ Sistemas \ SuperCEP \ scep2012.mdb (aktuelles Backup)
  • C: \ Teknia Shares \ Respaldos \ Sistemas \ SuperCEP \ scep2012.mdb.1
  • C: \ Teknia Shares \ Respaldos \ Sistemas \ SuperCEP \ scep2012.mdb.2
  • C: \ Teknia Shares \ Respaldos \ Sistemas \ SuperCEP \ scep2012.mdb.3
  • C: \ Teknia Shares \ Respaldos \ Sistemas \ SuperCEP \ scep2012.mdb.4 (älteste Sicherung)

dann in Deinem Skript haben

if EXIST "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb" ( del "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.4" ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.3" scep2012.mdb.4 ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.2" scep2012.mdb.3 ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.1" scep2012.mdb.2 ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb" scep2012.mdb.1 ) 

dann deine robocopy line.

Wenn es viele davon gibt, können Sie stattdessen eine for-Schleife machen. Möglicherweise möchten Sie jedoch die Verwendung von Powershell in Erwägung ziehen, um die erweiterten Funktionen nutzen zu können. Bevor die Batchdatei in Ihrem Prozess zu tief verwurzelt ist, wird das spätere Umschalten viel schwieriger.

Beachten Sie, dass vor dem ersten Ausführen dieses Skripts bereits eine Datei vorhanden sein muss "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb"