una subir servidor para guardarlos guardar especifica ejemplo crear con comprimir codigo carpeta archivos archivo php compression backup
biblioteca Zip

subir - Comprimiendo un directorio de archivos con PHP



subir archivos php ejemplo (6)

Estoy creando un script de copia de seguridad de PHP que descargará todo de una base de datos y lo guardará en un archivo. He tenido éxito al hacer eso, pero ahora necesito tomar cientos de imágenes en un directorio y comprimirlas en un simple archivo .tar.gz.

¿Cuál es la mejor manera de hacer esto y cómo se hace? No tengo idea de por dónde empezar.

Gracias por adelantado


La respuesta elegida no admite la recursión (subdirectorios), así que aquí tienes:

<? ignore_user_abort(true); set_time_limit(3600); $main_path = ''folder2zip''; $zip_file = ''zipped.zip''; if (file_exists($main_path) && is_dir($main_path)) { $zip = new ZipArchive(); if (file_exists($zip_file)) { unlink($zip_file); // truncate ZIP } if ($zip->open($zip_file, ZIPARCHIVE::CREATE)!==TRUE) { die("cannot open <$zip_file>/n"); } $files = 0; $paths = array($main_path); while (list(, $path) = each($paths)) { foreach (glob($path.''/*'') as $p) { if (is_dir($p)) { $paths[] = $p; } else { $zip->addFile($p); $files++; echo $p."<br>/n"; } } } echo ''Total files: ''.$files; $zip->close(); }


Mi simple archivo PHP de 2 líneas mediante el cual puedo crear un archivo ZIP de respaldo en unos pocos segundos:

Simplemente navegue: http://mysiteurl.com/create-my-zip.php

<?php /* PHP FILE NAME: create-my-zip.php */ echo exec(''tar zcf my-backup.tar.gz mydirectory/*''); echo ''...Done...''; ?>

Simplemente cargue este archivo en el servidor y navegue directamente.

Notas:

  • ''mydirectory'' ==> directorio de destino relacionado con este script PHP;
  • ''my-backup.tar.gz'' ==> se creará en el mismo directorio donde se carga este archivo PHP;

Puede fácilmente gzip una carpeta usando este comando:

tar -cvzpf backup.tar.gz /path/to/folder

Este comando se puede ejecutar a través de phps system () - function.

No te olvides de escapeshellarg () todos los comandos.


Si está utilizando PHP 5.2 o posterior, puede usar la biblioteca Zip

y luego hacer algo en la línea de:

$images_dir = ''/path/to/images''; //this folder must be writeable by the server $backup = ''/path/to/backup''; $zip_file = $backup.''/backup.zip''; if ($handle = opendir($images_dir)) { $zip = new ZipArchive(); if ($zip->open($zip_file, ZipArchive::CREATE)!==TRUE) { exit("cannot open <$zip_file>/n"); } while (false !== ($file = readdir($handle))) { $zip->addFile($images_dir.''/''.$file); echo "$file/n"; } closedir($handle); echo "numfiles: " . $zip->numFiles . "/n"; echo "status:" . $zip->status . "/n"; $zip->close(); echo ''Zip File:''.$zip_file . "/n"; }


También puedes usar algo como esto:

exec(''tar -czf backup.tar.gz /path/to/dir-to-be-backed-up/'');

Asegúrese de prestar atención a las advertencias sobre el uso de la función exec() PHP.


$archive_name = ''path/to/archive/arch1.tar''; $dir_path = ''path/to/dir''; $archive = new PharData($archive_name); $archive->buildFromDirectory($dir_path); // make path/to/archive/arch1.tar $archive->compress(Phar::GZ); // make path/to/archive/arch1.tar.gz unlink($archive_name); // deleting path/to/archive/arch1.tar