tar Archive erstellen

12/01/2011 - 14:57 von Ulli Horlacher | Report spam
Ich will Plattform-uebergreifend GROSSE tar-Archive erstellen.
system("tar ...") verbietet sich, weil das nicht portabel ist (Windows
kennt kein tar).

Archive::Tar behaelt alles im Memory, was schnell zu "Out of memory!"
fuehrt, dito Archive::Tar::Streamed, trotz gegenteiliger Dokumentation:

Archive::Tar::Streamed - Tar archives, non memory resident
(...)
Archive::Tar::Streamed provides a wrapper, which allows working with tar
archives on disk, with no need for the archive to be memory resident.


Beispiel:

framstag@diaspora:/tmp: ll Idiocracy.mpg
-rw-r--r-- framstag users 838303984 2010-12-13 16:16:35 Idiocracy.mpg

framstag@diaspora:/tmp: ./tar.pl tmp.tar Idiocracy.mpg
Out of memory!

framstag@diaspora:/tmp: cat tar.pl
#!/usr/bin/perl -w

use Archive::Tar::Streamed;

$usage = "$0 archive-name files...";

$name = shift or die $usage;
@files = @ARGV or die $usage;

open $tf,'>',$name or die $!;
$tar = Archive::Tar::Streamed->new($tf);
$tar->add(@files);


(POSIX) tar selber in Perl zu implementieren ist mir einen Tick zu
aufwaendig :-)

Andere Ideen?


Ullrich Horlacher Informationssysteme und Serverbetrieb
Rechenzentrum E-Mail: horlacher@rus.uni-stuttgart.de
Universitaet Stuttgart Tel: ++49-711-685-65868
Allmandring 30 Fax: ++49-711-682357
70550 Stuttgart (Germany) WWW: http://www.rus.uni-stuttgart.de/
 

Lesen sie die antworten

#1 Manuel Reimer
14/01/2011 - 07:59 | Warnen spam
Ulli Horlacher wrote:
Archive::Tar behaelt alles im Memory, was schnell zu "Out of memory!"
fuehrt, dito Archive::Tar::Streamed, trotz gegenteiliger Dokumentation:



Blick in den Sourcecode hilft:
<http://cpansearch.perl.org/src/IVOR...med.pm>

Hier wird Archive::Tar verwendet. Das Modul ist so übersichtlich, dass
ich dessen Sinn in Frage stelle. Ich würde einfach Archive::Tar nutzen
und die paar Kleinigkeiten selber programmieren.

Der Sourcecode von Archive::Tar làsst vermuten, dass dieses effizienter
arbeitet als Archive::Tar::Streamed. Hast du versucht direkt mit
Archive::Tar ein Archiv via "write" wegzuschreiben? Wenn ja: Wie weit
kommt dein Script, bis es sich aufhàngt?

Gruß

Manuel

"Alle Macht geht vom Volk aus - aber wo geht sie hin?" - Bertolt Brecht
Alle wollen zurück zur Natur - aber keiner zu Fuß
Beitràge mit *X-No-Html Header* kann ich weder lesen, noch beantworten!

Ähnliche fragen