我想用Perl和Archive::Rar
填充整个文件夹。例如文件夹/root/pictures
。
我发现只有rar单个文件的方法。
我试图找到文件夹中的所有文件并对它们进行rar,但后来我总是在rar存档中将完整路径粘贴到它们(/root/pictures
)。
我只想要/pictures
文件夹及其内容。这可能吗?
答案 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文件名的路径。