Подскажите автоматический Бэкап большой 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