daujoe
Goto Top

Robocopy Script (inkl. löschen der Ordner, älter als)

Hallo,

ich benötige folgendes Robocopy Script:

Warum Robocopy? Weil die ganzen Attribute der Daten inkl. Berechtigungen mitkopiert werden müssen.

Die Daten sollen aus der QUELLE ins ZIEL kopiert werden.

Die QUELLE beinhaltet Ordner und Dateien.

Im ZIEL soll es nach dem Ausführen des Scripts so aussehen:

Es soll für jeden Tag einen Ordner erstellen, wo die Dateien reinkopiert werden.
Das ist ja noch kein Problem, das hab ich geschafft.

Aber nun folgendes Szenario:

Nach 5 Tagen sind da 5 Ordner.


Wie kann ich das Script konfigurieren, dass alle Ordner, welche älter als 2 Tage sind automatisch gelöscht werden?


Danke & Gruss

Content-Key: 206374

Url: https://administrator.de/contentid/206374

Printed on: April 16, 2024 at 10:04 o'clock

Member: WWoodpecker
WWoodpecker May 13, 2013 at 11:08:29 (UTC)
Goto Top
Ich habe sowas ähnliches schon mal gemacht und habe dafür delage32 genutzt, ist ein Kommandozeilen-Tool in dem Du angeben kannst das Daten älter x Tage gelöscht werden
Member: Penny.Cilin
Penny.Cilin May 13, 2013 at 11:38:15 (UTC)
Goto Top
Hallo,

und hast Du mal an der Eingabeaufforderung
robocopy /? | more
eingegeben?
Die simpleste Anwendung lautet
robocopy <quelle> <ziel>
wie Du es bereits herausgefunden hast.
Hast Du Dir mal den Parameter /MIR angeschaut und gestestet?


Gruss Penny.
Member: DauJoe
DauJoe May 13, 2013 at 11:49:25 (UTC)
Goto Top
/MIR besteht ja eigentlich aus /E und /PURGE. /E kopiert alle vollen und auch leeren Unterverzeichnisse, /PURGE löscht alle Dateien im Zielordner, die in der Quelle nicht mehr vorhanden sind.

Aber möchte ja nur die jeweiligen "2 ältesten" angelegten Backup Ordner löschen.
/MIR löscht ja nur die Daten/Ordner, welche in der Quelle auch nicht mehr vorhanden sind.

Oder hab ich da etwas falsch verstanden?


Danke & Gruss
Member: Penny.Cilin
Penny.Cilin May 13, 2013 at 12:02:30 (UTC)
Goto Top
OK, dann wirst Du zusätzlich zum Robocopy noch ein bißchen batch Skripting tun müssen.
Nutze die Suchfunktion. Es gibt mehrere Beiträge, etwa Datum - Uhrzeit einer Datei liegt x Zeit zurück

Oder wie von @WWoodpecker beschrieben nutze delage32.


Gruss Penny.
Member: WWoodpecker
WWoodpecker May 13, 2013 at 12:03:35 (UTC)
Goto Top
deine Batch sieht dann ungefähr so aus oder?

robocopy C:\Verzeichnis D:\Backup\%DATE% /MIR /SEC /R:1 /W:1 /LOG:C:\LOG\Verzeichnis_%DATE%.txt

robocopy bringt meines Wissens nach keine option mit die dann die %DATE%-Ordner älter 2 Tage löscht, aber die in meinem vorherigen Post beschrieben entweder delage32 oder in einem anderen Forum habe ich ein VBS gefunden, das sich dahingehen beschäftigt:
http://www.coding-board.de/showthread.php/20586-Unterordner-mit-Inhalt- ...
Member: Endoro
Endoro May 13, 2013 at 12:16:01 (UTC)
Goto Top
Hallo Goalgetter,

für so was hat Microsoft "forfiles" erfunden.

Gruss!
Member: Pjordorf
Pjordorf May 13, 2013 at 14:13:17 (UTC)
Goto Top
Hallo,

Zitat von @DauJoe:
Aber möchte ja nur die jeweiligen "2 ältesten" angelegten Backup Ordner löschen.
Robocopy kann das nicht. Dazu musst du ein anderes Script verwenden. Wie schon genannt mit ForFiles wäre ein weg.

1 Script welches
- Löschen der alten Dateien / Ordner deiner Wahl vornimmt
- per Robocopy neu Sicherung deiner Wahl erstellen in neuem Ordner deiner Wahl (Datum abfragen)
Fetisch face-smile

Gruß,
Peter
Member: DauJoe
DauJoe May 13, 2013 updated at 16:47:43 (UTC)
Goto Top
Danke für eure Kommentare.

Ich habe nun für die Backups:

save.bat:
robocopy PFAD R:\Backups\%date% /MIR /SEC /R:1 /W:1 /log:R:\logs\%date%.log /NP /TEE


delete.bat
FORFILES /P "PFAD" /S /M *.* /D -0 /C "CMD /C del /Q @File"


Ich konnte es nicht wirklich testen, da ich keine alten Ordner momentan zur Verfügung habe, die ich auch löschen kann.
Wenn ich /D auf 0 setze (Testweise), löscht er mir alles, aber die leeren Unterordner bleiben bestehen. Kann man die auch noch löschen?


Laut MS ist /D: "Selects files with a last modified date within the specified time frame."
Zählt ein File, welches nur vom Robocopy kopiert wurde denn auch als modifiziert?

Nicht, dass mir das Script dann plötzlich alle Daten löscht, da die ja evtl. im Quellenverzeichnis länger nicht geöffnet/modifiziert wurden...

Gruss
Member: Endoro
Endoro May 13, 2013 at 19:17:37 (UTC)
Goto Top
Du wolltest doch Ordner löschen?
Das geht mit "RD /q /s", nicht mit "DEL".

Gruss!
Member: DauJoe
DauJoe May 14, 2013 at 14:03:05 (UTC)
Goto Top
Danke dir Endoro!

FORFILES /P "R:\Backups" /S /M *.* /D -10 /C "CMD /C RD /q /s @File"


Nun erhalte ich aber plörtlich die Meldung "The directory name is invalid".


Der pfad R:\Backups existiert allerdings und ist auch verfügbar.
Member: Endoro
Endoro May 14, 2013 updated at 20:12:38 (UTC)
Goto Top
Hast du ein englisches Windows? Versuch es mal so:
FORFILES /P "R:\Backups" /S /M * /D -10 /C "CMD /C if /i @isdir==TRUE RD /q /s @File"  
Im Ordner "R:\Backups" sollten natürlich noch weitere Ordner drinstecken, damit das funktionieren kann.

Gruss!