my $cmd = "cd $olddirectory; tar -cvf - " . join(' ',@files) . " | gzip -c -1 | (cd $newdirectory; gzip -c -d | tar -xvf -)"; system ($cmd); Using gzip -9 : 64 seconds Using gzip -1 : 57 seconds Without gzips : 52 seconds