Zum Inhalt springen

robocopy problem


izakstern

Empfohlene Beiträge

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von lupo49
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...