LINUX.ORG.RU
ФорумAdmin

Посоветуйте тулзу для бекапа сайтов

 , ,


3

1

Чтоб ее крону скормить, а тулза, в свою очередь, забиралась по ftp на хостинг и подключалась к mysql-серверу. ну вы поняли.

Чтоб иметь постоянную архивированную копию сайта с возможностью удобного восстановления. Уверен что такое есть. про гугл я слышал, но хотелось бы знать чем реально люди пользуются. Спасибо

★★★★★

ну вы поняли.

Да. Это bash, ftp, mysqldumb, tar, gzip. Собираешь как надо и делаешь backup_site.sh и restore.sh. Вместо tar+gzip я юзаю git. Каждый раз делается commit после backup'а и у меня есть вся история изменения базы. Если что-то надо, то можно достать. И места это занимает меньше, чем держать кучу копий.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от zgen

шел скрипт?

Я, собсна, сначала так и хотел, и уже морально приготовился костылить, но, вдруг, пришла мысля: «А ну как есть прям готовое специализированное решение?»

pihter ★★★★★
() автор топика
Ответ на: комментарий от Zaggani

2015
бекапить сайты

И чего тебе, среди здесь, не нравится? Ни разу еще не проё^W проигрывал информацию и считаешь, что в наш век это излишне? Ну дак такая позиция проходит со временем...

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

и уже морально приготовился костылить

И правильно сделал.

«А ну как есть прям готовое специализированное решение?»

Но зачем это, если можно покостылить с тем же успехом?

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

Да. Это bash, ftp, mysqldumb, tar, gzip. Собираешь как надо и делаешь backup_site.sh и restore.sh. Вместо tar+gzip я юзаю git.

Я прям так и собирался сделать :) но желание сэкономить себе время и заюзать готовое еще не прошло :) это будет вторым (и более правильным, че уж там) вариантом

pihter ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Но зачем это, если можно покостылить с тем же успехом?

Лень же :) эффект от костыляния даже лучше, просто время нынче дорого

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

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

ii343hbka ★★★
()
Ответ на: комментарий от pihter

Я думаю, ты быстрее напишешь скрипт, который делает что тебе нужно, чем настроишь/найдешь что-то готовое. Хотя попробуй, если охота, может и правда что-то уже есть.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Да и в башах я не настолько силен, чтоб за пять минут накостылить, хотя, этот недостаток, конечно, нужно бороть без жалости, тут не поспоришь

pihter ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Я думаю, ты быстрее напишешь скрипт, который делает что тебе нужно, чем настроишь/найдешь что-то готовое. Хотя попробуй, если охота, может и правда что-то уже есть

Ну знаешь, меня вдохновил git-ftp. Я тоже хотел скрипт делать, а потом выяснилось, что дел на две минуты с готовым решением. Вот я и подумал, что хуже не будет, если спрошу.

pihter ★★★★★
() автор топика
Ответ на: комментарий от anonymous_sama

https://cdp.me/

Это сторонний сервис штоле? Меня внутренний Столлман задушит ночью!

ЗЫ: А что я не так спросил? Вроде ясно же все...

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Просто в 2015 году нужно быть гусаром. И никак иначе. А ты сайты бекапишь какие-то до сих пор. Лоробогам становится грустно.

Zaggani
()
Ответ на: комментарий от pihter

Ради одного хоста/сайта смысла искать серийные решения.

А так бы bacula используем, но подготовку данных для backup все равно скриптом делать нужно.

zgen ★★★★★
()
Ответ на: комментарий от pihter

Короче, если интересно вот:

#
#Copyright (c) 2015 Сrutch_master (from linux.org.ru)
#License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
#
#!/bin/bash
host=$1;
if [ $1 = "--help" ]; then
	echo "MySQL backup script."
	echo "Include mysqldump, mysql, git"
	echo "Usage: dump.sh <host> <user> <password>";
else
	mkdir $host 2> /dev/null
	cd $host

	echo 'show databases;' | mysql -h $1 --user=$2 --password=$3 | tail -n +2 > databases.list
	dbcnt=$(wc -l databases.list | cut -d ' ' -f 1)
	dbcur=0
		

	for db in $(cat databases.list);
	do
		dbcur=$(($dbcur+1))
		echo "DB# $dbcur/$dbcnt Start dump $db"
		if [ -d $db ]; then 
			newdb=0
		else
			mkdir $db 2> /dev/null
			newdb=1
		fi
		cd $db
		if [ $newdb -eq 1 ]; then 
			echo "git init"
			git init 
		fi

		echo "use $db;show tables;" | mysql -h $1 --user=$2 --password=$3 | tail -n +2 > tables.list
		tabcnt=$(wc -l tables.list | cut -d ' ' -f 1)
		tabcur=0
		
		#git: rm 
		for remove in $(dir -1 | grep -v -f tables.list | grep -v "routines.sql" | grep -v "tables.list");
		do
			echo "rm:$remove"
			git rm $remove
			rm $remove
		done

		for table in $(cat tables.list);
		do
			tabcur=$(($tabcur+1))
			echo "DB# $dbcur/$dbcnt TAB# $tabcur/$tabcnt dump $db.$table"
			#dump tables
			mysqldump --user=$2 -h $1 --password=$3 --lock-tables=false --extended-insert=false $db $table | grep -v 'SQL SECURITY DEFINER' > $table.sql 2>>error.log
			git add $table.sql
		done
		#dump routines
		echo "DB# $dbcur/$dbcnt dump $db routines"
		mysqldump --user=$2 -h $1 --password=$3 -R -t -d --extended-insert=false $db | grep -v 'SQL SECURITY DEFINER' | tr '[:upper:]' '[:lower:]' | sed 's/ definer=`root`@`[^`]*`//' > $db.routines.sql 2>>error.log
		git add $db.routines.sql
		git commit -m "$(date +%F_%R)"
		git gc
		cd ..
	done
	cd ..
fi
Скрипт рассовывает каждую базу в отдельный каталог, в котором для каждой таблицы и отдельно для хранимых процедур (всех) создаёт отдельный sql файл. Для error.log лучше прописать абсолютный путь. Или вынести куда-нибудь константой.

crutch_master ★★★★★
()
Ответ на: комментарий от zgen

Цепляться по ssh делать все там, и сливать дамп на локалхост. Еще на пыхе какие-то костыли для этого есть. В таком случае вместо mysqldump будет wget.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от Zaggani

Просто в 2015 году нужно быть гусаром

Ну Б-г в помощь

А ты сайты бекапишь какие-то до сих пор

А я бекаплю.

pihter ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Да я понимаю, что не сложно, но, все же, не настолько просто, насколько ты написал :)

pihter ★★★★★
() автор топика
Ответ на: комментарий от anonymous_sama

ЯННП

Это веб-сервис или локальная прога, которую я поставил и она стала моим локальным веб-сервисом? И данные к дяде на сервер не улетают?

ЗЫ сайт только у меня прыгает их? (на странице About)

pihter ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

О. Только спросить хотел. Спасибо. С него и начну. А для ftp готовое, думаю нагуглить будет легко

Юниквейненький такой подход, одобряю

pihter ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Ну, надо маны почитать еще.

Да так я и без ЛОРа умею :) это ж надо вечерок-другой потратить :) но все равно спасибо

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Да локальная, мог бы уже посмотреть. Там минус большой, что оно привязано к связке lamp, которую уже мало кто использует, да и еще много всего. Но тебе судя по всему подойдет.

anonymous_sama ★★★★★
()

может подойдет backup-manager

entony
()
Ответ на: комментарий от crutch_master

Хмм..На пыхе по любому что-то должно быть.

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

pihter ★★★★★
() автор топика
Ответ на: комментарий от anonymous_sama

Но тебе судя по всему подойдет.

Лестное мнение :) спасибо, канеш, но я, пожалуй, лучше скрипт сколхожу

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

А где я сказал, что одного?

Как не говорил и обратного. Ты уж будь добр, огласи все обстоятельства.

zgen ★★★★★
()
Ответ на: комментарий от crutch_master

Цепляться по ssh делать все там, и сливать дамп на локалхост.

Если запускать mysqldump с локалхоста - ничего для БД не изменится.

zgen ★★★★★
()
Ответ на: комментарий от zgen

Если запускать mysqldump с локалхоста - ничего для БД не изменится.

А если порт mysql у хостера закрыт?

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от pihter

а туплю, сорри, тыж на хостинг доступ имеешь. просто стопороть тогда апач и прочие демоны и mksqaushfs? ну ессно, оформить всё в башскрипте, с заливанием куда-либо.

darkenshvein ★★★★★
()
Ответ на: комментарий от crutch_master

Ну если порт mysql закрыт, то как еще базу сливать?

Ну так — да. Ну мож какой-нибудь SQL-проксик, тогда да, должно быть логично

pihter ★★★★★
() автор топика
Ответ на: комментарий от zgen

Как не говорил и обратного. Ты уж будь добр, огласи все обстоятельства.

А еще я не говорил что фарш из котят в сыром виде на хлеб не намазываю... Эдак можно решить, что намазываю

Странная логика

pihter ★★★★★
() автор топика
Ответ на: комментарий от darkenshvein

а туплю, сорри, тыж на хостинг доступ имеешь. просто стопороть тогда апач и прочие демоны и mksqaushfs?

Я не настолько доступ имею :) он там урезанный донельзя, например гит есть, эсэсэйч доступ есть, а git pull нельзя :(

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Странная логика

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

zgen ★★★★★
()
Ответ на: комментарий от zgen

Просить помощи в выборе инструмента и не описывать целиком задачу

ну дак я ее часами могу описывать, поэтому я решил описать ее в необходимом минимуме. какая разница в каком количестве я буду использовать инструмент, если я явно указал, что хочу ее кроном запускать? один раз или сто — какая разница?

pihter ★★★★★
() автор топика

Мало конкретной информации, что и как хотите сделать. Если сами не знаете, то самопал на баше.

Amet13 ★★★★★
()
Ответ на: комментарий от Amet13

Мало конкретной информации, что и как хотите сделать

Ну не знаю как еще написать. Хочу чтоб была программа (тулза, скрипт, что угодно, что можно скормить крону) которая бы забиралась на хостинг и бекапила бы все по ftp и через открытый порт mysql. С возможностью восстановления не сильно геморойной. Без всяких веб-морд и прочей ненужнины, только юникс-вей.

Вопрос в том, есть ли готовые решния уровня git-ftp или проще сколхозить скрипт?

ЗЫ: раз никто за пол дня не тыкнул готового решения — думается что скрипт вернее будет

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

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

А так выше уже написали, bash+mysqldump+tar(gz|bz)+scp/sftp. Либо же не писать с нуля свой, а найти в инете готовый, коих мильён.

Amet13 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.