Скрипт для резервного копирования из 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/06/2022

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

14/04/2022

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

11/03/2022

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

Статьи
12/03/2018

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

20/02/2014

14/06/2013

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