Archiv Erzeugen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Laines
User
Beiträge: 39
Registriert: Donnerstag 15. Mai 2008, 18:42

Hallo ich habe Einen Ordner den ich gerne in ein tar.gz Archiv sichern würde. In ihm sind Dateien und Unterordner.

Beispiel:
/home/user/stuff/
Unter stuff währen Jetzt weitere Unterordner und Dateien. Ich möchte es so haben, das alles ab dem Ordner stuff im Archiv ist. Die Verzeichnisstruktur ab Stuff soll aber weiterhin im Archiv vorhanden sein. Bisher schaffe ich es leider nur das er Absolute Pfade im Archiv sichert, also auch /home/user/stuff/
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

cd dir; tar cf test.tar subdir?
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Laines
User
Beiträge: 39
Registriert: Donnerstag 15. Mai 2008, 18:42

Das sind ja linux comands, ich wollte das mit python syntax machen...
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Laines hat geschrieben:Das sind ja linux comands, ich wollte das mit python syntax machen...
Du kannst doch diese Kommandos aus einem Python-Skript heraus aufrufen ...

Guckst du hier: http://docs.python.org/lib/module-subprocess.html
kaschu
User
Beiträge: 25
Registriert: Sonntag 25. Februar 2007, 14:15

Laines hat geschrieben:Das sind ja linux comands, ich wollte das mit python syntax machen...
dann helfen Dir: os.chdir() und tarfile.open().
Damit kannst Du den Vorschlag von veers in Python umsetzen.

Gruß
kaschu
lunar

In Python braucht es den Wechsel des Arbeitsverzeichnisses nicht.
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Ich würde dir abraten die Commands einfach aus dem Script auszurufen.
Nimm lieber das tarfile Modul. Die Examples in der Dokumentation sollten eigentlich reichen.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Laines
User
Beiträge: 39
Registriert: Donnerstag 15. Mai 2008, 18:42

Ich habe auch bisher mit dem tarfile Modul gearbeitet. Könnte mir jemand den Code Posten ich bekomme das genau so wie ich es will leider nicht selbst hin...
Bisher schaffe ich es leider nur das er Absolute Pfade im Archiv sichert, also auch /home/user/stuff/
lunar

Zeig uns deinen Code, und wir sagen dir, was falsch läuft ...
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

name hat geschrieben:Ich würde dir abraten die Commands einfach aus dem Script auszurufen.
Wieso? Wenn sauber gemacht ist das imho eine saubere Lösung ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
lunar

veers hat geschrieben:
name hat geschrieben:Ich würde dir abraten die Commands einfach aus dem Script auszurufen.
Wieso?
Windows ... das hat weder ein "tar" Kommando. Außerdem ist unter Windows nicht notwendigerweise jedes Programm auch im $PATH.

Und auch unter Linux/Unix muss man sich dann mit leidigen Kompatibilitätsproblemen rumschlagen. GNUs gibts nämlich auch nicht überall ...

Wenn es ein Modul gibt, dann sollte man das auch nutzen.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

lunar hat geschrieben:
veers hat geschrieben:
name hat geschrieben:Ich würde dir abraten die Commands einfach aus dem Script auszurufen.
Wieso?
Windows ... das hat weder ein "tar" Kommando. Außerdem ist unter Windows nicht notwendigerweise jedes Programm auch im $PATH.

Und auch unter Linux/Unix muss man sich dann mit leidigen Kompatibilitätsproblemen rumschlagen. GNUs gibts nämlich auch nicht überall ...

Wenn es ein Modul gibt, dann sollte man das auch nutzen.
Unter windows könnte man ja eine tar.exe mitliefern ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

veers hat geschrieben:Unter windows könnte man ja eine tar.exe mitliefern ;)
Ist die Frage warum man das machen sollte, wenn der Tar-Code schon vom Python-Interpreter mitgebracht wird. :twisted:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

veers hat geschrieben:
name hat geschrieben:Ich würde dir abraten die Commands einfach aus dem Script auszurufen.
Wieso? Wenn sauber gemacht ist das imho eine saubere Lösung ;)
Es ist nie eine saubere Lösung auf externe Kommandos angewiesen zu sein. Überhaupt wenns eh built-in ist.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

name hat geschrieben:Es ist nie eine saubere Lösung auf externe Kommandos angewiesen zu sein.
Naja, so darf man es nicht sehen. Zum Beispiel pings absetzen würde ich auch eher über das System-Ping als selbst die Pakete zu schicken, da man für solche Kommunkation root-Rechte braucht und darum ping auch setsuid ist. Ich würde es eher vermeiden wollen, dass jemand mein Python-Programm mit root-Rechten starten müsste.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Laines
User
Beiträge: 39
Registriert: Donnerstag 15. Mai 2008, 18:42

Hier mal was ich bisher habe:

Code: Alles auswählen

			dateien = os.listdir(UserOrdner)
			for i in dateien:
				ZuAdden = UserOrdner + "/" + i
				tar.add(ZuAdden)
			tar.close()
# UserOrdner ist der Absolute Pfad bis zu dem Ordner der gesichert werden soll
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

name hat geschrieben:
veers hat geschrieben:
name hat geschrieben:Ich würde dir abraten die Commands einfach aus dem Script auszurufen.
Wieso? Wenn sauber gemacht ist das imho eine saubere Lösung ;)
Es ist nie eine saubere Lösung auf externe Kommandos angewiesen zu sein. Überhaupt wenns eh built-in ist.
Aha. Dann ist git also eine ganz unsaubere Lösung. Genauso wie tar, ssh und der gcc sowie eigentlich Unix selbst? Ich seh das anders...
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
BlackJack

@veers: Das ``git`` unschön ist sieht man, wenn man das mal in einer nicht typischen Unix-Umgebung braucht.

Wie ``tar``, ``ssh`` und ``gcc`` da jetzt ins Bild passen sollten, erschliesst sich mir nur bedingt. Der ``gcc`` ruft ja eigentlich nur externe Programme auf, die er sehr genau kennt, weil sie zum gleichen Programmpaket gehören. Und "Unix selbst", ja die meisten Shell-Skripte sind ziemlich unsauber. Es werden bestimmte Features von Shell und aufgerufenden Programmen erwartet, zum Beispiel im Linuxbereich, dass die ``bash`` verwendet wird und die GNU-Varianten der üblichen Programme installiert sind. Das Dateinamen mit Leerzeichen mit sehr vielen Skripten Probleme bereiten ist ja nun auch legendär.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

veers hat geschrieben:Aha. Dann ist git also eine ganz unsaubere Lösung. Genauso wie tar, ssh und der gcc sowie eigentlich Unix selbst? Ich seh das anders...
Tar nutzt bis auf Kompression (sofern gewollt) keine externen Befehle, ssh nutzt auch wohl bis auf sh keine externen Sachen, gcc nutzt häuptsächlich die binutils, die auch von GNU kommen. Ich glaube es ging darum, dass es wenig elegant ist auf externe Programme zuzugreifen, die noch dazu je nach GNU/BSD/POSIX-Userland verschieden funktionieren, wenn die Stdlib so etwas bereits mitbringt.

git ist da etwas anders, aber auch das wird immer mehr in C neugeschrieben. Der Perl-Teil... ok, Perl ist Shellskript mit sed und awk als Endosymbionten :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Leonidas hat geschrieben:
veers hat geschrieben:Aha. Dann ist git also eine ganz unsaubere Lösung. Genauso wie tar, ssh und der gcc sowie eigentlich Unix selbst? Ich seh das anders...
Ich glaube es ging darum, dass es wenig elegant ist auf externe Programme zuzugreifen, die noch dazu je nach GNU/BSD/POSIX-Userland verschieden funktionieren, wenn die Stdlib so etwas bereits mitbringt.
Klar, in dem Falle lässt es sich vermutlich mit der Tarlib wirklich schöner lösen. Mir ging es eher ums "Es ist nie eine saubere Lösung auf externe Kommandos angewiesen zu sein". Ich halte Argumente und Pipes sehr wohl als valides Interface zwischen Programmen. Es mag nicht so ein tolles Buzzword sein wie SOAP (welches ja seine eigenen Probleme hat) oder REST es erfüllt seinen Zweck aber relativ gut ;)

Blackjack,
Ich frage mich da ob das git unschön macht. Git wurde für Unix artige Systeme entwickelt und nicht für Systeme die nicht in der Lage sind neue Prozesse effizient zu starten.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Antworten