🔎

Створення ZIP-архіву каталогу на PHP

У мене є сайт з доступом лише по FTP. Робити резервні копії шляхом копіювання всіх файлів, навіть пакетним копіюванням, досить довго. Допоможіть, будь ласка, створити ZIP архів для швидкого завантаження резервної копії одним файлом.
php
1 відповідь
  • Дмитро
    Наведу приклад створення ZIP-архіву, а потім його ретельно прокоментую:
    $zip = new ZipArchive(); // Створюємо об'єкт для роботи із ZIP-архівами
    $zip->open('archive.zip', ZIPARCHIVE::CREATE); // Відкриваємо (створюємо) архів archive.zip
    $zip->addFile('index.php'); // Додаємо до архіву файл index.php
    $zip->close(); // Завершуємо роботу з архівом

    В результаті виконання цього скрипта з'явиться ZIP-архів, у корені якого буде міститися файл 'index.php'. Я думаю, що це все очевидно та логічно. А тепер коментую, що ми з Вами робили:

    1. Створили об'єкт ZipArchive за допомогою конструктора.

    2. Створили архів за допомогою методу Open об'єкту ZipArchive. Ми передали назву архіву archive.zip та константу ZIPARCHIVE::CREATE, яка повідомляє, якщо архів не існує, то його треба створити.

    3. Метод AddFile додає до архіву файл 'index.php', який знаходиться в одній директорії зі скриптом.

    4. Метод Close завершує роботу з архівом. Завжди виконуйте його, щоб звільнити ресурси комп'ютера, а також уникнути проблем, пов'язаних із роботою цього скрипту та інших скриптів, яким необхідний доступ до цього архіву.

    Ось таким простим способом можна створювати в автоматичному режимі ZIP-архіви за допомогою PHP.

    Якщо ви хочете завантажити весь вміст каталогу, вам необхідно створити архів файлів із збереженням структури, а потім завантажити його з сервера. Ось код:
    $zip = new ZipArchive();
    $zip->open('archive.zip', ZIPARCHIVE::CREATE);
    function addFile($path) {
    global $zip;
    if ($content_cat = glob($path.'/*')) {
    foreach ($content_cat as $object) {
    if (is_dir($object)) {
    @chmod($object, 0755);
    addFile($object);
    } else {
    @chmod($object, 0644);
    $zip->addFile($object);
    }
    }
    }
    }
    addFile($_SERVER['DOCUMENT_ROOT']);
    $zip->close();
    Також необхідно написати про розархівування ZIP-архів через PHP.

    Порядок створення архіву був простим: відкрити, додати файли до архіву, закрити. Для отримання ZIP-архіву порядок дуже схожий: відкрити, витягнути, закрити. Фактично, змінюється лише центральна частина. Давайте розберемо простий приклад:
    $zip = new ZipArchive();
    if ($zip->open('archive.zip') === true ) {
    $zip->extractTo($_SERVER['DOCUMENT_ROOT']);
    $zip->close();
    } else {
    echo "Архів не існує!";
    }
    Таким чином, всі файли та папки, які знаходяться в ZIP-архіві, будуть завантажені в зазначену директорію.