Ciao, se il problema sta solo nel tipo di file che non vuoi scaricare puoi aggiungere semplicemente un controllo sul nome del file nel ciclo.
codice:
foreach ($contents as $file) {
   if(substr($file, -3) != '.gz') continue;

   //...resto del codice
}
In questo modo se il nome del file non finisce per .gz il ciclo salta al passaggio successivo.
Si può scrivere meglio o con più controlli a seconda di cosa ritorna la lista (che non vedo) ma già così potresti risolvere