use POSIX; use File::Copy; use strict; my $serverdir="/kode/perlstuff/test/"; # function for copying all files and directories recursivly with new read only permissions sub copyrecursivly{ my $p_source=shift; my $p_destination=shift; if (-d $p_source){ mkdir $p_destination,"0755"; opendir(datadir,$p_source); foreach my $tempvalue (grep {!/^\./} readdir(datadir)){ copyrecursivly($p_source . "/" . $tempvalue,$p_destination . "/" . $tempvalue); } closedir(datadir); }else{ copy($p_source, $p_destination); } } # Check that the BACKUP/ directory is present, otherwise create it if (!opendir(backupdir,$serverdir . "BACKUP/")){ mkdir $serverdir . "BACKUP/" , "0755"; opendir(backupdir,$serverdir . "BACKUP/") or die "could not create backup directory!"; } closedir(backupdir); # Open the server directory, and create the backup destination directory opendir(datadir,$serverdir) or die "could not open server directory!"; my $destinationdir=$serverdir . "BACKUP/dailyimage_" . POSIX::strftime "%Y-%d-%m", localtime; mkdir $destinationdir; # Copy all files from source to destination foreach my $tempvalue (grep {!/^\.|[BACKUP]/ } readdir (datadir)){ copyrecursivly($serverdir . $tempvalue,$destinationdir . "/" . $tempvalue); } closedir(datadir);