Jump to content

Dateien sichern, zippen und das in geordneter Reihenfolge


Recommended Posts

Hallo,

der Titel mag etwas verwirrend sein, aber ich habe folgende Anforderung. Muss dazu sagen, ich kenn mich beim Scripting nicht wirklich aus, Normal suche ich mir zusammen was ich brauche, hier ist es aber für mich etwas komplexer und ich komme nicht weiter.

Es werden am Tag automatisch mehrmals Dateien erzeugt, die dann dann auch immer wieder überschrieben werden.

Diese Dateien sollen jetzt mit Zeitstempel im Namen an einen anderen Ort geschrieben werden.

Das funktioniert schon hiermit.

CURDATE.EXE
CALL CURDATE.BAT
COPY \\server\Folder\File.dat D:\Backup\Folder\File_%DATUM_ZEIT%.dat

CURDATE.EXE liefert den Zeitstempel für den Namensstring.

 

So, jetzt habe ich am Ende des Tages in jedem Ordner 4-10 Files. Dort möchte ich das neueste File nehmen und zippen, damit es weniger Platz wegnimmt und nochmal gesondert aufgehoben werden kann. Die anderen Files werden wieder gelöscht.

 

Habe zwar schon bisschen was gefunden, das hat aber noch nicht so funktioniert. Zippen mit 7-Zip, aber wie das letzte File nehmen?

"C:\Programme\7-Zip\7Z.EXE" a -mmt4 -t7z D:\ARCHIV\FOLDER\FILE_%DATUM_ZEIT%.7Z D:\BACKUP\FOLDER\LASTFILE.dat -r -m0=LZMA2 :x=9 :d=1024m :s=on

Theoretisch macht er es ja so, wenn ich nen expliziten Namen angebe. Aber wie bekomme ich es hin, dass er die letzte erzeugte Datei nimmt?

 

Zweites Problem ist, dass es nicht nur 1 Verzeichnis ist, sondern am Ende ca. 30 verschiedene Verzeichnisse mit je 4-10 Files pro Tag.

 

Jetzt ist natürlich die Frage, wenn ich alle gleichzeitig zippe, ob das gutgeht. Die Files reichen von paar MB bis zu 40GB.

 

Ich würde gerne eines nach dem anderen zippen. Gibts da ne Möglichkeit zu sagen. Zippe File1, wenn fertig, zippe File2 usw.

 

Danke schon mal fürs Lesen und für hoffentlich hiflreiche Antworten :D

Link to post

Hi,

 

ich würde dir hier die PowerShell ans Herz legen:

Gruß

Jan

 

P.S.: Ich würde auch den ersten Part ("Mit Zeitstempel wegkopieren") in PowerShell überführen.

Edited by testperson
Link to post

Also ich hatte jetzt mal Zeit mich damit zu beschäftigen.

Habt Recht, Powershell ist das Tool der Wahl :D

Habe jetzt alle Anforderungen am laufen, bis auf das Verschieben der letzten Dateinen. Kann es zwar mit je einem Einzeiler, aber das geht doch bestimmt in einem Statement.

gci \\server\backup\folder1\ -File | sort LastWriteTime -Desc | Select -First 1 | Copy-Item -Destination \\server\backup\000_Archiv -Force

Damit kopiere ich immer die letzte Datei in den 000_Archiv Ordner. Allerdings hab ich im Moment das Statement halt so oft drin, wie Ordner. Habs bisher nicht hinbekommen, wie schreibt man das dann?

Link to post
vor 1 Stunde schrieb MrMojoRisin666:

Habt Recht, Powershell ist das Tool der Wahl :D

Gut erkannt.  ;-) 

vor 1 Stunde schrieb MrMojoRisin666:

mit je einem Einzeiler, aber das geht doch bestimmt in einem Statement.

Hier gleich noch eine dringende Empfehlung für Deine weitere "Powershell-Karriere". Bitte in Scripten und auch hier in Foren nicht alles in mit Einzeilern und so kruz wie's geht abhandeln!! Das macht eventuell auf der Konsole Sinn, wenn Du einfach nur eine Ausgabe brauchst. In Scripten und ganz besonders, wenn auch andere diese Scripte später eventuell benutzen und, wenn nötig, anpassen und erweitern sollen, solltest Du die Befehle so ausführlich und deklarativ schreiben, wie es geht. 

Dein Einzeiler würde so viel leichter/schneller verständlich sein:

Get-ChildItem -Path '\\server\backup\folder1' -File | 
    Sort-Object -Property LastWriteTime -Descending | 
        Select-Object -First 1 | 
            Copy-Item -Destination '\\server\backup\000_Archiv' -Force

Vielleicht liest Du Dir bei Gelegenheit mal den Best-Practice and Style Guide durch.  

  • Like 1
  • Thanks 1
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...