Buenas hoy estaba escuchando musica y luego un amigo (NoVaTo) me hablo por Skype diciendome que si tenia algun script o shell que comprimiera toda la pagina web para bajarsela, entonces como no tenia me puse a buscar como hacerlo uno a mi manera... hasta que al final di con bola... pues nada mas les dejo el script par aque lo usen cuando quieran:
<?php
// Si son demasiados archivos colocamos el tiempo limite en 0 (sin limite)
set_time_limit(0);
/*
@autor : Arthusu
@fecha : 15/03/2015
@descripcion : Compresor de todos los archivos del directorio
@archivo : compresor.php
*/
// definimos las variables (las podemos modificar segun sea nuestro caso)
$nombre_del_archivo_comprimido = "comprimido.zip"; // el nombre del archivo a generar
$ruta_relativa = ""; // el directorio que nos encontremos. Ejemplo: images/algo/ para generar un link correcto
if(phpversion() >= "5.2.0"){ // verificamos que contengan la version correcta para crear archivos zip
$zip = new ZipArchive(); // Creamos un nuevo objeto
if($zip->open($nombre_del_archivo_comprimido,ZIPARCHIVE::CREATE) === TRUE){ // creamos un archivo
$iterator = new RecursiveDirectoryIterator(__DIR__); // recorremos el directorio
$recursiveIterator = new RecursiveIteratorIterator($iterator); // recorremos los directorios dentro de otros directorios y asi sucesivamente
foreach($recursiveIterator as $entry){ // recorremos los archivos
if(is_file($entry->getRealPath())){ // verificamos que sea archivo
// debug
//echo $entry->getRealPath()."\n";
$zip->addFile($entry->getRealPath()); // lo agregamos al zip
}
}
// mostramos un enlace con los archivos
echo $zip->numFiles .' archivos comprimidos: <a href="http://'.strip_tags($_SERVER["HTTP_HOST"]. "/" . $ruta_relativa . $nombre_del_archivo_comprimido).'">Descargar Archivo</a>';
}else{
// si no se crea el archivo mostramos el error
echo "Ha ocurrido un error: ".$zip->getStatusString();
}
// cerramos el archivo zip
$zip->close();
}else{
// si la version no es correcta mostramos un mensaje
echo "Su version de PHP debe ser 5.2.0 o superior";
}
?>
El uso es bastante facil.
1.- Subir el archivo a la carpeta que quieras comprimir
2.- Ejecutar el archivo en la url: ejemplo.com/compresor.php
3.- Te generara un link donde descargar el archivo
Hay dos variables que puedes modificar dentro del archivo:
$ruta_relativa - Esta variable la modificas en caso de que te encuentres en una ruta relativa en alguna carpeta de la web, ejemplo: jquery/imagenes/, con eso nos generaria un link como el siguiente: ejemplo.com/jquery/imagenes/comprimido.zip
$nombre_del_archivo_comprimido - Aqui puedes especificar el nombre del archivo resultante
Nota: Otra cosa a tomar en cuenta es que el script tarda dependiendo de que tantos archivos tenga que guardar o recorrer, puede tardar varios minutos dependiendo de que tantos archivos contenga tu sitio.
Y bueno eso es todo espero que la herramienta les sea de utilidad.
Muchas gracias por el Script, nunca es malo tener algo así a la mano especialmente cuando se trabaja con algun CMS.
Saludos!
Primero muchas gracias por el aporte.
Funciona muy bien el script, mi pregunta es si cuando lo guardamos en el zip comprimido puedo guardar los directorios y archivos de las carpetas que le indique y no que me guarde toda la ruta absoluta. Por ejemplo si quiero comprimir la carpeta /images/* que en el zip me aparezca esa carpeta y su contenido y no toda la ruta relativa :C:\..\...\..\images\*
Gracias.