#!/usr/bin/perl use strict; use warnings; use 5.010; use Archive::Zip qw(:ERROR_CODES :CONSTANTS); if ($^O =~ /mswin/i) { $Archive::Zip::UNICODE = 1; } my $add_verzeichnisse = 0; # 0=selbst iterieren 1=->addTree() verwenden my @verzeichnisse = ('/webserver/homepage1/verz2','/webserver/homepage1/verz4'); my $zip = Archive::Zip->new(); while (scalar @verzeichnisse) { my $verz = shift @verzeichnisse; if ($add_verzeichnisse) { $zip->addTree($verz,substr($verz,1),undef,COMPRESSION_LEVEL_BEST_COMPRESSION); } else { if (opendir(my $fh,$verz)) { foreach my $file (readdir $fh) { next if $file eq '.' || $file eq '..'; if (-d "$verz/$file") { push @verzeichnisse,"$verz/$file"; say "neues Verzeichnis '$verz/$file'"; } else { if (open(my $t,'<',"$verz/$file")) { close($t); my $file_member = $zip->addFile({ filename => "$verz/$file", compressionLevel => COMPRESSION_LEVEL_BEST_COMPRESSION, }); say "adde '$verz/$file'"; } else { say "$verz/$file nicht lesbar" } } } } } } if ($zip->writeToFileNamed("/webserver/homepage1/zipziel/zip.zip") != AZ_OK) { die "Kann ZIP '/webserver/homepage1/zipziel' nicht schreiben"; }