Как автоматизировать бэкап БД

12
Had
На сайте с 01.04.2014
Offline
497
Had
433

Доброго всем. Что то я запарился делать бэкап БД сайта руками. Напрягает.

Подскажите, пожалуйста, как автоматизировать бэкап БД одного сайта.

Что нужно:

Чтобы каждый день 3 раза в 18.00, 21.00, 24.00 автоматом (с хостинга) делался бэкап БД сайта

на мой жёсткий диск в папку, которая в корне Е диска. Причём, чтобы бэкап от 21.00 не

перезаписывался на бэкап 18.00 и так далее. Чтобы, я например, в 00.10 заходил в папку и видел 3 копии бэкапа БД.

Я себе это представляю так. Я создаю папку на диске Е (в корне, постоянная). При делании 18.00 часового бэкапа

автоматом создаётся папка (название папки - день, месяц, год бэкапа), а в ней папка (название папки - время бэкапа).

Как то так. Или может как-то иначе лучше сделать?

Ещё в идеале было бы хорошо, если бы каждые 3 дня удалялись в папках бэкапы, которые были сделаны ранее 3-х дней.

То есть. чтобы в папках у меня было всегда 9 копий БД за последние 3 дня.

Хостинг Бегет. Надо бесплатно.

█ ННП █ Самый надёжный и недорогой хостинг в России - https://clck.ru/MDrmD
MrDesigner
На сайте с 31.01.2008
Offline
146
#1

удалено

10 раз удалено

frct1
На сайте с 07.06.2019
Offline
17
#2

Хорошо, что пятница сегодня, а не завтра, как вчера

А по делу: может крон то попроще для бэкапов ?

Make CIS great again... https://hip-hosting.com (https://hip-hosting.com) VDS/VPS с быстрой установкой (Польша, Финляндия). Telegram: @frct1 (https://t.me/frct1)
DV
На сайте с 01.05.2010
Offline
644
#3

На хостинге по крону создаётся заархивированный дамп.

На локальную машину (если это имелос в виду) стягивать можно кучей способов.

Например, wget по планировщику, или какой ftp клиент.

Я бы, коль уж использую Cygwin под Windows, настроил бы cron и в нём, да хоть по ssh стягивал.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
Aisamiery
На сайте с 12.04.2015
Offline
206
#4

Основная сложность - это то что вы хотите у себя на диске Е, это значит вам надо открыть этут папку в интернет и комп всегда держать включенным, а ещё грузить свою сеть домешнюю и железо. А так в целом ничего сверхестественного нет, делаете bash скрипт и ставите его на крон, в скрипте пишите команды, я использую что то типо такого:


#!/bin/bash

# Установим от куда и куда будем копировать данные
BACKUP=/var/www/backups
SITE=/var/www/mysite.ru

# Установим дату бэкапа и создадим соответствующую папку
daten=`date +%Y.%m.%d-%H`
mkdir $BACKUP/$daten

# Делаем дамп базы данных
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +$BACKUP/$daten/database.sql.gz`

# Перейдем в папку с сайтом, чтобы не прихватить лишнего в структуре
cd $SITE

# Создадим архив файлов
tar -zcvf $BACKUP/$daten/files.tar.gz . > /dev/null 2>&1

# Отправляем архивы по фтп, если это конечно требуется,
# но хранить бэкапы лучше удаленно
FTP="$(which ftp)"

### FTP ###
FTPD="/"
FTPU="ftpuser"
FTPP="ftppassword"
FTPS="ftphost"

### ftp ###
cd $BACKUP/$daten
DUMPFILE1=files.tar.gz
DUMPFILE2=database.sql.gz
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
mkdir $daten
cd $daten
put $DUMPFILE1
put $DUMPFILE2
quit
END_SCRIPT

# Переходим в папку с бэкапами
cd $BACKUP

# и удаляем старые бэкапы (30 дней)
find ./ -type d -mtime +30 -exec rm -r '{}' \; 2> /dev/null

Но копирую я правда на selectel в облако, а не к себе домой, ну и ставьте на крон в любое время этот скрипт

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
M5
На сайте с 12.08.2009
Offline
212
M25
#5

Отправляйте на дропбокс, а он зальет в папку на вашем жестком

---------- Добавлено 19.06.2020 в 20:02 ----------

Had:
Как то так. Или может как-то иначе лучше сделать?

я архивирую и отправляю на email. Место на компьютере не занимает, копии делаются, и тогда когда он выключен

D8
На сайте с 23.03.2007
Offline
132
#6

гугли plink, но на хостинге должен быть доступ к ssh

MIRhosting.com
На сайте с 18.10.2006
Offline
203
#7
M25:
Отправляйте на дропбокс, а он зальет в папку на вашем жестком

ну уж тогда owncloud поставить и синхронизировать себе. на вирт хостинг он встает без особых проблем.

Андрей Нестеренко, MIRhosting Облачная платформа для DevOps (https://mirhosting.com/paas)
Had
На сайте с 01.04.2014
Offline
497
Had
#8
Aisamiery:
Основная сложность - это то что вы хотите у себя на диске Е, это значит вам надо открыть эту папку в интернет

Это исключено.

M25:
я архивирую и отправляю на email.

Они там БД уже заархивированные при скачивании.

2олл

Вариант с хардом отпадает. На почту тоже не вариант.

А можно как-то автоматизировать то, что я делаю руками - захожу на хостинге раздел БД, нажимаю на "пхпадмин" напротив нужной БД, далее нажимаю "экспорт", далее нажимаю "кнопку" и файл уже заархивированный скачивается в Хроме на диск Е. Вот это всё можно как-то сделать так, чтоб нажал 1 кнопку и сделалось? И чтоб кнопка была на рабочем столе Винды.

WapGraf
На сайте с 30.09.2009
Offline
455
#9

А что на рекламируемом бегете нету функционала по резервному копированию?

EuroHoster.org ( https://eurohoster.org/link.php?id=42 ) - территория быстрых серверов. Скидка 70% на VPS и 10% на выделенные серверы в Нидерландах (https://eurohoster.org/index.php?rp=/announcements/330/Скидки.html)
Евгений Крупченко
На сайте с 27.09.2003
Offline
158
#10
Had:
нажал 1 кнопку и сделалось? И чтоб кнопка была на рабочем столе Винды.

сервер ну никак сам не пролезет к вам на диск E:, если конечно тот не будет открыт наружу в инет.

поэтому обычные люди делают сохраняют куда-то на фтп, облако какое-нить, куда угодно что постоянно онлайн.

но и в поставленной задаче нет ничего нереализуемого.

если со стороны сервера никак, то нужно наоборот - инициировать что-то у себя на компе, что запустило бы скрипт на сервере и потом результат скачался сюда же на комп.

набросал по-быстрому скриптец:

http://evgenius.com/z/dbbackup.7z

создаете на сайте (или техническом поддомене, который бегет вам предоставляет - логин.beget.tech) какую-нибудь папку и закидываете в нее этот index.php

на этом моменте есть небольшая дыра в безопасности.

поэтому желательно конечно иметь постоянный ip и добавить в самый верх скрипта строчку:

if($_SERVER['REMOTE_ADDR']!='1.1.1.1') die();

и конечно поправить 1.1.1.1 на свой адрес. либо как-то еще закрыть доступ чужим к этому скрипту.

иначе гипотетически кто-угодно сможет скачать вашу базу 😒

дальше, на рабочем столе создаем ярлык с url к этому скрипту.

и все.

запускаем когда надо ярлык - скрипт сперва сдампит все имеющиеся базы в .sql файлы, потом все что надампил архивирует в архив вида [дата].7z и по окончанию отдает этот архив в браузер. остается нажать сохранить и скачается [дата].7z

подчищать старые копии уж извините, со стороны сервера у вас на компе не получится.

также если надо не по дням, а еще и по часам/минутам, то легко подправить там в скрипте кусочек $date=date("Y.m.d"); нужными буквами отсюда:

https://www.php.net/manual/ru/function.date.php

только не надо использовать двоеточие например или еще что-нть эдакое в качестве разделителя, т.к. в винде файлы с таким именем не возможны.

скрипт только что проверен именно на бегете. все работает.

правда кто знает какие у вас там объемы баз. опробовал на 150мб .sql файле и 30мб в сжатом виде.

если больше, то есть шанс упереться в какой-то из лимитов.

кроме того есть шанс роста бегетовского "cp" из-за архивации.

но если что, всегда можно стукнуть в личку за правильным shared'ом без этих всех лимитов 😎

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий