He encontrado aquí en stackoveflow algunos códigos sobre cómo comprimir un archivo específico, pero ¿qué tal una carpeta específica?
Folder/
index.html
picture.jpg
important.txt
adentro adentro My Folder
, hay archivos. después de comprimir el My Folder
, también quiero eliminar todo el contenido de la carpeta, excepto important.txt
.
Encontré esto aquí en la pila
Necesito tu ayuda. Gracias.
Respuestas:
Código actualizado el 22/04/2015.
Comprime una carpeta completa:
Comprima una carpeta completa + elimine todos los archivos excepto "important.txt":
fuente
$zip->close()
no funcionará. Comprueba mi respuesta aquíHay un método indocumentado útil en la clase ZipArchive: addGlob ();
Ahora documentado en: www.php.net/manual/en/ziparchive.addglob.php
fuente
addGlob
recursivo?Prueba esto:
Sin embargo, esto no se comprimirá recursivamente.
fuente
My folder
, pero también tengo una carpeta dentro de una carpetaMy folder
que me da un error de: Permiso denegado al desvincular la carpeta con inMy folder
if (!is_dir($file) && $file != 'target_folder...')
lugar. O marque @kread answer si desea comprimir recursivamente, es la forma más eficiente.My folder
todavía no se elimina, pero de todos modos no hay más errores.$zip->close()
no funcionará. Comprueba mi respuesta aquíSupongo que esto se está ejecutando en un servidor donde la aplicación zip está en la ruta de búsqueda. Debería ser cierto para todos los servidores basados en Unix y supongo que la mayoría de los servidores basados en Windows.
El archivo residirá en archive.zip después. Tenga en cuenta que los espacios en blanco en los nombres de archivos o carpetas son una causa común de errores y deben evitarse siempre que sea posible.
fuente
Intenté con el código a continuación y está funcionando. El código se explica por sí mismo, avíseme si tiene alguna pregunta.
fuente
ini_set('memory_limit', '512M');
antes de la ejecución del script yini_restore('memory_limit');
al final. Era necesario evitar la falta de memoria en el caso de carpetas pesadas (era una carpeta de más de 500 MB).Esta es una función que comprime una carpeta completa y su contenido en un archivo zip y puede usarlo de la siguiente manera:
función:
fuente
¿Por qué no probar EFS PhP-ZiP MultiVolume Script ? Comprimí y transferí cientos de conciertos y millones de archivos ... ssh es necesario para crear archivos de manera efectiva.
Pero creo que los archivos resultantes se pueden usar con exec directamente desde php:
No sé si funciona. No lo he probado ...
"el secreto" es que el tiempo de ejecución para el archivo no debe exceder el tiempo permitido para la ejecución del código PHP.
fuente
Este es un ejemplo de trabajo de hacer ZIP en PHP:
fuente
Encontré esta publicación en Google como el segundo resultado principal, primero estaba usando exec :(
De todos modos, aunque esto no satisfizo mis necesidades exactamente ... Decidí publicar una respuesta para otros con mi versión rápida pero extendida de esto.
CARACTERÍSTICAS DE LA ESCRITURA
De todos modos, en el script ... Si bien puede parecer mucho ... Recuerde que hay un exceso aquí ... Así que siéntase libre de eliminar las secciones de informes según sea necesario ...
También puede parecer desordenado y ciertas cosas podrían limpiarse fácilmente ... Así que no comente al respecto, es solo un guión rápido con comentarios básicos incluidos ... NO PARA USO EN VIVO ... Pero fácil de limpiar para uso en vivo !
En este ejemplo, se ejecuta desde un directorio que está dentro de la carpeta raíz www / public_html. Por lo tanto, solo necesita subir una carpeta para llegar a la raíz.
¿¿QUÉ HACE??
Simplemente comprimirá el contenido completo de la variable $ pathBase y almacenará el zip en esa misma carpeta. Realiza una detección simple de copias de seguridad anteriores y las omite.
CRON BACKUP
Esta secuencia de comandos que acabo de probar en Linux y funcionó bien desde un trabajo cron con el uso de una URL absoluta para el pathBase.
fuente
Utiliza esta función:
Ejemplo de uso:
fuente
Use esto está funcionando bien.
fuente
Crea una carpeta zip en PHP.
Método de creación de zip
Llama al método zip
fuente
Hice alguna pequeña mejora en el guión.
fuente
Esto resolverá tu problema. Por favor pruebalo.
fuente
Para cualquiera que lea esta publicación y busque un por qué comprimir los archivos usando addFile en lugar de addFromString, eso no comprime los archivos con su ruta absoluta (simplemente comprime los archivos y nada más), vea mi pregunta y respuesta aquí
fuente