Архивирование на сервере средствами PHP

Создать zip архив

В предлагаемом решении архив содержит 2 файла: zip.php и zip.lib.php. Первый - страница, которую вам необходимо открыть в браузере, после загрузки на сервер. Второй файл - сама библиотека, занимающаяся созданием zip-архива.

Необходимо загрузить оба файла на сервер в папку, содержимое которой вы хотите заархивировать.

Открываем http://sitaname.com/yourfolder/zip.php

Скрипт выведет список папок и файлов в текущей директории с возможностью выбора, что необходимо добавить в архив.

После создания архива страница выведет ссылку для скачивания zip архива. Также выведятся ссылки для удаления либо самого zip файла, либо для удаления zip файла и тех .php файлов, которые использовались для его создания (zip.php и zip.lib.php).

Новый архив создается каждый раз при открытии zip.php?create=true. Но и каждый предыдущий архив тоже удаляется.

Получается всё просто и удобно: загрузили php файлы куда надо, открыли страницу архиватора, скачали zip файл и тут же подчистили за собой :)

Код, который лежит в основе:

require_once('zip.lib.php');
$file = 'archive.zip';
$archive = new PclZip($file);

$d = @opendir(".");
if(!$d) return;
while(($e=readdir($d)) !== false){
	if($e=='.' || $e=='..' || $e=='zip.php' || $e=='zip.lib.php') continue;
	$archive->add($e);
}

Скачать php файлы для создания архива


Распаковать zip архив

Принцип схож с приведенным выше, но уже без дополнительной библиотеки.
Загружаем файл unzip.php из архива в папку с zip файлом, который необходимо распаковать.

Открываем http://sitaname.com/yourfolder/unzip.php

Скрипт выводит список найденных архивов. У каждого zip файла будут ссылки на распаковку (в текущую папку) и удаление. Плюс ссылка на удаление самой страницы.

Код, который лежит в основе:

$file = 'archive.zip';
$path = pathinfo(realpath($file), PATHINFO_DIRNAME);

$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
	$zip->extractTo($path);
	$zip->close();
	echo "WOOT! $file extracted to $path <br>";
} else {
	echo "Doh! I couldn't open $file";
}

Скачать php файл для распаковки архива