Perl Rar整个文件夹

时间:2013-01-19 16:39:58

标签: perl directory rar

我想用Perl和Archive::Rar填充整个文件夹。例如文件夹/root/pictures

我发现只有rar单个文件的方法。

我试图找到文件夹中的所有文件并对它们进行rar,但后来我总是在rar存档中将完整路径粘贴到它们(/root/pictures)。

我只想要/pictures文件夹及其内容。这可能吗?

2 个答案:

答案 0 :(得分:0)

首先,您必须从定义的目录中获取文件列表:

use File::Find;

my @content;
find( \&wanted, '/some/path');

sub wanted {
  push @content, $File::Find::name;
  return;
}

之后你可以使用Archive :: Rar打包它。

use Archive::Rar;
my $rar = Archive::Rar->new();
$rar->Add(
       -size => $size_of_parts,
       -archive => $archive_filename,
       -files => \@content,
);

答案 1 :(得分:0)

存档中存储的文件的文件夹结构与传递给Add方法的文件名相同。 (尽管您可以使用-excludepaths选项添加它们而不包含任何包含文件夹。)

如果您在将文件添加到存档之前chdir\root目录,并将所有文件指定为pictures\file1.jpg等,那么结果应该是您想要的。

像这样的东西

use strict;
use warnings;

use Archive::Rar;

use autodie;

chdir '\root';

my $rar = Archive::Rar->new(-archive => 'pictures.rar');

$rar->Add(-files => [ glob 'pictures\*' ]);

如果您希望将存档存储在其他地方,显然您可以添加rar文件名的路径。