Yes I know :-) and I am looking for the way to achieve it. So far I coded like below:
my @childs;
my @allfolders => List of all folders
for ( my $i=0; $i<@allFolders; $i+=5 ) {
my @sourceFolders = @allFolders[$i..$i+4];
foreach my $folders ( @sourceFolders ) {
my $pid = fork();
if ( $pid ) {
# parent
push(@childs, $pid);
} elsif ($pid == 0) {
EXECUTe RSYNC HERE....
} else {
print "Error: Cannot fork process : $! \n",1);
}
}
foreach ( @childs ) {
waitpid($_, 0);
}
}
The problem here is that it executes rsync for 5 folders at a time and wait until all of them finishes. BUT, I want to start rsync for 6th folder immediately after 1 of 5 rsync is completed. |