izakstern Geschrieben 20. April 2010 Geschrieben 20. April 2010 Hallöchen! Bin zwar schon lange FISI aber erst heute hier angekommen Mal schauen ob die Gemeinde ne Lösung für mich hat.. Ich möchte mit Robocopy eine regelmäßige (automatische) Vollsicherung machen, dazu will ich alle Sicherungen älter als X Tage auch automatisch löschen. (also mit Robocopy in einen Ordner verschieben und diesen dann löschen) da ich sonst keine Option dafür kenne. (delage32.exe fällt flach) Leider löscht mein Script immer alle Sicherungen aus dem Ordner, und nicht nur die die älter als X-Tage sind. Getestet habe ich es in dem ich eine Sicherung erstellt habe, dann die Uhr vorgestellte habe und dann noch eine Sicherung erstellt habe etc...Falls es nicht an der Syntax des Scriptes liegt, ist vielleicht da der Hund begraben? So sieht das Test-Script aus: @echo off set jahr=%date:~-4% set monat=%date:~-7,2% set tag=%date:~-10,2% set stunde=%time:~-11,2% set minute=%time:~-8,2% set sekunde=%time:~-5,2% set sicherungspfad_quelle=%C:\Users\root\Desktop\Batch-Test\Ordner1% set sicherungspfad_ziel=%C:\Users\root\Desktop\Batch-Test\Ordner2% set logdatei_pfad=%C:\Users\root\Desktop\Batch-Test\% echo "Verschieben der alten Sicherungen in den Loeschordner..." robocopy "%sicherungspfad_ziel%" "%sicherungspfad_ziel%\ROBODELETE" /MOVE /E /MINAGE:3 /LOG+:"%logdatei_pfad%robolog_del.txt" echo "Loeschen der alten Sicherungen..." RD "%sicherungspfad_ziel%\ROBODELETE\" /S /Q echo "Erstellen der aktuellen Sicherung robocopy "%sicherungspfad_quelle%" "%sicherungspfad_ziel%\Sicherung_SBS_%jahr%_%monat%_%tag%" /E /LOG+:"%logdatei_pfad%robolog.txt" Dankeschön!
lupo49 Geschrieben 20. April 2010 Geschrieben 20. April 2010 (bearbeitet) Hier würde ich nicht nach dem Alter der Sicherungen gehen, sondern nach der Anzahl der Sicherungen. D.h. immer eine gewisse Anzahl von Sicherungen vorhalten. Bei deiner Herangehensweise hast du das Problem, dass wenn (aus irgendwelchen Gründen auch immer) für drei Tage keine Sicherungen mehr gelaufen sind, das Skript beim nächsten Lauf alle noch vorhandenen löscht. Sodass du dann keine Sicherungen mehr hast. Bei einer meiner Sicherungen wird nach der Anzahl der Verzeichnisse im Sicherungsordner gelöscht: rem Maximal sieben + backup.log Sicherungen aufbewahren. for /f "skip=8" %%i in ('dir /o-d /b %ZIEL%') do rmdir /s /q %ZIEL%%%i Jedes Verzeichnis steht für eine Sicherung. Leider löscht mein Script immer alle Sicherungen aus dem Ordner, und nicht nur die die älter als X-Tage sind. D.h. er verschiebt alle Verzeichnisse aus dem Sicherungsordner nach ROBODELETE? Bitte beim nächsten Mal CODE-Tags für deinen Quellcode nutzen. Bearbeitet 20. April 2010 von lupo49
izakstern Geschrieben 20. April 2010 Autor Geschrieben 20. April 2010 Danke für deine schnelle Antwort! Der Ansatz einfach die Anzahl der Sicherungen zu nehmen ist nen guter Tipp, keine Ahnung wieso mir das nicht eingefallen ist Dennoch würde ich ganz gerne verstehen warum mein Script nicht funktioniert. Ja Robocopy verschiebt alle Dateien aus dem Ordner in den Ordner ROBODELETE, danach wird einfach der Ordner gelöscht. Jedoch sollte Robocopy ja nur die Dateien/Ordner verschieben, die älter als X Tage sind. LG izak
tester2k5 Geschrieben 20. April 2010 Geschrieben 20. April 2010 Ich vermute mal das die Prozent-Zeichen bei den Pfadangaben Schreibfehler sind und Anführungszeichen sein sollten. Die Robocopy-Parameter sind soweit korrekt, einzig den "ROBODELETE"-Ordner würde ich mit "/XD" ausklammern. Hab es gerade mit meinem %TEMP%-Ordner getestet, hat geklappt. Gruss, tester2k5
izakstern Geschrieben 21. April 2010 Autor Geschrieben 21. April 2010 Nein eigentlich ist das kein Schreibfehler. Aus welchem Grund würdest du den Ordner mit XD ausklammern? Die Pfade etc. müssen ja an sich funktionieren, da er ja ALLE Dateien aus dem Ordner löscht, nur eben keine Rücksicht auf das Alter nimmt.
tester2k5 Geschrieben 21. April 2010 Geschrieben 21. April 2010 Pfade sollten, sofern sie Leerzeichen enthalten, in Anführungszeichen gesetzt werden. Teils per "SET" nicht erforderlich, aber weshalb verwendest "Prozentzeichen" ? Den Ordner würde ich ausklammern, da Robocopy darin nicht arbeiten soll, auch wenn der Ordner aufgrund des Parameters ("/MINAGE:3") ignoriert werden sollte, ist sauberer. Hast du es nochmal gestestet? Ggf. den Robocopy-Befehl direkt von der Kommandozeile? Gruss, tester2k5
izakstern Geschrieben 27. April 2010 Autor Geschrieben 27. April 2010 Hi, sry hat ein wenig gedauert. Hab zwar neue Erkenntnisse, komme aber trotzdem nicht weiter. Robocopy hat ja standardmäßig die Einstellung /COPY:DAT, also kopiere Daten, Attribute und Timestamps. Würde also den genannten Fehler erklären, wenn er ja auch die Timestamps Quelldateien mitkopiert. Wenn ich aber /COPY:DA angebe, werden die Timestamps trotzdem mitkopiert. Scheint wohl ein Bug zu sein, oder irre ich mich? --> Wenn man eine LOG-Datei erstellt, zeigt RoboCopy ja auch die gewählten Parameter an, und dort zeigt er trotz angegebenen /COPY:DA die Einstellung /COPY:DAT an. Kennt jemand nen Programm ähnlich wie touch.exe wo man den Timestamp aller Dateien verändern kann? (mit Verzeichnisstruktur etc.) Danke!
Connor1980 Geschrieben 27. April 2010 Geschrieben 27. April 2010 Wenn ich das richtig verstehe hast du ein Problem mit unterschiedlichen Timestamps von Quelle und Ziel? Probiere mal den Schalter /FFT
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden