Con el siguiente codigo podréis
comprimir un directorio y todo su contenido mediante PHP. Lo primero que debemos hacer es crear y abrimos un archivo zip, que se hará de la siguiente manera:
//Creamos el archivo
$zip = new ZipArchive();
if ($zip->open("nombre.zip", ZIPARCHIVE::CREATE)==TRUE) {
//Si lo abre, es porque no existe ningun zip con ese nombre
//Llamámos a la función para comprimir
comprimirDirectorio($directorio, $zip);
//Cerramos el archivo
$zip -> close;
}
A continuación, explicaré que es lo que hace la funcion comprimirDirectorio($directorio, $zip):
//A la función le pasamos como parametro el directorio y el archivo zip
function comprimirDirectorio($dir, $zip) {
//Primero comprabamos que sea un directorio
if (is_dir($dir)){
//Por cada elemento dentro del directorio
foreach (scandir($dir) as $item) {
//Evitamos la carpeta actual y la anterior
if ($item == '.' || $item == '..') continue;
//Si encuentra una que no sea las anteriores,
//vuelve a llamar a la función, con un nuevo directorio
comprimirDirectorio($dir . "/" . $item, $zip);
}
}else{
//En el caso de que sea un archivo, lo añade al zip
$zip->addFile($dir);
}
}
Con esto deberíamos tener bastante para comprimirlos. Recordad que el archivo zip, se guardará en el directorio raiz del $directorio que le indiquéis a la hora de comprobar si se puede abrir.
12 comentarios:
quisiera usarlo para hacer una copia de seguridad como lo ejecuto o que debo hacer
Buenas junior,
Pues lo que deberías hacer es crearte un código tu mismo (copiando el que te muestro arriba) y indicarle la ruta principal en el primer parámetro de la función.
Si sigues teniendo problemas vuelve a comentar y profundizamos más en el tema.
Gracias por visitar el blog.
¡Saludos!
GRacias!!! me sirvio mucho el codigo.
Me alegro! Muchas gracias por visitar el blog!
Hola Javier,
Muy buenas lineas de código, solo tengo una duda, donde esta la LIB (ZipArchive.php) ??
Un saludo!
Hola Cess,
Con este código ya debería funcionar si no te funciona haz lo siguiente:
Para la versión 4, la librería ZZIPlib 0.10.6 o más nueva.
Para la versión 5.2.0 o posterior, la librería zlib
Gracias por visitar el blog.
buenas, de verdad que tu código esta muy bueno y me funciona bien hasta hoy que necesito hacerle backup a una carpeta que tiene como 16mil archivos y pesa casi 18G, sabes como lo puedo resolver? Gracias de antemano
Para carpetas/archivos tan grandes te aconsejo que utilices un programa especifico para backups como Cobian Backup.
Gracias a ti!
Pues si, es una gran herramienta, pero bueno la idea es poder hacerlo con php para llevar un mejor control, o por lo menos así lo veo yo.. de igual manera creo que lo voy a usar por ahora con el Cobian hasta que encuentre la solución... thanks amigo..!
Gracias!
Gracias a ti por visitar el blog!
muy efectivo.. Gracias
Publicar un comentario