Tar on Windows XP

D

David Walker

Hi

I am trying to create a tar archive on Windows XP with the Perl code below.
However, when I look at the archive created (using WinZip 10.0) all the
directory information is lost, and when I untar it using WinZip all I get is
all the files in the same directory. Can some kind person please tell me how
I can create the tar file so that when it is untar'd the directory
structure will be preserved.

Thanks
David

use Archive::Tar;
use IO::Zlib;
use File::Find;

$dir = "c:/docume~1/david/somedir";
$archive = "c:/docume~1/david/archive.tar";
$tar = Archive::Tar->new;

(@files);
find(\&wanted, $dir);
$tar->add_files(@files);
$tar->write($archive);

sub wanted{
push(@files,$File::Find::name);
}
 
S

Sisyphus

David Walker said:
Hi

I am trying to create a tar archive on Windows XP with the Perl code
below. However, when I look at the archive created (using WinZip 10.0) all
the directory information is lost, and when I untar it using WinZip all I
get is all the files in the same directory. Can some kind person please
tell me how I can create the tar file so that when it is untar'd the
directory structure will be preserved.

From the "FAQ" section in 'perldoc Archive::Tar' :

-- quote --
I'm using WinZip, or some other non-POSIX client, and files are not
being extracted properly!
By default, "Archive::Tar" is in a completely POSIX-compatible mode,
which uses the POSIX-specification of "tar" to store files. For
paths greather than 100 characters, this is done using the "POSIX
header prefix". Non-POSIX-compatible clients may not support this
part of the specification, and may only support the "GNU Extended
Header" functionality. To facilitate those clients, you can set the
$Archive::Tar::DO_NOT_USE_PREFIX variable to "true". See the "GLOBAL
VARIABLES" section for details on this variable.
-- end quote --

Hopefully, that deals with the problem you're facing. (If not, let us know -
and also tell us which version of Archive::Tar you have.).)

Cheers,
Rob
 
D

David Walker

Rob

Yes that worked! I was using Tar 1.07, which didn't have the
DO_NOT_USE_PREFIX feature, so I've now installed Tar 1.30.

Thanks for your help.

David
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,135
Latest member
VeronaShap
Top