我正在遍历一个目录树(subversion备份),并将我找到的每个文件和目录添加到一个zip文件中。这工作很漂亮。但是有两个文件丢失。Perl档案:: zip - 文件没有得到添加
sub zipFolder
{
my $dir = 'D:\\SVN-Backup\\EnterpriseDataRepository\\20110502-0630';
my $zip = Archive::Zip->new();
my $zipped = $zip->addDirectory($dir);
$zipped->desiredCompressionLevel(9);
$zipped->desiredCompressionMethod(COMPRESSION_DEFLATED);
print "Before find\n";
find(\&zip_file, $dir);
print "after find\n";
die 'write error' unless $zip->writeToFileNamed('D:/SVN-Backup/CCBuild/backup.zip') == AZ_OK;
sub zip_file
{
print $File::Find::name;
if (-d $File::Find::name) { # just grab directories, not files.
$zip->addDirectory($File::Find::name);
print " : dir\n";
} else { #zip files
print " : file\n";
$zip->addFile($File::Find::name) != AZ_OK || print "couldn't add file \n";
}
}
}
文件d:\ SVN-备份\ 20110502-0630 /分贝/的revprops/0/0将不被添加到zip存档。任何想法我能做些什么来添加这个文件?
...
D:\SVN-Backup\20110502-0630/db/uuid : file
D:\SVN-Backup\20110502-0630/db/revprops : dir
D:\SVN-Backup\20110502-0630/db/revprops/0 : dir
D:\SVN-Backup\20110502-0630/db/revprops/0/0 : file
D:\SVN-Backup\20110502-0630/db/revprops/0/1 : file
D:\SVN-Backup\20110502-0630/db/revprops/0/10 : file
...
祝贺安迪他的贡献。他解决了这个问题。
一个相关的错误: rt.cpan.org/Public/Bug/Display.html?id=27463, 但这只是关于文件,而不是 目录。你有什么版本的 Archive :: Zip?
我有perl 5.8.8这看起来比修复更老。
一个相关的错误:http://rt.cpan.org/Public/Bug/Display.html?id=27463,但这只是关于文件,而不是目录。你有什么版本的Archive :: Zip?此外,你正在混合/和\路径分隔符,我不知道这是否会导致问题。另一个想法是 – Andy 2011-05-03 22:31:17
。如果在File :: Find:Rule中禁用chdir,它会更好吗?即使用:find({wanted => \&zip_file,no_chdir => 1},$ dir); – dwarring 2011-05-04 02:37:24
@Andy:如果你把你的评论作为答案,我甚至可以给你信用额外的积分。 – 2011-05-04 18:57:17