Re: Archive::Tar
Most of the replies have focused on how to do this with external calls to tar or cpio, without actually addressing the original writer's problem, how to do it with Archive::Tar. The first respondent noted that Archive::Tar doesn't do wildcarding. Or, as it is called in the Perl docs, globbing. What you need to do is create the file list yourself, and pass it to the call. There are a variety of ways you can do this: you can use the File::Find module to build up a list of files, or since you seem to be concerned with just the one directory you can use Perl's built-in globbing functionality with <*> (or with glob(), if you prefer). Look to the perlop manpage (under I/O Operators) for the <*> syntax, or perlfunc for glob(). Randy -- --- Randy J. Ray | Men occasionally stumble over the truth, but most of them [EMAIL PROTECTED] | pick themselves up and hurry off as if nothing had happened. +1 650 930-9097 | -- Sir Winston Churchill
Re: Archive::Tar
-- "Anthony E." <[EMAIL PROTECTED]> >> How can I get this to tar the entire backup >> directory? And if I wanted to >> say pic out all file based on extensions later on >> like .pl *.pl how to do >> that as well with this? gnu cpio will write tar: find $dir | cpio -ov -Htar | gzip --best > /blah/$dir.tar.gz; or find $dir -name '*.pl' | cpio -ov -Htar | gzip ... the -Hcrc puts a 32-bit crc on the files for better error checking, etc: find $dir -name '*.pl' | cpio -ov -Hcrc | gzip ... Nice thing about cpio vs. tar for this is that if tar fails to write it can exit zero after successfully telling you that it failed; cpio croaks and exits non-zero immediatly if it detects an error on writing or extract. -- Steven Lembark 2930 W. Palmer Workhorse Computing Chicago, IL 60647 +1 800 762 1582
Re: Archive::Tar
not sure about Archive::Tar...but here's the command line, you can call this in your perl script. "tar czf ./test.tar.gz ./backups --files-from ./include.txt" If you wanted to include only *.pl, just put "*.pl" in your include.txt file. (same goes for exclusion, use --exlude-from instead) --- [EMAIL PROTECTED] wrote: > > Hello, > > I am trying to use the following program to archive > directories of large > files but I can not get any wildcard combination to > work: > > #!/usr/bin/perl > use Archive::Tar; > > Archive::Tar->create_archive ("test.tar", 9, > "backup/*.*"); > print join "\n", Archive::Tar->list_archive > ("test.tar"), ""; > > How can I get this to tar the entire backup > directory? And if I wanted to > say pic out all file based on extensions later on > like .pl *.pl how to do > that as well with this? > > Thanks, > John > __ Yahoo! - We Remember 9-11: A tribute to the more than 3,000 lives lost http://dir.remember.yahoo.com/tribute
Re: Archive::Tar
Waay offtopic. But here goes: On Wednesday, 2002-09-11 at 04:06:20 -0500, [EMAIL PROTECTED] wrote: > I am trying to use the following program to archive directories of large > files but I can not get any wildcard combination to work: Archive::Tar does not do Wildcards. > #!/usr/bin/perl > use Archive::Tar; > Archive::Tar->create_archive ("test.tar", 9, "backup/*.*"); >From perldoc Archive::Tar: The remaining arguments list the files to be included in the tar file. These files must all exist. Any files which don\'t exist or can\'t be read are silently ignored. I.e. You would add a file *named* "backup/*.*". > How can I get this to tar the entire backup directory? And if I wanted to > say pic out all file based on extensions later on like .pl *.pl how to do > that as well with this? Combine this with File::Find: my $tar = Archive::Tar->new(); find({ wanted => \&wanted, no_chdir => 1}, "backup"); $tar->write("test.tar.gz", 9); sub wanted { return unless /\.pl$/ and -f $_; # Only files named *.pl print "Adding $_\n"; $tar->add_files($_); You could use glob() to expand "*.*", but you still wouldn't get any recursion into subdirecties. With File::Find you can use any test you like. Note that $_ contains the file*path* starting at "backup" with the no_chdir option. This differs from normal behaviour (i.e. with no_chdir unset). HTH, Lupe Christoph -- | [EMAIL PROTECTED] | http://www.lupe-christoph.de/ | | Big Misunderstandings #6398: The Titanic was not supposed to be| | unsinkable. The designer had a speech impediment. He said: "I have | | thith great unthinkable conthept ..." |