我想归档一个目录(我不知道我是否可以调用"我想tar目录").当我取消tar时,我想在另一端保留访问权限.我应该在perl中解决这个问题.
感谢您的回复,但为什么我要求这样做Perl是我希望它独立于平台.我想将一个大文件传输到多台机器.这些机器可以是任何平台.我应该能够正确解开这个tar文件吗?所以我想编写自己的tar和untar程序.为什么我使用Perl是为了使它与平台无关.所以我不能通过在脚本中打开shell来使用tar命令.该档案::焦油模块只用打包的文件涉及,但它别无选择存档文件.
这是一个简单的例子:
#!/usr/bin/perl -w use strict; use warnings 'all'; use Archive::Tar; # Create a new tar object: my $tar = Archive::Tar->new(); # Add some files: $tar->add_files( ); # */ fix syntax highlighing in stackoverflow.com # Finished: $tar->write( 'file.tar' ); # Now extract: my $tar = Archive::Tar->new(); $tar->read( 'file.tar' ); $tar->extract();
您可能希望在CPAN上查看Archive :: Tar.(我只是猜测,我自己从未使用它.)为什么你坚持用Perl做它?
两个参数; 压缩的tar文件的名称以及tar文件中所需的目录名称.例如
tarcvf test.tar.gz mydir
#!/usr/bin/perl -w use strict; use warnings 'all'; use Archive::Tar; use File::Find; my $archive=$ARGV[0]; my $dir=$ARGV[1]; if ($#ARGV != 1) { print "usage: tarcvf test.tar.gz directory\n"; exit; } # Create inventory of files & directories my @inventory = (); find (sub { push @inventory, $File::Find::name }, $dir); # Create a new tar object my $tar = Archive::Tar->new(); $tar->add_files( @inventory ); # Write compressed tar file $tar->write( $archive, 9 );