PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 7-zip


Gast
2009-10-02, 18:32:31
Hallo,

ich habe eine Aufgabe die ich gerne mit 7-zip* lösen würde.

Ich habe eine grosse Dateiliste (mit Pfadangaben). Diese Dateien verteilen sich über verschiedene Laufwerke und Verzeichnisse. Diese Dateien hätte ich gerne archiviert. Wichtig dabei ist, dass die Dateien mit Pfadangabe bzw. dem absoluten Pfad gesichert werden. Sollten verschiedene Laufwerke zusammen nicht möglich sein, kann ich das auch für jedes Laufwerk einzeln machen. Dateien sind genug vorhanden, so dass sich auch das für mich lohnen würde.
Eine Komplettsicherung scheidet aufgrund der enormen Datenmenge aus.

Ich hoffe jemand kann mir helfen.

Vielen Dank im voraus für die Hilfe!


* andere Lösungsvorschläge sind mir natürlich auch willkommen

beos
2009-10-02, 19:00:29
Die Kommandozeilenversion von 7Zip unterstützt List Dateien.
Ich weiss aber nicht, ob die Orginalpfade erhalten bleiben !


Hier mal den Text aus der Hilfe:

For example, if the file "listfile.txt" contains the following:

My programs\*.cpp
Src\*.cpp

then the command

7z a -tzip archive.zip @listfile.txt

adds to the archive "archive.zip" all "*.cpp" files from directories "My programs" and "Src".

Gast
2009-10-02, 19:25:38
O.K. Die Liste schluckt er schon mal. Die Pfade fehlen noch. Ein weiteres Problem hat sich mir aber in den Weg gestellt. Einige Dateinamen sind doppelt oder mehrfach vorhanden. Das mag 7-zip gar nicht und bricht mit einer Fehlermeldung ab. -.-

Gast
2009-10-02, 19:29:04
Das mit den Pfaden könnte sich evtl. in wohlgefallen auflösen. Die Liste kann ich wohl auch wieder beim entpacken einlesen.

sei laut
2009-10-02, 19:32:23
Versuch mal beim extrahieren
7z x archive.zip

Gast
2009-10-02, 19:38:46
Das Textfile mit den Pfaden will er beim entpacken nicht:

Error:
Cannot use absolute pathnames for this command

Also wenn ich mit dem parameter "x" entpacken versuche.

sei laut
2009-10-02, 20:08:11
7z x archive.zip -oX:\*
wäre der vollständige Befehl, die Pfade sollten ja im Archiv gespeichert sein. Oder irre ich mich?
X = Laufwerksbuchstabe, ohne diese Angabe ist der 7zip Installationsverzeichnis das Wurzelverzeichnis.

Gast
2009-10-02, 21:54:06
Bei mir entpackt er die Dateien dann einfach in ein neues Verzeichnis mit dem Archivnamen. Unterordner werden nicht erstellt. :/

Naja ... ich versuch morgen nochmal eine Lösung zu finden.

Auf jeden Fall schon einmal Danke für die Hilfestellung. :)

Gast
2009-10-03, 12:22:26
Guten Morgen,

ich habe das Problem jetzt lösen können. Aber es gibt eine Einschränkung:

Absolute Pfadangaben sind nur ohne Laufwerksnamen möglich. D. h. Man kann nur vom Root des jeweiligen Laufwerks aus sichern.

Die Dateinamen müssen dabei in folgender Weise im Textfile stehen:

blahblah.txt
unterverzeichnis1\blubb.txt
unterverzeichnis1\unterverzeichnis2\3dcenter.zip
usw.

Das "X:\" fällt also komplett weg.

Man sollte übrigens auch darauf achten in welchem Format (utf-8, ansi, unicode) man sein Textfile abspeichert. Ansonsten bekommt man Probleme mit den deutschen Umlauten. Je nachdem muss man sich den Parameter -scs einstellen. --> "-scsWIN" für ANSI.

7z a backup @textfile.txt -scsWIN

Entpacken funktioniert ganz normal. Man sollte nur darauf achten, dass die Datei auf dem richtigen Laufwerk liegt:

7z x backup.7z

Die (Unter-)Verzeichnisse werden sofern nicht bereits vorhanden automatisch angelegt.

Wer die Dateien anschließend gleich noch löschen will kann das folgende Skript benutzen:

Option Explicit
Dim FSO
DIm FSO2Kill
Dim DateiInhalt
Dim Zeile
Dim Inhalt
Const Dateiname = "x:\textfile.txt"

Set FSO = CreateObject("Scripting.FileSystemObject")
Set FSO2Kill = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(DateiName) Then
Set DateiInhalt = FSO.OpenTextFile(Dateiname)
Do Until DateiInhalt.AtEndOfStream
Zeile = DateiInhalt.ReadLine
Inhalt=Inhalt + Zeile +vbCrLf
FSO2Kill.DeleteFile Zeile
Loop
DateiInhalt.Close
Wscript.Echo Inhalt
MsgBox "gelöscht"
Else
Wscript.Echo "Datei" & " Dateiname " & " nicht gefunden "
End If

Zu beachten ist, dass man hier wieder die kompletten Pfadangaben benötigt also incl. Laufwerksbuchstaben benötigt.