Скрипт для архивации базы данных и файлов сайта с последующей отправкой на Яндекс.Диск. Основан на аналогичном скрипте от Сергея Луконина.
- Unix-подобная операционная система
- coreutils 8.16+
- pv 1.1.4+ (Pipe Viewer)
- grep 2.5.4+
- tar 1.14+
- gzip 1.3.12+
- bc 1.03+
-
Зарегистрировать приложение в Яндекс.OAuth для аккаунта, Яндекс.Диск которого будет использоваться для хранения бэкапов
1.1. Платформы. Выбрать "Веб-сервисы", ниже нажать на ссылку "Подставить URL для разработки"
1.2. Доступы. В группе "Яндекс.Диск REST API" поставить 2 галочки:
- Доступ к информации о Диске
- Доступ к папке приложения на Диске
-
Получить токен вручную
-
Загрузить скрипт на свой сервер и в настройках использовать полученный токен:
git clone https://github.com/FajeSu/site-backup-script.git ~/site-backup-script/
cd ~/site-backup-script/
cp _settings.sh.source _settings.sh
vim _settings.sh
- Обязательные ключи командной строки:
-project-name |
Название проекта, используется в журналах событий и именах архивов |
-db-user |
Пользователь базы данных (для режима db) |
-db-pass |
Пароль пользователя базы данных (для режима db) |
-project-dirs |
Директории для архивации, через запятую (для режима files) |
- Необязательные ключи командной строки:
-mode |
Выбор объекта архивации (режим):
|
-db-host |
Сервер базы данных (по-умолчанию - localhost) |
-db-name |
Название базы данных (по-умолчанию используются данные из ключа -db-user ) |
-max-backups |
Максимальное количество бэкапов, хранимых на Яндекс.Диске (0 - хранить все бэкапы, по-умолчанию - 12) |
# Архивирование БД и файлов сайта. Максимальное кол-во хранимых бэкапов - 8
/bin/bash ~/site-backup-script/backup_script.sh -project-name site-domain.com -db-user username -db-pass password -project-dirs ~/site-domain.com/public_html/ -max-backups 8
# Архивирование только БД
/bin/bash ~/site-backup-script/backup_script.sh -project-name site-domain.com -mode db -db-user username -db-pass password
# Архивирование только файлов
/bin/bash ~/site-backup-script/backup_script.sh -project-name site-domain.com -mode files -project-dirs ~/site-domain.com/public_html/
# Архивирование отдельных файлов или директорий
/bin/bash ~/site-backup-script/backup_script.sh -project-name site-domain.com -mode files -project-dirs ~/site-domain.com/public_html/index.html,~/site-domain.com/public_html/tmp/
# Архивирование БД с другого сервера. На стороне того сервера необходимо дать доступ на подключение с определенного IP
/bin/bash ~/site-backup-script/backup_script.sh -project-name another-site.org -mode db -db-host another-site.org -db-name another_db -db-user another_user -db-pass another_password
Корневой каталог
└ Приложения
└ <app-name>
└ <project-name>
└ <backup-time>
└ файлы архивов
где
<app-name> |
Название приложения, указанное не этапе его регистрации |
<project-name> |
Название проекта |
<backup-time> |
Дата и время запуска скрипта на сервере, вида 20191231-235959 |