Jump to content

Script zum Dateienkopieren und packen...


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Leute,

 

ich wurde vor eine Aufgabe gestellt, die ich leider selbst nicht lösen kann... ich komme eigentlich aus dem Unix Umfeld und stehe deshalb jetzt etwas ratlos da...

 

Ich möchte einen Ordner im Netzwerk (in dem Ordner ist ein Virenscanner der unregelmäßig mehrmals in der Stunde upgedatet wird) packen und anschließend im Netzwerk auf einen anderen Ordner kopieren auf den man via Webserver zugriff hat...

 

Die Besonderheit dabei ist halt, dass durch eine Routine der Setup-Ordner des Virenscanners zu unterschiedlichen Intervallen einmal pro Stunde aktualisiert wird... Das Script/Der Packer darf also das Archiv nicht während es Aktualisierungsvorgangs erstellen, da es dann kaputt wäre...

 

Dem Packer (ich weiß auch noch nicht welchen man am besten nimmt) sollte dann die Option "-mng no" mit übergeben werden. Der Packer soll also eine exe-Datei erstellen die nach dem extrahieren automatisch setup.exe -mgn no startet...

 

Die Frage ist jetzt nur... wie programmiere ich soetwas... wie kann ich sicherstellen,dass meine gepackten Dateien nicht korrupt sind.. einfach alles.. ich habe - ganz ehrlich - gar keine Ahnung davon...

 

Ich wäre euch sehr dankbar, wenn ihr eine Idee habt :)

 

Viele Grüße

 

Van_Haakonnen

Link zu diesem Kommentar

Hallo erstmal.

 

Also das Kopieren etc. sollte wohl das geringste Problem darstellen. Da kannst du ja sogar eine einfache Batch-Datei verwenden (xcopy etc.). Ich weiß jetzt nicht, welches Umfeld du hast, sonst würde sich natürlich auch die neue Powershell für solche Aufgaben anbieten, oder VBScript.

 

Zum Problem an sich: Vielleicht kannst du zunächst einmal eine Kopie des gesamten Verzeichnisses erstellen, bevor du dieses dann packst. Dadurch kannst du das Problem mit Dateien im Zugriff evtl. umgehen. Du packst dann das kopierte Verzeichnis erst, wenn du sicher bist, dass alles einwandfrei kopiert wurde. Vielleicht kann man mit der Powershell sogar herausfinden, ob Dateien gerade im Zugriff sind. So genau kenne ich mich damit noch nicht aus. Sie bietet aber Einiges, also vielleicht auch das.

 

Links:

Windows PowerShell - Wikipedia (was ist die Powershell)

Microsoft Corporation (Beispielscripts)

Link zu diesem Kommentar

Hi van_haakonnen und willkommen on Board

 

für WinZip gibt es ein KomandozeilenAddon. Ob das alle deine anforderungen erfüllt kann ich auf anhib nicht mit sicherheit sagen.

 

Das KomandozeilenAddon war glaube ich entweder mit dabei, dann musst du es einfach, nachdem du WinZip installiert hast, ausführen, oder es musste extra, dann aber für umme, herunterladen. Ebenfalls dabei ist dann eine CHM mit der man klar kommen kann.

 

Wenn es nicht sooo eilig ist, schick mir ne PM und ich kann dir dann am Montag die genauen infos schicken.

 

Wenn du noch fragen hast, melde dich einfach!

Link zu diesem Kommentar

Vielen Dank für eure Antworten :)

 

Also ich habe halt das Problem, dass ich keine Ahnung habe wie man überhaupt ein Script oder auch eine bat-Datei unter Windows auch nur ansatzweise schreibt...

 

Die Idee mit Winzip und dem Addon klingt aber mal sehr gut. Mit Winzip könnte man ja selbstextrahierende Archive erstellen...

 

Also es gibt eine Datei die aus dem Ordner, die ganz am Ende erst mitaktualiert wird... Eine Art Index-Datei in denen die ganzen Updates für den Virenscanner hineingeschrieben werden... WEnn man (aus dem Unix-Umdeld) eine MD5-Prüfsumme von dieser Datei bildet... dann alles zusammenpackt (mit den richtigen Befehlen, selbstextrahierendes Archiv, etc.) und dann diese Datei im Netzwerk an die korrekte Stelle kopiert... Dann macht man von der Ausgangsdatei nochmal die MD5 Prüfsumme und vergleicht die beiden Summen... Wenn das gleiche herauskommt ist alles okay... sind sie verschieden darf man das archiv nicht auf den WEbserver kopieren weil es kaputt sein könnte.. .das müsste alles sein... In der Theorie verstehe ich das... praktisch kann ich nur leider nix davon realiseren :(

Link zu diesem Kommentar

Ja fast... also ganz konkret ist es so...

 

wir haben ein AFS-Dateisystem in der Arbeit...

 

Ich habe also ein eingehangenes Netzlaufwerk unter z.B. Z:/projects/virenscanner/

 

Darin liegen die Dateien vom Virenscanner die mehrmals stündlich (unregelmäßig) aktualiesiert werden... deshalb muss man irgendwie verhindern, dass er das Archiv erstellt, wenn gerade aktualisiert wird...

 

Dann möchte ich diesen Ordner packen und z.B. nach Z:/apache/www/download/ kopieren...

 

Der User soll dann eine fertige .exe-Datei bekommen die er nur noch starten muss... automatisch soll dann das setup gestartet werden (setup.exe -mgn no für den Virenscanner).

 

Das ist eigentlich alles... also eine WinZIP Version müsste ich kaufen lassen... aber das sollte nicht das Problem sein... sofern es erstmal testhalber mit der Freeware-Fassung von Winzip geht reicht das zum Testen ja auch erstmal aus... :)

Link zu diesem Kommentar

Ja... Also es handelt sich um Sophos... Natürlich haben wir einen Server der Updates bereithält... Es geht hierbei mehr darum, dass man ein fertiges und immer aktuelles Installationspaket hat, dass man verwenden kann, wenn z.B. ein Rechner Virusversäucht ist... Dann möchte man den vielleicht nicht mehr ans Netz lassen um ihn erst die Updates ziehen zu lassen...

Link zu diesem Kommentar

Hi,

 

ich hab hier noch die Version 9 und da ist es nicht möglich, per Kommandozeile direkt eine .exe-Datei zu erstellen (zumindest finde ich in der Hilfe nichts dazu). Schau mal hier:

 

WinZip® Command Line - Testversion herunterladen

 

Da gibt es eine version die mit Winzip10 kompatibel ist, könnte sein dass die das kann.

 

Zum Thema Batch kann ich dir leider nicht sagen, wie du eine überprüfung der Daten hinbekommst, aber die geschichte mit dem zip:

 

del X:\Pfad_zum_Speicherort_der_Zip\*.* /q 

"Z:\Pfad_zur_Anwendung\WZZIP.EXE" -rp X:\Pfad_zum_Speicherort_der_Zip\ZipName.zip X:\Pfad_zu_den_Dateien\*.*

 

del steht für Delete, dann die Pfadangabe und *.* wählt alle Dateien aus zum löschen, das /q sorgt dafür dass nicht nachgefragt wird ob du wirklich löschen willst.

 

Das andere müsste klar sein. Wenn nicht, frag nach.

Link zu diesem Kommentar

Vielen Dank schonmal :)

 

Also deine Zeilen Code kann ich ja einfach in eine Datei kopieren und sie als Dateiendung .bat nennen, oder?

 

@ECHO OFF
CLS
REM ------------------------------------------------------------
REM Name:  SOPHOS.BAT
REM Autor: xxx
REM Datum: 23.04.2007
REM ------------------------------------------------------------

ECHO Update wird auf den Webserver kopiert ..
el X:\Pfad_zum_Speicherort_der_Zip\*.* /q 

"Z:\Pfad_zur_Anwendung\WZZIP.EXE" -rp X:\Pfad_zum_Speicherort_der_Zip\ZipName.zip X:\Pfad_zu_den_Dateien\*.*
ECHO Erfolgreich...

 

Wie kann ich denn Winzip die Option übergeben, dass er (aus dem selbstextrahierenden Archiv) die setup.exe nach dem Extrahieren automatisch starten soll?

 

Hmm.. also das Script muss nur eine einzige Datei überprüfen so wie ich das jetzt sehe... In diesem Sophos Ordner ist eine Datei (eine Art index-Datei für alle Aktualisierungen)... Wenn ich die vorher und nachher überprüfen lasse... diese Datei dann vor und nach dem packen noch identisch ist... Dann wurde auch der Ordner nicht in der Zwischenzeit aktualisiert... Ich muss also zwei Dateien vergleichen... Aber nur wie...

Link zu diesem Kommentar
Vielen Dank schonmal :)

 

Also deine Zeilen Code kann ich ja einfach in eine Datei kopieren und sie als Dateiendung .bat nennen, oder?

 

@ECHO OFF
CLS
REM ------------------------------------------------------------
REM Name:  SOPHOS.BAT
REM Autor: xxx
REM Datum: 23.04.2007
REM ------------------------------------------------------------

[b]ECHO Update wird auf den Webserver kopiert ..
el X:\Pfad_zum_Speicherort_der_Zip\*.* /q [/b]

"Z:\Pfad_zur_Anwendung\WZZIP.EXE" -rp X:\Pfad_zum_Speicherort_der_Zip\ZipName.zip X:\Pfad_zu_den_Dateien\*.*
ECHO Erfolgreich...

 

 

Kleiner Fehler an der Stelle: Nicht "el" sondern "del" und der Kommentar darüber passt nicht, die alte Zip-Datei wird mit dem Befehl gelöscht.

 

 

Wie kann ich denn Winzip die Option übergeben, dass er (aus dem selbstextrahierenden Archiv) die setup.exe nach dem Extrahieren automatisch starten soll?

 

Wie gesagt, soweit ich das in der Version 9 sehe geht das da noch nicht. Lad dir mal Version 11, da gibt es eine Hilfe mit einer Befehlsreferenz.

 

Kannst du bitte noch mal erklären, wie das laufen soll, also wie und wo was entpackt und dann installiert werden soll. Vielleicht ist das auch anderes möglich.

 

 

Hmm.. also das Script muss nur eine einzige Datei überprüfen so wie ich das jetzt sehe... In diesem Sophos Ordner ist eine Datei (eine Art index-Datei für alle Aktualisierungen)... Wenn ich die vorher und nachher überprüfen lasse... diese Datei dann vor und nach dem packen noch identisch ist... Dann wurde auch der Ordner nicht in der Zwischenzeit aktualisiert... Ich muss also zwei Dateien vergleichen... Aber nur wie...

 

Comp ist ein DOS befehl der Dateien vergleicht, ich bezweifle aber dass damit der inhalt einer ZIP verglichen werden kann. Oder blick ich es nicht

Link zu diesem Kommentar
Vielen Dank schonmal :)

Aber nur wie...

 

Auf die schnelle 2 Tips: Dateien vergleichen mit fc

und

Man kann auch mehrere Freigaben auf ein Verzeichnis zeigen lassen, sprich während Dein script läuft, was die neuen Dateien z.B. mit wget holt, hängst du die Freigabe für die Clients ab und nach Ende des Scriptdurchlaufes hängst du Sie wieder dran.

 

Wär ein Ansatz...

Link zu diesem Kommentar

Also bisher nochmals vielen Dank :)

 

Ich versuch es nochmal zu erklären...

 

Wir haben ein Dateisystem, auf den fast alle Server zugriff haben.. so greift der Webserver auch darauf zu und hat dort sein www-root Verzeichnis.

DasWeiteren liegt in diesem Dateisystem auch in einem anderen Verzeichnis in einem Ordner Sophos. Dieser Ordner wird von einem Windows Server und dem entsprechenden Dienst unregelmäßig mehrmals in der Stunde mit den Sophos-Servern abgeglichen und ggf. aktualisiert.

 

Bisher wurde dieser Ordner immer (sehr selten.. vielleicht alle drei Monate mal) von Hand gepackt als extrahierendes Archiv (mit den Optionen, dass auf dem Windows PC nach dem entpacken gleich die Setup-Datei aufgerufen wird) zusammengepackt und in den entsprechenden Ordner des Webservers kopiert.

 

Dies soll nun automatisch geschehen. Wir haben also einen Windows Server der auch Zugriff auf dieses Dateisystem hat... Auf dem soll nun ein Script laufen, dass diesen Sophos Ordner als EXE-Datei packt (sodass das Setup nach entpacken automatisch aufgerufen wird) und dann in das Verzeichnis des Webservers kopieren, damit jeder ihn runterladen kann.

 

Das Problem ist halt, dass der Inhalt des Ordners (Sophos) in unregelmäßigen Abständen aktualisiert wird und man das Archiv ja nicht erstellen darf während eine Aktualisierung läuft...

 

Als "Hilfe" gibt es in dem Sophos Ordner eine Datei, die garantiert bei jedem Aktualisiervorgang mit erneuert wird.. eine Art index-Datei (in der alle Updates verzeichnet sind). Es würde also reichen, wenn man z.B. diese Datei in ein temp-Verzeichnis kopiert.. .dann alles packt... diese Datei nochmals mit der vor dem Packen vergleicht.. wenn alles okay ist, dann verschiebt man das Archiv in den Ordner des Webservers... Das müsste eigentlich reichen...

 

:)

Link zu diesem Kommentar

Hi,

 

das heißt due willst zippen, denn das gerade gezippte mit einer anderen datei vergleichen? sollte doch gehen denke ich...

 

hab ein pdf in dem Batch-Programmierung fein beschrieben ist. Wenn du willst schick mir per PN deine Mailadresse und ich schick dir das ding zu (würd ja ein link posten, nur habe ich keine ahnung wo das her war)

 

Ansatz:

Per Taskplaner eine Batch starten, dies starten:

- packen in Verzeichnis X

- wenn packen erolgreich:

- entpacken in Verzeichnis Y

- vergleicht Datei Z in X mit Datei Z in Y

- wenn gleich löscht er *.* in Y und kopiert X auf U wo die User zugriff haben

 

in U liegt eine Batch die die Zip nach S entpackt und dann die setup.exe startet

 

So in etwa dachte ich mir das

Link zu diesem Kommentar

Dein Vorschlag ist eigentlich perfekt. Also so umgesetzt sollte das alles problemlos funktionieren :) - die Idee mit einer zweiten Batch-Datei die die Setup.exe Anstößt ist nicht schlecht. Aber der User greift auf die Zip-Datei per webserver zu. Also müsste die Batch-Datei dann die Zip aus dem Intranet herunterladen.

 

Meine - Mail Adresse hab ich dir per PN geschickt - Vielen Dank schonmal

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

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

×
×
  • Neu erstellen...