A module for Cockpit CMS designed to create, manage, and restore backups of your system and data.
- Flexible Backup: Create
.tar.gzarchives, including:- Cockpit CMS Core: Cockpit system files.
- Website Files: All project files, except the
cockpitfolder. - Database:
- For Mongolite: Database data is copied along with Cockpit core files (stored in
cockpit/storage/data). - For MongoDB: A separate database dump is created using the
mongodumputility.
- For Mongolite: Database data is copied along with Cockpit core files (stored in
- Exclusions: Ability to specify paths (files or directories) to exclude from the backup via module settings.
- Backup Management:
- View a list of created backups with size and date information.
- Download backups via the admin panel.
- Delete backups via the admin panel.
- Restoration from Backup:
- Restoration functionality via the admin panel (for a working server).
- Special script
restore.phpfor restoring to a new or "empty" server (outside the admin panel).
- Cockpit CMS: v2.x (the module was developed for this version).
- PHP: v8.1+ (or higher, depending on Cockpit CMS requirements).
- PHP
PharExtension: Must be enabled in PHP configuration. - For MongoDB backup/restore:
- The
shell_execfunction must be enabled in PHP configuration. - The
mongodumpandmongorestoreutilities must be installed on the server and available via PATH.
- The
- Copy the
Backupfolder from this repository toyour_cockpit_root/addons/. If necessary, copy the translation file toyour_cockpit_root/config/. Your folder structure should look approximately like this:your_project_root/ ├── cockpit/ │ └── addons/ │ │ └── Backup/ │ │ ├── Controller/ │ │ │ └── ... │ │ ├── Helper/ │ │ │ └── ... │ │ ├── views/ │ │ │ └── ... │ │ ├── admin.php │ │ ├── bootstrap.php │ │ ├── icon.svg │ │ └── restore.php │ └── config/ │ └── i18n/ │ ├── ru/ │ │ └── Backup.php - Log in to the Cockpit admin panel.
- Go to
Settings->Backup.
Module configuration is done via the Cockpit admin panel:
- In the admin panel, go to
Settings->Backup. - On the "Backup Settings" tab:
- Backup Configuration: Select which parts of the system will be included in the backup (Cockpit Core, Website Files, Database).
- Excluded Paths: Specify paths (relative to the site root) that should be excluded from the backup. For example:
my_temp_folder,cockpit/cache/some_large_files. Additional configuration for backup storage path (viacockpit/config/config.phpfile): By default, backups are stored inyour_cockpit_root/backups. You can change this by adding the following section tocockpit/config/config.php:
<?php return [ 'backup' => [ 'config' => [ 'backup_path' => '/path_to_your_custom_backups_folder', ], ], ];- Go to
Settings->Backup. - On the "List of backups" tab:
- You will see a list of all previously created backups.
- For each backup, the following actions are available:
- Download (
download): Downloads the backup archive to your computer. - Restore (
restore): Initiates the restoration process from the current server. ATTENTION: This will overwrite existing files and the database. - Delete (
delete): Deletes the backup file.
- Download (
- The "Create a backup" button starts the process of creating a new backup according to current settings.
- The "Refresh list of backups" button updates the list of backup files.
This method is intended for situations where Cockpit CMS is not functioning or is being installed on a new server. IMPORTANT:
- Placement of the
restore.phpscript:- Download the
restore.phpfile from the admin panel (under "Backup List", link "Download restoration file: restore.php"). - Upload this
restore.phpto the ROOT DIRECTORY OF YOUR WEBSITE. - For example, if your domain
example.compoints topublic_html/, thenrestore.phpshould be inpublic_html/. Thecockpitfolder after restoration will be inpublic_html/cockpit.
- Download the
- Placement of the backup file:
- Upload your
.tar.gzbackup file to the same directory as therestore.phpscript.
- Upload your
- Initiating the restoration process:
- Open
restore.phpin your browser (e.g.,https://yourdomain.ru/restore.php). - The script will automatically detect backup files in the current directory and select the most recent one.
- On the restoration confirmation page:
- Check the backup details.
- Make sure the paths to your Cockpit CMS installation and Mongolite data folder are specified correctly. The script will attempt to suggest default paths based on its location, but they may require adjustment.
- Click "Start Restoration".
- The script will perform the following actions:
- Extract the archive to a temporary directory.
- Delete existing files in target directories (Cockpit, project files) before copying from the backup.
- Copy Cockpit core files and project files.
- Set necessary permissions for all restored files and directories.
- Restore the database (Mongolite by copying files, MongoDB via
mongorestore). - Clear Cockpit CMS cache.
- Delete temporary files.
- After successful restoration, the page will display:
- A link "Start Over".
- A button "Delete restoration files and go to site".
- Open
WARNING:
- After successful restoration, YOU MUST IMMEDIATELY DELETE the
restore.phpfile from the server. This is a powerful tool that can be used by malicious actors to completely overwrite your site. Use the "Delete backup file and restoration script" button for safe cleanup. If automatic deletion fails, remove the files manually.
The module is distributed under the GNU Affero General Public License v3 (AGPLv3).
Author: Yuriy Plotnikov
Website: https://yuriyplotnikovv.ru
Модуль для Cockpit CMS, предназначенный для создания, управления и восстановления резервных копий вашей системы и данных.
- Возможности
- Требования
- Установка
- Конфигурация
- Использование
- Локализация
- Устранение неисправностей
- Лицензия
- Гибкое резервное копирование: Создание
.tar.gzархивов, включающих:- Ядро Cockpit CMS: Системные файлы Cockpit.
- Файлы сайта: Все файлы вашего проекта, кроме папки
cockpit. - База данных:
- Для Mongolite: Данные базы данных копируются вместе с файлами ядра Cockpit (хранятся в
cockpit/storage/data). - Для MongoDB: Создается отдельный дамп базы данных с использованием утилиты
mongodump.
- Для Mongolite: Данные базы данных копируются вместе с файлами ядра Cockpit (хранятся в
- Исключения: Возможность указывать пути (файлы или директории) для исключения из резервной копии через настройки модуля.
- Управление резервными копиями:
- Просмотр списка созданных резервных копий с информацией о размере и дате.
- Скачивание резервных копий через админ-панель.
- Удаление резервных копий через админ-панель.
- Восстановление из резервной копии:
- Функциональность восстановления через админ-панель (для рабочего сервера).
- Специальный скрипт
restore.phpдля восстановления на новом или "пустом" сервере (вне админ-панели).
- Cockpit CMS: v2.x (модуль разрабатывался для этой версии).
- PHP: v8.1+ (или выше, в зависимости от требований Cockpit CMS).
- Расширение PHP
Phar: Должно быть включено в конфигурации PHP. - Для резервного копирования/восстановления MongoDB:
- Функция
shell_execдолжна быть включена в конфигурации PHP. - Утилиты
mongodumpиmongorestoreдолжны быть установлены на сервере и доступны через PATH.
- Функция
- Скопируйте папку
Backupиз этого репозитория в директориюyour_cockpit_root/addons/. При необходимости скопируйте файл с переводами в директориюyour_cockpit_root/config/. Ваша структура папок должна выглядеть примерно так:your_project_root/ ├── cockpit/ │ └── addons/ │ │ └── Backup/ │ │ ├── Controller/ │ │ │ └── ... │ │ ├── Helper/ │ │ │ └── ... │ │ ├── views/ │ │ │ └── ... │ │ ├── admin.php │ │ ├── bootstrap.php │ │ ├── icon.svg │ │ └── restore.php │ └── config/ │ └── i18n/ │ ├── ru/ │ │ └── Backup.php - Войдите в админ-панель Cockpit.
- Перейдите в
Настройки->Резервное копирование.
Конфигурация модуля осуществляется через админ-панель Cockpit:
- В админ-панели перейдите в
Настройки->Резервное копирование. - На вкладке "Настройки резервного копирования":
- Конфигурация резервного копирования: Выберите, какие части системы будут включены в резервную копию (Ядро Cockpit, Файлы сайта, База данных).
- Исключенные пути: Укажите пути (относительно корня сайта) для исключения из резервной копии. Например:
my_temp_folder,cockpit/cache/some_large_files. Дополнительная настройка пути для сохранения резервных копий (через файлcockpit/config/config.php): По умолчанию резервные копии сохраняются вyour_cockpit_root/backups. Вы можете изменить это, добавив следующую секцию вcockpit/config/config.php:
<?php return [ 'backup' => [ 'config' => [ 'backup_path' => '/path_to_your_custom_backups_folder', ], ], ];- Перейдите в
Настройки->Резервное копирование. - На вкладке "Список резервных копий":
- Вы увидите список всех ранее созданных резервных копий.
- Для каждой резервной копии доступны действия:
- Скачать (
download): Скачивает архив резервной копии на ваш компьютер. - Восстановить (
restore): Запускает процесс восстановления с текущего сервера. ВНИМАНИЕ: Это перезапишет существующие файлы и базу данных. - Удалить (
delete): Удаляет файл резервной копии.
- Скачать (
- Кнопка "Создать резервную копию" запускает процесс создания новой резервной копии в соответствии с текущими настройками.
- Кнопка "Обновить список резервных копий" обновляет список файлов резервных копий.
Этот метод предназначен для случаев, когда Cockpit CMS не функционирует или устанавливается на новом сервере. ВАЖНО:
- Размещение скрипта
restore.php:- Скачайте файл
restore.phpиз админ-панели (раздел "Список резервных копий", ссылка "Скачать файл для восстановления из резервной копии: restore.php"). - Загрузите этот
restore.phpв КОРНЕВУЮ ДИРЕКТОРИЮ ВАШЕГО САЙТА. - Например, если ваш домен
example.comуказывает наpublic_html/, тоrestore.phpдолжен быть вpublic_html/. Папкаcockpitпосле восстановления будет вpublic_html/cockpit.
- Скачайте файл
- Размещение файла резервной копии:
- Загрузите ваш
.tar.gzфайл резервной копии в ту же директорию, что и скриптrestore.php.
- Загрузите ваш
- Запуск процесса восстановления:
- Откройте
restore.phpв браузере (например,https://yourdomain.ru/restore.php). - Скрипт автоматически обнаружит файлы резервных копий в текущей директории и выберет самый свежий.
- На странице подтверждения восстановления:
- Проверьте детали резервной копии.
- Убедитесь, что пути к установке Cockpit CMS и папке данных Mongolite указаны корректно. Скрипт попытается предложить пути по умолчанию на основе своего расположения, но они могут потребовать корректировки.
- Нажмите "Начать восстановление".
- Скрипт выполнит следующие действия:
- Извлечет архив во временную директорию.
- Удалит существующие файлы в целевых директориях (Cockpit, файлы проекта) перед копированием из резервной копии.
- Скопирует файлы ядра Cockpit и файлы проекта.
- Установит необходимые права доступа для всех восстановленных файлов и директорий.
- Восстановит базу данных (Mongolite копированием файлов, MongoDB через
mongorestore). - Очистит кэш Cockpit CMS.
- Удалит временные файлы.
- После успешного восстановления на странице появится:
- Ссылка "Начать сначала".
- Кнопка "Удалить файлы восстановления и перейти на сайт".
- Откройте
ПРЕДУПРЕЖДЕНИЕ:
- После успешного восстановления ВЫ ДОЛЖНЫ НЕМЕДЛЕННО УДАЛИТЬ файл
restore.phpс сервера. Это мощный инструмент, который может быть использован злоумышленниками для полного перезаписывания вашего сайта. Используйте кнопку "Удалить файл резервной копии и скрипт восстановления" для безопасной очистки. Если автоматическое удаление не удалось, удалите файлы вручную.
Модуль распространяется под лицензией GNU Affero General Public License v3 (AGPLv3).
Автор: Yuriy Plotnikov
Сайт: https://yuriyplotnikovv.ru