Hoschy2020 0 Geschrieben 20. Oktober 2019 Melden Teilen Geschrieben 20. Oktober 2019 Hallo Zusammen, ich besitze einen Windows 2016 Server und auf diesem laufen verschiedene Spiele. Ich würde gerne den Aufgaben Planer nutzen wo zum Beispiel ein Minecraft Server 2 mal ein Backup am Tag ausgeführt werden soll. Ich habe folgendes gefunden was aber nicht die richtige Lösung für mich ist. SET COUNTER=0 :loop SET /a COUNTER=%COUNTER%+1 XCOPY "Server\*" "c:\minecraft\backups\server_backup_%COUNTER%" /i /s PING 1.1.1.1 -n 1 -w 600000 > NUL goto loop In diesem Beispiel ist ein loop vorhanden. Was ich nicht möchte, da es dann dauerhaft in einer Schleife laufen würde. Ich habe die Schleife entfernt und dann sieht es so aus. SET COUNTER=0 SET /a COUNTER=%COUNTER%+1 XCOPY "Server\*" "c:\minecraft\backups\server_backup_%COUNTER%" /i /s Jetzt habe ich dabei folgendes Problem. Wenn noch kein Backup vorhanden ist, dann erstellt er eins und die Batch Datei schließt sich wieder. So in etwa habe ich das gewollt. Problem ist aber, starte ich die Batchdatei erneut wird festgestellt das es ein erstelltest Verzeichnis schon gibt und fragt mich ob ich überschreiben möchte. Wie kann ich in der Batchdatei sagen, dass er bitte mit dem nächsten Backup weiter machen soll. Also er soll prüfen ob schon etwas abgelegt wurde, wenn ja erstelle das nächste Backup. Am besten wäre es, wenn das ganze Verzeichnis in eine rar Datei gepackt werden würde. Die zweite Batch Datei soll bitte ältere Backups vom Server löschen die von mir aus 10 Tage alt sind. Das würde ich halt auch gerne als Aufgabe planen in Windows Server 2016. Hat da jemand Ahnung von Euch, wie ich das am besten hin bekomme? Mit dem Counter erstellt er mir jeweils Verzeichnis server_backup_1, dann server_backup_2 usw. Das funktioniert aber nur wenn es im loop läuft. Danke mfg Hoschy2020 Zitieren Link zu diesem Kommentar
testperson 1.676 Geschrieben 20. Oktober 2019 Melden Teilen Geschrieben 20. Oktober 2019 Hi, das dürfte in PowerShell viel einfacher sein. Schau dir dazu mal Compress-Archive: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/compress-archive?view=powershell-5.1 Get-ChildItem: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-5.1 Remove-Item: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-item?view=powershell-5.1 an. Den rest erldigt die Aufgabenplanung. Gruß Jan Zitieren Link zu diesem Kommentar
Hoschy2020 0 Geschrieben 20. Oktober 2019 Autor Melden Teilen Geschrieben 20. Oktober 2019 Hallo Jan Es mag für dich einfach sein, aber ich kann damit nichts anfangen. In Powershell etwas zu schreiben sieht für mich schwieriger aus. Gruß Hoschy2020 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 20. Oktober 2019 Melden Teilen Geschrieben 20. Oktober 2019 (bearbeitet) Na dann wollen wir Dir das mal ausnahmsweise ein bissl schmackhaft machen. In Powershell würde Dein erstest Script im einfachsten Fall vielleicht so aussehen können: $TimeStamp = Get-Date -Format 'yyyyMMdd' Copy-Item -Path "Server\Folder to be backed up" -Destination "c:\minecraft\backups\server_backup_$TimeStamp" Das erzeugt eine Kopie eines Ordners in einem anderen Ordner mit einem Zeitstempel statt einem Zähler. Das sollte jemand mit rudimentären English-Kenntnissen eigentlich ziemlich verständlich finden. Das zweite Script zum Aufräumen ist auch nicht schwer: Get-ChildItem -Path "c:\minecraft\backups" -Directory | Sort-Object -Property LastWriteTime -Descending | Select-Object -Skip 10 | Remove-Item -Recurse -Force Hier wird die mächtige Powershell Pipeline genutzt, um alle Unterverzeichnisse des Backup-Verzeichnisses zu ermitteln, diese nach letztem Zugriff absteigend zu sortieren und davon die ersten 10 zu überspringen. Der Rest wird gelöscht. Ich finde das deutlich einfacher zu lesen als die cryptischen cmd Befehle. bearbeitet 20. Oktober 2019 von BOfH_666 Code und Rechtschreibung und Grammatik korrigiert ;-) Zitieren Link zu diesem Kommentar
Hoschy2020 0 Geschrieben 20. Oktober 2019 Autor Melden Teilen Geschrieben 20. Oktober 2019 WoW sieht einfach aus, wenn du es schreibst. Ich versuche dann mal mein Glück ob es funktioniert. Vielen Dank dafür. Muss ich bei PowerShell noch einstellen, dass Scripte ausgeführt werden können, wenn ich sie im Aufgabenplaner angebe? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 20. Oktober 2019 Melden Teilen Geschrieben 20. Oktober 2019 (bearbeitet) Das kommt drauf an ... es kann aber nicht schaden, wenn Du in der Kommandozeile die Option -ExecutionPolicy Bypass mitgibst. Die anderen möglichen/nötigen Optionen kannst Du mit Powershell /? erfahren. Ach ja ... wie immer gilt natürlich, dass Du Scripte nicht an Deinen "produktiven Daten" testen solltest. Besonders, wenn Du sie nicht 100-ig verstehst. bearbeitet 20. Oktober 2019 von BOfH_666 Zitieren Link zu diesem Kommentar
Hoschy2020 0 Geschrieben 20. Oktober 2019 Autor Melden Teilen Geschrieben 20. Oktober 2019 Könnest du mir noch in deinem Code angeben wie man es als zip vielleicht ablegen kann die Backups? Da meine Platte nicht all zu groß ist und ich etwas Platz sparen müsste. Und das beim Löschvorgang dann auch geschaut wird danach, dass es zip Dateien sind? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 20. Oktober 2019 Melden Teilen Geschrieben 20. Oktober 2019 Hmmm ... normalerweise liefern wir hier keine "schlüsselfertigen" Lösung frei Haus. Wir erwarten ein gewisses Maß an Eigentinitiative und Mitarbeit - es ist schließlich ein Forum für IT-Profis. Die Schnipsel oben waren nur dazu gedacht, Dir zu zeigen, dass Powershell alles andere als schwierig ist. Es liegt meiner Meinung nach aber jenseits der Aufgabe dieses Forums, Dir iterativ eine fertige Lösung für Dein Problem zusammenzubasteln. Ich empfehle Dir dingend, Dir die Grundlagen von Powershell anzueignen. Solltest Du vorhaben, Dich noch eine Weile im Windows-Server-Umfeld zu bewegen, lohnt sich das ganz sicher AUF JEDEN FALL. Das geht mit einem guten Buch oder einem online Tutorial oder sogar mit ein paar gut gewählten Videos ganz einfach. Dabei lernt man auch, wie und wo man am besten Hilfe bekommt - die ist bei Powershell quasi eingebaut. Für die Erweiterung des Codes mit den von Dir gewünschten Funktionen solltest Du Dir die Hilfe für die cmdlets Compress-Archive und Get-ChildItem näher ansehen. Du solltest Dir jeweils die komplette Hilfe inklusive der Beispiele ansehen, um zu lernen, wie man sie benutzt. Wenn Du Code hast, der aber eventuell nicht das tut, was Du erwartest oder der Fehlermeldung produziert, die Du nicht selbst beseitigt bekommst, kannst Du den hier gern posten und wir werden versuchen Dir zu helfen. 1 Zitieren Link zu diesem Kommentar
Finanzamt 73 Geschrieben 29. Oktober 2019 Melden Teilen Geschrieben 29. Oktober 2019 Moin Hoschy, auch wenn manch einer das hier nicht so gerne liest *grins*, lässt sich Dein Prob auch mit einer Batch lösen. Du willst ja ganz gern Spiel(zu)stände sichern und ich vermute mal, im Prinzip nicht nur zwei, sondern evtl. sogar noch mehr. Damit Du anderen Sachen nicht in die Quere kommst, mach in Deinem HomeDir ein Verzeichnis (z.B.) MineBack. Da rein kommt die Batch. Außerdem eine Notepad-Datei (in der z.B. "HUHU" steht) und die Du MineSafe.001 benennst. Jetzt kannst Du in Deiner Batch abfragen: IF EXIST MineCraftSichern.Nein GOTO Ende (optional, s.u.) IF EXIST MineSafe.001 GOTO S001 IF EXIST MineSafe.002 GOTO S002 IF EXIST MineSafe.003 GOTO S003 ... IF EXIST MineSafe.020 GOTO S020 :S001 ROBOCOPY [Quelle] [Zielverzeichnis]\001 /XO /S REN MineSafe.001 MineSafe.002 GOTO Ende :S002 ROBOCOPY [Quelle] [Zielverzeichnis]\002 /XO /S REN MineSafe.002 MineSafe.003 GOTO Ende :S003 ROBOCOPY [Quelle] [Zielverzeichnis]\002 /XO /S REN MineSafe.002 MineSafe.003 GOTO Ende ... :S020 ROBOCOPY [Quelle] [Zielverzeichnis]\002 /XO /S REN MineSafe.020 MineSafe.001 GOTO Ende :Ende Wenn Du die Batch als Task z.B. einmal stündlich anwerfen willst, solltest Du einen weiteren "Dateischalter" verwenden, den zwischen MineCraftSichern.JA und MineCraftSichern.NEIN umbenennst. Dann trägst Du den Sicherungsauftrag im Taskplaner als stündlich ein und (de) aktivierst ihn durch Umbenennen von MineCraftSichern.NEIN in MineCraftSichern.JA. Im Übrigen empfehle ich Dir zum Einarbeiten in Powershell, erstmal zu probieren, schon vorhandenen Batche in der PowerShell auszuführen - sei es als komplette Batch, sei es Schritt für Schritt aus der PS-Konsole. Viele Batchbefehle werden automatisch "übersetzt". So liefe die o.g. Batch auch als .PS1 Und die Sache mit den "Dateischaltern" kann ein mächtiges Werkzeug auch in der PowerShell-Umgebung werden. Man ist ja nicht auf einen einzigen Dateischalter angewiesen. Durch Kopieren, Umbenennen oder Löschen solcher Dateien lässt sich zwar umständlich, aber immerhin tatsächlich objektorientiert Scripten ... Gegrüßt! 1 Zitieren Link zu diesem Kommentar
Finanzamt 73 Geschrieben 29. Oktober 2019 Melden Teilen Geschrieben 29. Oktober 2019 Moinmoin, den meisten wird es wohl gleich auffallen: In dem Beispiel oben habe ich bei :S003 und :S020 hinter Zielverzeichnis \002 stehen gelassen. Es muss natürlich \003 und \020 heißen, da jeder Sicherungslauf revolvierend in die (ggf. durch Robocopy neu angelegten) Verzeichnisse \001, \002, \003, ... \019, \020 schreiben soll. Sorry, aber beim Copy&Paste bin ich trotz aller Vorsicht manchmal nachlässig. Gegrüßt! Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 29. Oktober 2019 Melden Teilen Geschrieben 29. Oktober 2019 Kann man so machen, wird vermutlich auch funktionieren, aber mit Verlaub: Das sind Methoden aus dem letzten Jahrtausend... Sogar bei Batch ging das mit "for /l" schon eleganter, von Powershell wollen wir jetzt nur mal träumen. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 29. Oktober 2019 Melden Teilen Geschrieben 29. Oktober 2019 Nu sei ma nich so! ... ich hole gelegentlich auch noch mal mein altes NES aus'm Keller und vertreibe mir ein bissl die Zeit ... Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 29. Oktober 2019 Melden Teilen Geschrieben 29. Oktober 2019 Ich hab den C64 verkauft, als ich mit "Open(1,8,15)" nichts mehr anfangen konnte ?? 1 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.