Perl:如何tar和解压缩包含文件和子目录的目录的所有内容

时间:2013-02-20 11:03:10

标签: perl

我正在编写一个Perl脚本,在脚本的末尾,我想要将特定目录的所有内容(比如selected)作为selected.tar说明。

现在,我需要从另一个位置的另一个perl脚本解压selected.tarselected目录。

这是我的绝对要求,我需要保留所有权限级别,而且应该在SECURE_EXTRACT_MODE中完成。不可此。

总结请告诉我如何tar和解压缩目录的所有内容,包括文件和子目录。

在此背景下的任何帮助都非常感谢。

如果您需要更多详细信息,请与我们联系。

谢谢

1 个答案:

答案 0 :(得分:1)

要在不tar的情况下执行此操作,您需要使用 Archive::Tar::Streamed 和...一起 File::Find。此外,每个文件必须足够小,才能完整地读入perl进程内存。

这样的事情应该做你想做的事。

use strict;
use warnings;
use autodie;

use File::Find 'find';
use Archive::Tar::Streamed;

open my $fh, '>:raw', 'selected.tar';
my $tar = Archive::Tar::Streamed->new($fh);

find(sub { $tar->add($File::Find::name) }, '/path/to/selected');

close $fh;