Schrift
[thread]6106[/thread]

Verzeichnisse TARen in PERL



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
pacey
 2004-03-01 10:35
#80430 #80430
User since
2004-03-01
23 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallöchen,

Ich hab hier ein Problem,
Ich versuche für meine Firma, ein PERL Script zu entwickeln das Dateien und Ordner in diverse Archivformate packt.
Zip ist soweit kein Problem, aber mit TAR habe ich so meine Probleme, zumindest wenn ich versuche komplette Ordner zu packen, hat das jemand von euch schon gemacht ?

würde mich über eine Antwort freuen!

TIA
Gruss pacey


[/code]\n\n

<!--EDIT|pacey|1078130768-->
Quote
If You don't know what it does, why do you put it in your code

Code: ()
1
2
3
print +(a=>b=>c=>d=>e=>f=>g=>h=>i=>j=>k=>l=>m=>n=>o=>p=>q=>r=>s=>t=>u=>v=>w=>x=>y=>z=>" ")

[9=>20=>18=>19=>-1=>0=>13=>14=>19=>7=>4=>17=>-1=>15=>4=>17=>11=>-1=>7=>0=>2=>10=>4=>17];
Ronnie
 2004-03-01 10:49
#80431 #80431
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Ohne Perl sollte es zumindest so gehen:
Code: (dl )
tar -cvf archiv.tar /home/user

Willst du es als system-Aufruf machen oder per Perl-Modul?
pacey
 2004-03-01 10:53
#80432 #80432
User since
2004-03-01
23 Artikel
BenutzerIn
[Homepage] [default_avatar]
am liebstern per Modul, weil das Script nach möglichkeit auch unter Windows laufen sollte.

Gruss
pacey
Quote
If You don't know what it does, why do you put it in your code

Code: ()
1
2
3
print +(a=>b=>c=>d=>e=>f=>g=>h=>i=>j=>k=>l=>m=>n=>o=>p=>q=>r=>s=>t=>u=>v=>w=>x=>y=>z=>" ")

[9=>20=>18=>19=>-1=>0=>13=>14=>19=>7=>4=>17=>-1=>15=>4=>17=>11=>-1=>7=>0=>2=>10=>4=>17];
pacey
 2004-03-01 10:59
#80433 #80433
User since
2004-03-01
23 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hier mal mein Code bisher:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sub use_tar_dirs {
print "=> Using TAR Compression Method\n";
print "=> Compressing Directories\n";
my $tar = Archive::Tar->new;
my $dirs = $_[0];
my @dirs = s2a($dirs);
my $dir = $_[2];
my $tarname = $_[1];
unlink($tarname);
$tar->add_files( './'.$dir.'/'.@dirs );
$tar->write($tarname.'.tar');
}
sub s2a {
my $s = $_[0];
my @a = split(/,/, $s);
return(@a);
}


Gruss pacey\n\n

<!--EDIT|pacey|1078131833-->
Quote
If You don't know what it does, why do you put it in your code

Code: ()
1
2
3
print +(a=>b=>c=>d=>e=>f=>g=>h=>i=>j=>k=>l=>m=>n=>o=>p=>q=>r=>s=>t=>u=>v=>w=>x=>y=>z=>" ")

[9=>20=>18=>19=>-1=>0=>13=>14=>19=>7=>4=>17=>-1=>15=>4=>17=>11=>-1=>7=>0=>2=>10=>4=>17];
kabel
 2004-03-01 12:11
#80434 #80434
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
[quote=pacey,01.03.2004, 09:59]
Code: (dl )
1
2
3
sub use_tar_dirs {
print "=> Using TAR Compression Method\n";
print "=> Compressing Directories\n";
[/quote]
tar dient (ursprünglich) nicht der komprimierung, sondern nur der archivierung.
komprimierung muss (in der shell) manuell angegeben werden, standardmässig wird nur ein archiv erzeugt.
-- stefan
pacey
 2004-03-01 12:26
#80435 #80435
User since
2004-03-01
23 Artikel
BenutzerIn
[Homepage] [default_avatar]
Jetzt lass mir doch meinen Output :)

Ich weiss selber das tar (von tarball: Wollknäul) nicht zum komprimieren gedacht ist.aber das ist ja net das problem sondern wie ich auch Ordner da reinkriege!

Ne Routine zum gzippen der tars gibts ja auch, aber die ist in soweit net relevant weil sie ja schon funktioniert.

Gruss pacey
Quote
If You don't know what it does, why do you put it in your code

Code: ()
1
2
3
print +(a=>b=>c=>d=>e=>f=>g=>h=>i=>j=>k=>l=>m=>n=>o=>p=>q=>r=>s=>t=>u=>v=>w=>x=>y=>z=>" ")

[9=>20=>18=>19=>-1=>0=>13=>14=>19=>7=>4=>17=>-1=>15=>4=>17=>11=>-1=>7=>0=>2=>10=>4=>17];
Taulmarill
 2004-03-01 14:00
#80436 #80436
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
hi,
schau dir mal Archive::Tar an.
das is soweit ich das sehen kann pure perl und sollte somit ohne probleme auf Win32 laufen.
aber warnung! dadurch, dass es pure perl is, ist es langsamer als das tar kommando unter unix/linux.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Heromaster
 2004-03-01 15:16
#80437 #80437
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Probiers mal so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use File::Find;
use Archive::Tar;

my @files;

sub use_tar_dirs {
print "=> Using TAR Compression Method\n";
print "=> Compressing Directories\n";
my $tar = Archive::Tar->new;
my $dirs = $_[0];
my @dirs = s2a($dirs);

foreach(@dirs) {
find(\&addfile, $_);
}

$tar->add_files( @files);
$tar->write($tarname.'.tar');
}
sub s2a {
my $s = $_[0];
my @a = split(/,/, $s);
return(@a);
}

sub addfile { push @files, $File::Find::name; }


@Taumarill: Wer lesen kann, ist klar im Vorteil ;)
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
esskar
 2004-03-01 15:35
#80438 #80438
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
letztens hatte ich sogar tar.exe für win32 gefunden...
[E|B]
 2004-03-01 17:14
#80439 #80439
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=kabel,01.03.2004, 11:11]tar dient (ursprünglich) nicht der komprimierung, sondern nur der archivierung.[/quote]
Wieso ursprünglich? Heute doch auch nicht, oder hab ich da was vergessen?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2004-03-01 10:35.