34 / 34 / 6
Регистрация: 11.12.2016
Сообщений: 329
Записей в блоге: 6
1

Сделать бэкап папки сайта в .zip + в другой .zip дамп БД (MySQL) и все это на crontab

18.08.2017, 11:34. Показов 2033. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста готовое решение (ссылку на него или код здесь) для описанной в сабже типовой задачи: сдампить обычный сайт - папка с файлами + БД(MySQL). Т.е.

1. Упаковать папку с файлами сайта в ZIP, назвать архив с использованием текущей даты, и переместить его в папку с архивами.

2. То же самое сделать с базой данных (используя mysqldump).

3. И чтобы это было в виде исполняемого .sh файла, который можно через cron запускать.

Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2017, 11:34
Ответы с готовыми решениями:

Fust.zip на флешке, все папки приобрели расширение vbs
После использования флешки в вузе, дома не открывается ни одна папка (расширение vbs) Появился...

Зная путь к папке с zip архивами распаковать все архивы в свои папки
есть папка, в которой лежат архивы. необходимо при нажатии на кнопку извлечь все архивы(каждый...

Переделать код так, чтобы из указанной папки распаковывались все zip-архивы, каждый — в свою папку
есть код: ZipFile="C:\1\док_12345919.zip" ExtractTo="C:\1\док_12345919" Set fso =...

Сравнение времени локального Zip архива с Zip архивом на FTP
Доброго времени суток Нужна помощь!!! Нужно сравнить время локального Zip архива с Zip архивом на...

6
Эксперт NIX
2794 / 2037 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
18.08.2017, 11:40 2
Bash
1
2
3
man zip
man date
man mv
0
34 / 34 / 6
Регистрация: 11.12.2016
Сообщений: 329
Записей в блоге: 6
18.08.2017, 13:14  [ТС] 3
Цитата Сообщение от Marinero Посмотреть сообщение
man zip
man date
man mv
Это прекрасный ответ.

Но мне бы готовый .sh файлик, ибо задача, повторюсь, типовая. Наверняка у кого-то в закромах Родины есть
0
Эксперт .NET
10208 / 6186 / 1455
Регистрация: 25.05.2015
Сообщений: 18,800
Записей в блоге: 14
18.08.2017, 13:22 4
Лучший ответ Сообщение было отмечено ProCode как решение

Решение

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
echo "Создание резервной копии от $TIMESTAMP"
 
declare -a SITES_DIR=(site1.com site2.com);
 
INPUT_DIR=~/
OUTPUT_DIR=~/output
 
echo "Удаление предыдущих копий ..."
find $OUTPUT_DIR -maxdepth 1 -type f -regex '.*tar\.gz' -delete
 
echo "Архивация сайтов ..."
for SITE_DIR in ${SITES_DIR[@]}
do
  echo "Обработка каталога $SITE_DIR ..."
  #ls $INPUT_DIR/$SITE_DIR
 
  echo "Создание нового архива ..."
  tar --exclude-vcs --exclude="binaries" -cpzf  $OUTPUT_DIR/$SITE_DIR-$TIMESTAMP.tar.gz $INPUT_DIR/$SITE_DIR
done
 
 
echo "Архивация баз данных ..."
 
declare -a DATABASES=(site_db);
for DATABASE in ${DATABASES[@]}
do
  echo "Обработка базы данных '$DATABASE'"
 
  SQL_FILENAME=$OUTPUT_DIR/$DATABASE-$TIMESTAMP.sql
  TAR_FILENAME=$SQL_FILENAME.tar.gz
 
  mysqldump -h localhost -u $DATABASE -p<ПАРОЛЬ> $DATABASE  > $SQL_FILENAME
  tar -czf $TAR_FILENAME $SQL_FILENAME
  rm $SQL_FILENAME
 
done
Надо бы на другой язык переделать.
1
34 / 34 / 6
Регистрация: 11.12.2016
Сообщений: 329
Записей в блоге: 6
18.08.2017, 14:50  [ТС] 5
Rius, респектище!!!

Я и не думал что в bash можно такие сложные конструкции писать!! ))))

Прям как настоящий язык программирования получается, да?

Думал этот скрипт будет простой линейной последовательностью команд zip, mv и т.п.

А тут и переменные и циклы ))

Буду разбираться сейчас.

Добавлено через 11 минут
Rius, вроде всё интуитивно понятно, кроме вот этого:

Bash
1
2
declare -a DATABASES=(site_db);
for DATABASE in ${DATABASES[@]}
Понятно, что во второй строке перебор массива, но непонятно откуда он берется.

что такое DATABASES=(site_db) ? site_db - это что за значение?

И еще вопрос:

- У меня почти к каждой базе свой юзер с паролем - есть ли какое-то простое решение(дополнение к коду) для этого варианта?

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

Bash
1
2
3
4
5
declare -a SITES_DIR=(site1.com site2.com);
 
...
 
for SITE_DIR in ${SITES_DIR[@]}
я правильно понял, что

Bash
1
declare -a SITES_DIR=(site1.com site2.com);
это мы задаем массив и сразу заполняем его значениями?
0
Эксперт .NET
10208 / 6186 / 1455
Регистрация: 25.05.2015
Сообщений: 18,800
Записей в блоге: 14
18.08.2017, 15:12 6
Да, там массив так определяется.
Для БД тоже планировал массив, но выходило слишком сложно. Так что часть с БД только на одну работает.
Язык это ужасен. Работает правда повсюду.
Надо бы на python. У меня руки не дошли пока.
1
34 / 34 / 6
Регистрация: 11.12.2016
Сообщений: 329
Записей в блоге: 6
18.08.2017, 15:23  [ТС] 7
Цитата Сообщение от Rius Посмотреть сообщение
Да, там массив так определяется.
Для БД тоже планировал массив, но выходило слишком сложно. Так что часть с БД только на одну работает.
Язык это ужасен. Работает правда повсюду.
Надо бы на python. У меня руки не дошли пока.
Ага, теперь всё полностью прояснилось

Спасибо!
0
18.08.2017, 15:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2017, 15:23
Помогаю со студенческими работами здесь

Разархивировать zip-файл в Командной строке с использованием 7-Zip
Добрый вечер! Парни, дико извиняюсь, наверно уже ни раз обсуждалось в разделе, но быстро поискав...

Как извлечь все папки и файлы zip архива,не считая корневой директории архива и какая кодировка у архиватора winzip?
Всех приветствую. Имеется zip архив. Нужно извлечь все файлы в определённую папку на sd карте,не...

Создание zip-папки
Здравствуйте. Поставлена задача написать программу, которая делает резервные копии файлов с помощью...

«Лечение вирусов/malware» полученные логи: virusinfo_syscure.zip, virusinfo_syscheck.zip, log.txt, info.txt
баннеры

Выкладываю свои логи virusinfo_syscure.zip, virusinfo_syscheck.zip, Не могу выложить log.txt, info.txt, слишком моного весят
Пожалуйста, помогите мне

Добавление папки в ZIP-архив
Как добавить папку (все файлы и подпапки) в zip архив с помощью bat файла.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru