Скрипт для резервного копирования из cpanel

В Cpanel с правами пользователя невозможно настроить создание резервных копий по расписанию. Полный бэкап делается только вручную.

Обойти это ограничение можно с помощью следующего скрипта, который инициирует создание полного бэкапа и закачивание его на удаленный FTP-сервер. Скрипт написан на PHP и его можно запускать по расписанию.


<?php
// Переменная для имени пользователя cpanel (CPANEL_USERNAME) и пароля (PASSWORD)
$auth = base64_encode("CPANEL_USERNAME:PASSWORD");
// Домен или ip-адрес сервера с установленной cpanel
$domain = "cpaneldomain.tld";
// Тема оформления должна совпадать с темой, установленной в cpanel по умолчанию
$theme = "x3";
// использовать или нет защищенное соединение
$secure = false;
// Использовать или нет удаленный FTP-сервер
$ftp = true;
// Домен или ip-адрес удаленного FTP-сервера для бэкапов (в данном случае прописан наш FTP
$ftpserver = "hyperstream.ru";
// Имя пользователя FTP
$ftpusername = "$USER";
// Пароль FTP
$ftppassword = "$PASS";
// Порт FTP
$ftpport = "21";
// Каталог на удаленном FTP, куда нужно положить созданный бэкап
$ftpdirectory = "/backups";

// Выбор порта подключения к cpanel
if ($secure) {
    $url = "ssl://" . $domain;
    $port = 2083;
} else {
    $url = $domain;
    $port = 2082;
}

// Соединение с cpanel-сервером
$socket = fsockopen($url, $port);
if (!$socket) {
    exit("Failed to open socket connection.");
}

// Формирование ссылки с параметрами
if ($ftp) {
    $params = "dest=ftp&amp;server=$ftpserver&user=$ftpusername&pass=$ftppassword&port=$ftpport&rdir=$ftpdirectory&submit=Generate Backup";
} else {
    $params = "submit=Generate Backup";
}

// Отправка сформированной ссылки в cpanel
fputs($socket, "POST /frontend/" . $theme . "/backup/dofullbackup.html?" . $params . " HTTP/1.0\r\n");
fputs($socket, "Host: $domain\r\n");
fputs($socket, "Authorization: Basic $auth\r\n");
fputs($socket, "Connection: Close\r\n");
fputs($socket, "\r\n");

// Получение ответа от cpanel
while (!feof($socket)) {
    $response = fgets($socket, 4096);
    echo $response;
}

// Закрытие соединения
fclose($socket);
?>


Фактически всё, что делает скрипт - эмулирует ручной вход в cpanel и выбор создания полного бэкапа в соответствующем разделе панели.

Как использовать по расписанию:

Создайте в своем домашнем каталоге скрипт /home/user/public_html/cpanel-backup.php с приведенным выше текстом.

Внесите свои логин и пароль, адреса cpanel и FTP.

Сохраните скрипт.

Теперь его можно протестировать путем вызова через WEB: http://mydomain.tld/cpanel-backup.php

Вы должны увидеть стандартный вывод cpanel, но без CSS (страница будет "поломана").

Теперь Вы можете выполнять скрипт по расписанию с помощью команды wget "http://mydomain.tld/cpanel-backup.php" > /dev/null 2>&1

Обратите, пожалуйста, внимание, что в этом варианте скрипт может запросить кто угодно. Потенциально это может стать точкой для DDOS-атаки на ваш сервер\аккаунт.

Для закрытия доступа третьих лиц, можно перенести скрипт выше public_html. После этого понадобится отредактировать cron-задание, так как вызов скрипта через WEB уже будет невозможен. Новая строка будет выглядеть примерно так:

php -f /home/user/cpanel-backup.php > /dev/null 2>&1

где "user" нужно заменить на имя своего пользователя cpanel.

Новости
23 июня 2022

Для удобства оплаты подключен новый способ приема платежей в рублях картами не резидентов ЕС - Enot.io....

14 апреля 2022

Мы изменили список доступных методов оплаты и работаем над подключением новых платежных шлюзов. Теперь...

11 марта 2022

Проблема устранена. --- В настоящее время у нас возникла проблема с подключением в части...

Статьи
12 марта 2018

Что такое VPN? VPN - Virtual Private Network (виртуальная частная сеть). Это общее название...

20 февраля 2014

14 июня 2013

Что такое домен? Что нужно что бы купить доменное имя? Что нужно знать про домен? Как...