我正在编写一个Perl脚本,在脚本的末尾,我想要将特定目录的所有内容(比如selected
)作为selected.tar
说明。
现在,我需要从另一个位置的另一个perl脚本解压selected.tar
到selected
目录。
这是我的绝对要求,我需要保留所有权限级别,而且应该在SECURE_EXTRACT_MODE
中完成。不可此。
总结请告诉我如何tar和解压缩目录的所有内容,包括文件和子目录。
在此背景下的任何帮助都非常感谢。
如果您需要更多详细信息,请与我们联系。
谢谢
答案 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;