Подскажите автоматический Бэкап большой DB wp_postmeta (cPanel)
Размер wp_postmeta 190 MB (общий размер 300MB )
UpdraftPlus
WP Database Backup
не справляются и уходят в ошибку, пробовал увеличить memory_limit и время, не помогает. Максимум плагины смогли выгрузить только пару таблиц на 200MB
есть такая приблуда для cpanel - но она по записи делает бэкап фалов , может кто шарит, подскажет как переделать под DB
Частично решение продвигается для cPanel
1 ПУНКТ "Создаем КРОН"
Добавляем крон, заменяем параметры
1 имя_пользователя
2 пароль_тут_в_этих_кавычках !!!Важно межу -p' никаких пробелов
3 имя_базы_данных
3 ваш_айди_пользователя
/usr/bin/mysqldump -u имя_пользователя -p'пароль_тут_в_этих_кавычках' имя_базы_данных > /home/ваш_айди_пользователя/backups/databace__$(date +\%Y-\%m-\%d-\%H\%M\%S).sql либо gzip /usr/bin/mysqldump -u имя_пользователя -p'пароль_тут_в_этих_кавычках' имя_базы_данных | gzip > /home/ваш_айди_пользователя/backups/databace__$(date +\%Y-\%m-\%d-\%H\%M\%S).sql.gz
2 ПУНКТ "Подключаемся к яндекс диску"
2.1 получаем токен ключ
2.2 Узаем нужный код , я для теста подключил этот из инструкции
$token = 'xxx';
// Путь и имя файла на нашем сервере.
$file = __DIR__ . '/image.jpg';
// Папка на Яндекс Диске (уже должна быть создана).
$path = '/uploads/';
// Запрашиваем URL для загрузки.
$ch = curl_init('https://cloud-api.yandex.net/v1/disk/resources/upload?path=' . urlencode($path . basename($file)));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $token));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
$res = json_decode($res, true);
if (empty($res['error'])) {
// Если ошибки нет, то отправляем файл на полученный URL.
$fp = fopen($file, 'r');
$ch = curl_init($res['href']);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_UPLOAD, true);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file));
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code == 201) {
echo 'Файл успешно загружен.';
}
}
3 ПУНКТ Определяем файл который нужно отправить на яндекс диск
// код добавить перед кодом в пункте 2 и подставить нужный файл
// у меня 2 бэкапа в gz и sql формате - код ниже определяет и отправляет только gz
ini_set('max_execution_time', 360);
// получаем файлы
$dir = '/home/ваш_айди_пользователя/backups';
// сортировка по убыванию
$files2 = scandir($dir, 1);
// получаем последний по имени файли опираясь на дуту в имени
$last_byname = $files2[0];
// получаем и определяем расширение
$ext = substr(strrchr($last_byname, '.'), 1);
if ($ext == "sql"){
$last_byname = $files2[1];
}
// Отправка
echo $backup_file_gz = '/home/ваш_айди_пользователя/backups/' . $last_byname;
// Путь и имя файла на нашем сервере.
4 ПУНКТ "Запускаем скрипт"
идем в планировщик заданий и добавляем ещё одно задание
php /home/ваш_айди_пользователя/backups/backup.php