Выделенный сервер, VPS, VDS, хостинг в Германии, Голландии
Войти в панель
RUB | USD

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

Поддержка работает круглосуточно
Поддержка
Работает круглосуточно
Доступен IPv4 и IPv6
Канал в сеть
Доступен IPv4 и IPv6
Новое и современное оборудование
Оборудование
Новое и современное