//Obtiene el directorio de donde se guardan los ficheros temporales configurado en php.
$tempDir = sys_get_temp_dir();
//Genera un fichero en el directorio temporal del sistema con el prefijo "tar_" y extensión "tar"
$tempTar = tempnam($tempDir, 'tar_') . '.tar';
// Nombre del archivo a comprimir
$file = 'pruebas.yaml';
// Nombre del archivo tar.gz
$outputFile = 'pruebas.tar.gz';
// Crea el archivo tar
$tar = new PharData($tempTar);
// Agrega el archivo al tar
$tar->addFile($file, basename($file));
// Comprime el archivo tar a .tar.gz
$compressedFile = $tempTar . '.gz';
$tar->compress(Phar::GZ);
// El archivo comprimido se crea con el nombre $tempTar . '.tar.gz'
if (rename($compressedFile, $outputFile)) {
echo "Archivo $outputFile creado exitosamente.\n";
// Eliminar el archivo tar temporal
unlink($tempTar);
} else {
echo "Error al mover el archivo comprimido.\n";
return false;
}
NOTA: Este es un ejemplo básico. Se pueden añadir varios archivos simplemente es indicar el directorio y recorrerlo. No he hehco ninguna clase ni ninguna comprobación para hacer el ejemplo más sencillo.