Benutzer mit den meisten Antworten
Sortierung! Aber wie?

Frage
-
Ich bastle jetzt schon eine gefühlte Ewigkeit an meinen PS Fähigkeiten. Langsam wird auch was daraus aber ich habe immernoch ein Problem. Die Sortierung/ Der Filter für das Backup Script das ich erstellen soll.
Fall ist wie folgt: Auf 2 Redundanten Backup Servern liegen Backups.
Ich soll nun ein Script Schreiben das immer das älteste Backup runterlädt.
Es gibt Backups die täglich hochgeladen werden und welche die im 1 bzw 2 Wochen Takt dazukommen.
Nun würde ich gerne um dem Script die Sache zu erleichtern einarbeiten, das eine textfile erstellt wird, Aus der sich das Script den Firmennamen und die Backuptaktung holt.
angelegt sind die dateien wie folgt:
Servername:\Wochentag\DDMMYYYY_Firmenname_Backup.bak
Mein Ziel: Eine Textdatei erstellen aus der das Script seine Infos zieht. Nach diesem Script soll es dann die Backupfiles so sortieren das immer das älteste Backup oben steht. Wenn ein 14 Tägiges Backup an erster Stelle ist, soll vor der Sortierung allerdings geprüft werden ob es überhaupt so lange her ist das ich eine Lokale Datei dieser Firma erstellt habe um unnötige Dateien aus der Sortierung zu werfen.
Ich verzweifel nur immer wieder daran wie ich das am Idealsten verwirklichen kann.
MfG
Antworten
-
>>> will das immer nach der Arbeitszeit für ein paar Stunden laufen lassen
>>> Und kann ich dem Script irgendwie ne art Bookmark mitgeben das es sich merkt wo es beim letzten mal aufgehört hat?
>>> Ansonsten muss ich mir überlegen wie ich es sortieren lassen das er nicht immer nur die selben Firmen durchläuft.
Ich habt wirklich lustige Ideen! Waraum lasst ihr nicht (wie die meisten Firmen) die Backups über Nacht durchlaufen? Nacht-Strom ist doch günstiger als Tag-Strom ;-)). Dadurch wird das ganze Backup natürlich sehr viel schwerer zu händeln!
Wenn das Lokale sichern der Täglichen Backups (diese werden ja bevorzugt) zu lange dauert, dann kommen die 14 Tägigen Backups nie zum Zuge!Als wegen der Checksumme habe ich dir das Stichwort schon gesagt ! PowerShell MD5 !
http://learn-powershell.net/2013/03/25/use-powershell-to-calculate-the-hash-of-a-file/Wenn die Dateien sehr groß sind dauert die Berechnung der Checksumme sehr lange.
Hier kann der Microsoft File Checksum Integrity Verifier eventuell schneller sein:
http://support.microsoft.com/kb/841290Du kannst es dir einfacher machen indem du das Kopieren mit Robocopy machst !
Robocopy ist sehr schnell und zuverlässig ! Robocopy unterstützt auch lange Pfade!
RoboCopy Referenz
http://technet.microsoft.com/en-us/library/cc733145%28v=ws.10%29.aspx
Sehr Guter RoboCopy Artikel
http://www.wintotal.de/artikel/artikel-2007/91.htmlBackups sind Sicherheits-Kopien diese sollten wirklich Professioneller behandelt werden!
Professionelle Software wäre besser!
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!
- Bearbeitet Peter Kriegel Donnerstag, 28. März 2013 15:19
- Als Antwort markiert PSbeginner Dienstag, 2. April 2013 06:15
Alle Antworten
-
Ich verstehe deine Frage nicht!
Da liegt wahrscheinlich auch die Lösung deines Problems!
Oft ist es so: Wenn man die Frage zu seinem Problem hat, hat man auch die Lösung ! ;-) (Albert Einstein)
>>> Auf 2 Redundanten Backup Servern liegen Backups.
Willst du die beide abfragen?
Sind die Backups dort immer synchron oder müssen die Verzeichnisse zusammen als eins betrachtet werden?>>> um dem Script die Sache zu erleichtern ein textfile erstellen ...
Dem Script ist das egal wie schwer das wird! ;-) Du willst es dir erleichtern !?
PowerShell Arbeitet mit Objekten nicht mit Text!>>> Servername:\Wochentag\DDMMYYYY_Firmenname_Backup.bak
Was bedeutet Wochentag in dem Pfad? Gibt es für jeden Montag,Dienstag,Mittw.. ein Verzeichnis?
Im Dateinamen ist doch ein Datum nimm doch dies!?>>> Ich soll nun ein Script Schreiben das immer das älteste Backup runterlädt.
Dabei spielt doch die taktung keine rolle sondern nur das Datum!? Ist mit älteste Backup das Datum im Dateinamen gemeint?
>>> Die Sortierung/ Der Filter
Wonach sortieren ? Wonach Filtern und warum?
>>>Backupfiles so sortieren das immer das älteste Backup oben steht. Wenn ein 14 Tägiges Backup an erster Stelle ist, soll vor der Sortierung allerdings geprüft werden ob es überhaupt so lange her ist das ich eine Lokale Datei dieser Firma erstellt habe um unnötige Dateien aus der Sortierung zu werfen.Das Geht nicht! Du willst erst SORTIEREN um zu sehen ob ein 14Tägiges Bakup oben steht. Dann willst du aber VOR DEM SORTIEREN sehen ob es diese Bakup schon gibt. Da hast du ein Henne - EI Problem! (Was war zu erst auf der Welt ein Ei oder ein Huhn um dieses Ei zu legen? Paradoxon)
Was beudeutet nun Lokale Datei in deiner beschreibung? Wo kommt die nun her ? Lokale Datei + 2 Redundanten Backup Server ? Bahnhof?
>>>Ich verzweifel nur immer wieder daran wie ich das am Idealsten verwirklichen kann.
Backups verwaltet man am idealsten mit einer Professionellen Backupsoftware nicht mit PowerShell oder Robocopy !
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!
- Bearbeitet Peter Kriegel Montag, 25. März 2013 17:20
-
Ok mein Fehler.
1. Es ist egal von welchem Server die Daten geholt werden (tut also bei der Sortierung nix zur Sache wäre aber meiner Meinung ein nettes Feature wenn man beim Sortieren schauen kann ob auch alle Backups auf beiden Servern funktioniert haben)
2. Chef will es so ^^ ich hab auch vorgeschlagen einfach mit Arrays o.ä. zu Arbeiten aber Chef hat seine Vorstellungen ;)
3. Genau das. Jeder Wochentag hat seinen eigenen Ordner. Und ich will die Firmennamen weil für jede Firma immer mal wieder ein Backup Lokal gespeichert werden soll und das mit dem datum hätte ich dann via Änderungsdatum bzw Erstelldatum geregelt.
4. Tägliche Updates sollen bevorzugt werden. Daher das mit der Taktung. Das tatsächliche Erstelldatum (was Theoretisch auch das Datum im Dateinamen sein soll)
5. Filtern nach Firmen und sortieren nach Datum (ältestes Datum Lokales Update hat Priorität bzw Tägliches datum oder 2 Wöchentliches +14 bzw wöchentliches +7)
6. Backups sollen aus Sicherheitsgründen von den Servern auf Lokale Backup Festplatten geladen werden. Ok das Huhn Ei Problem muss ich dann auf andere art und weise lösen.
7. War auch meine Aussage aber es soll Powershell sein.
-
1.) Erst mal das Haupt Problem lösen!
2.) >>> textfile erstellt wird, Aus der sich das Script den Firmennamen und die Backuptaktung holt.
Wollt ihr damit überprüfen, ob die Firmen Ihr Intervall einhalten? Was hat das sonst für einen Zweck?
3.) Einen Ordner mit jedem Wochentag anzulegen hat wenig Sinn! Die Backups können ja nur nach Ihrem Datum behandelt werden und aus dem Datum kann man ja den Wochentag ablesen!
Das Änderungsdatum bzw. das Erstelldatum einer Datei sind keine guten Anhaltspunkte!
Diese können leicht manipuliert werden und bei einem (oder mehreren) Umzug der Daten kannst dich da auf fast nichts mehr verlassen! Das Datum im Namen der Datei ist da wohl am verlässlichsten!
4.) Verstehe ich nicht! Was für einen Sinn macht es tägliche oder 14 Tägige Updates zu bevorzugen wenn man das letzte Update haben will. Da sind wir wieder beim Datum! Die Intervalle spielen doch gar keine Geige!
5.) Siehe 4.)
Filtern nach Firmen und sortieren nach Datum. Das ist es doch oder? Nix mit Intervallen oder Wochentagen!
6.) Ok! Backups auf Lokale Platten ist eine ganz gute Idee. Da sollte dann mindestens eine Checksumme berechnet (z.B. MD5) werden um zu prüfen ob die Datei heile kopiert wurde (Professionelle Programme machen das noch genauer!).
Ich lese aus dem ersten Post heraus, das Ihr alle 14 Tage die Backups vom Server auf die Lokalen Platten zieht?
Was machen eigentlich eure Intervalle bei Feiertagen oder Wochenenden sind di dann immer Stur alle 7 oder 14 Tage? Wenn nicht ist die Überprüfung der Intervalle nicht berechenbar. Die ist dann noch schwerer/nicht zu Automatisieren!Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum! -
1. Da bin ich grad drauf und dran
2. Ne Cheff will das denke mal für sich selber auch zum Überprüfen ob auch alle Firmen in der Liste sind
3. Das is mir auch klar aber so is nunmal leider die Sortierung auf den Servern
3.2. Ok gut zu wissen vielen dank schonmal dafür
4. Wieder einmal etwas das Chef so haben will
5. Wäre definitiv das einfachste und das würd ich mit meinen geringen Fähigkeiten auch noch hinbekommen. Ist aber leider das gewünschte
6. Nene Chef will das immer nach der Arbeitszeit für ein paar Stunden laufen lassen
7. Das wird alles stur und automatisch gemacht
-
Ich werde es jetzt wohl so vorgehen das ich mir die Dateien lokal nach Firmennamen filtern lasse und einfach für jeden Firmennamen einmal abfragen lasse ob das Datum der online Datei - dem Datum der lokalen Datei >7 ist und ob die Datei noch nicht lokal vorhanden ist. Wenn beides zutrifft lass ich ihn die Datei runterladen. Ist glaube ich die einfachste Lösung.
Nach welchem Befehl muss ich denn suchen wenn ich die Checksumme prüfen lassen will? Und kann ich dem Script irgendwie ne art Bookmark mitgeben das es sich merkt wo es beim letzten mal aufgehört hat?
Ansonsten muss ich mir überlegen wie ich es sortieren lassen das er nicht immer nur die selben Firmen durchläuft.
Hab mir das von der Planung so vorgestellt:
Verbinden mit dem FTP
Do
Erstellen eines Arrays mit allen Firmennamen (onlinedateien)
Vergleich online / lokal Firmennamen
Wenn Firmenname Lokal nicht vorhanden download online BackupLoop
Ansonsten nächster Schritt
Do
Absteigendes sortieren nach Datum (lokal)
Anfangen mit oberster Datei (lokal)
Filtern Firma (lokal & online)
Sortieren nach Datum (lokal und online)
Wenn Datum online - Datum lokal > 7 und file exist = false dann download
Checksumme überprüfen
Wenn Checksumme = false
Lokale Datei löschen und widerholen
Ansonsten nächster Schritt
Wenn mehr als X dateien mit Firmenname vorhanden sind: löschen des ältesten Backups
Loop
Ansonsten
Trennen vom FTP- Bearbeitet PSbeginner Donnerstag, 28. März 2013 09:05
-
>>> will das immer nach der Arbeitszeit für ein paar Stunden laufen lassen
>>> Und kann ich dem Script irgendwie ne art Bookmark mitgeben das es sich merkt wo es beim letzten mal aufgehört hat?
>>> Ansonsten muss ich mir überlegen wie ich es sortieren lassen das er nicht immer nur die selben Firmen durchläuft.
Ich habt wirklich lustige Ideen! Waraum lasst ihr nicht (wie die meisten Firmen) die Backups über Nacht durchlaufen? Nacht-Strom ist doch günstiger als Tag-Strom ;-)). Dadurch wird das ganze Backup natürlich sehr viel schwerer zu händeln!
Wenn das Lokale sichern der Täglichen Backups (diese werden ja bevorzugt) zu lange dauert, dann kommen die 14 Tägigen Backups nie zum Zuge!Als wegen der Checksumme habe ich dir das Stichwort schon gesagt ! PowerShell MD5 !
http://learn-powershell.net/2013/03/25/use-powershell-to-calculate-the-hash-of-a-file/Wenn die Dateien sehr groß sind dauert die Berechnung der Checksumme sehr lange.
Hier kann der Microsoft File Checksum Integrity Verifier eventuell schneller sein:
http://support.microsoft.com/kb/841290Du kannst es dir einfacher machen indem du das Kopieren mit Robocopy machst !
Robocopy ist sehr schnell und zuverlässig ! Robocopy unterstützt auch lange Pfade!
RoboCopy Referenz
http://technet.microsoft.com/en-us/library/cc733145%28v=ws.10%29.aspx
Sehr Guter RoboCopy Artikel
http://www.wintotal.de/artikel/artikel-2007/91.htmlBackups sind Sicherheits-Kopien diese sollten wirklich Professioneller behandelt werden!
Professionelle Software wäre besser!
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!
- Bearbeitet Peter Kriegel Donnerstag, 28. März 2013 15:19
- Als Antwort markiert PSbeginner Dienstag, 2. April 2013 06:15
-
Chef will eben KEIN RoboCopy
Das ganze soll über Nacht laufen. Wie gesagt nach der Arbeitszeit.
Mit der Sortierung ist mir jetzt auch die Idee gekommen die mir gefehlt hat. Ich sortiere erstmal Lokal nach Datum. Online werden ja auch immer nur 4-5 Backups gespeichert und der Rest gelöscht (die Info hatte ich vergessen mitzugeben). Dann lasse ich ihn einfach vergleichen ob die älteste Datei online auch vorhanden ist. Sollte dies nicht der Fall sein lasse ich ihn einfach das Backup runterladen. Ansonsten soll er zum Nächsten springen. So werden tägliche Backups bevorzugt aber die 14-tägigen nicht einfach vergessen.
Danke für den Link wg hash.
Somit bin ich der Lösung wieder einen Schritt näher.