0

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

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

这是我的绝对要求,我需要保留所有权限级别,并且 untar 应该在SECURE_EXTRACT_MODE.

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

高度赞赏在这种情况下的任何帮助。

如果您需要更多详细信息,请告诉我。

谢谢

4

1 回答 1

1

要做到这一点而不需要花费tar你将需要 Archive::Tar::StreamedFile::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;
于 2013-02-20T11:57:27.530 回答