180 lines
7.7 KiB
Markdown
180 lines
7.7 KiB
Markdown
<h1>▎Описание</h1>
|
||
|
||
Этот скрипт предназначен для автоматизации процесса резервного копирования файлов и директорий на удаленный FTP-сервер. Он поддерживает отправку уведомлений о статусе резервного копирования через Telegram и Gotify.
|
||
|
||
<h1>▎Функциональные возможности</h1>
|
||
|
||
• Чтение конфигурации: Скрипт загружает параметры из файла backup.ini, который содержит настройки для резервного копирования и отправки уведомлений.
|
||
|
||
• Проверка наличия необходимых утилит: Перед выполнением резервного копирования скрипт проверяет наличие необходимых утилит (tar, ftp, lftp, curl).
|
||
|
||
• Создание временной директории: Скрипт создает временную директорию для хранения резервных файлов.
|
||
|
||
• Исключения: Поддержка исключений для файлов и директорий, которые не должны быть включены в резервную копию.
|
||
|
||
• Отправка уведомлений: Возможность отправки уведомлений о статусе резервного копирования через Telegram и Gotify.
|
||
|
||
<h1>Ручная установка</h1>
|
||
|
||
1. Убедитесь, что у вас установлены необходимые утилиты для выполнения скрипта, в противном случае установите командой:
|
||
|
||
``` bash
|
||
sudo apt install tar curl lftp jq -y
|
||
```
|
||
|
||
2. Скопируйте файл скрипта .sh и файл конфигурации .ini в директорию /opt/adminlabs_backup.
|
||
|
||
3. Командой ``` sudo chmod +x backup_script.sh ``` сделайте скрипт исполняемым.
|
||
|
||
2. Отредактируйте файл конфигурации backup.ini.
|
||
|
||
<h3>▎Пример файла backup.ini</h1>
|
||
|
||
``` ini
|
||
[Backup]
|
||
ENABLE_DIRS=true
|
||
ENABLE_FILES=false
|
||
SKIP_FILES=
|
||
SKIP_DIRS=
|
||
DIRS=/etc,/var/log
|
||
FILES=/home/user/BashProject/backup.sh,/home/user/jet/restore.sh
|
||
[FTP]
|
||
FTP_SERVER=127.0.0.1
|
||
FTP_USER=user
|
||
FTP_PASS=password
|
||
[SENT]
|
||
ENABLE_SENT=true
|
||
ENABLE_SENT_GOTIFY=true
|
||
ENABLE_SENT_TELEGRAM=true
|
||
GOTIFY_URL=http://ваш_gotify_сервер
|
||
GOTIFY_APP_TOKEN=0000000
|
||
TELEGRAM_TOKEN=00000000
|
||
CHAT_ID=00000000
|
||
TEXT_FINISH_MESSAGE="Backup finished"
|
||
[END]
|
||
```
|
||
<h3>▎Описание переменных</h1>
|
||
|
||
ENABLE_SENT - флаг, указывающий, нужно включить отправку уведомлений
|
||
|
||
ENABLE_SENT_GOTIFY - флаг, указывающий, нужно включить отправку уведомлений GotiFy
|
||
|
||
ENABLE_SENT_TELEGRAM - флаг, указывающий, нужно включить отправку уведомлений Telegram
|
||
|
||
TEXT_FINISH_MESSAGE - текст отправляемого уведомления
|
||
|
||
TELEGRAM_TOKEN - токен вашего бота Telegram
|
||
|
||
CHAT_ID - ID вашего чата Telegram
|
||
|
||
GOTIFY_URL - адрес вашего Gotify
|
||
|
||
GOTIFY_APP_TOKEN - токен вашего приложения Gotify
|
||
|
||
DIRS - список директорий для резервной копии
|
||
|
||
FILES - список файлов для резервной копии
|
||
|
||
SKIP_FILES - список файлов, которые не должны быть включены в резервную копию
|
||
|
||
SKIP_DIRS - список директорий, которые не должны быть включены в резервную копию
|
||
|
||
ENABLE_DIRS - флаг, указывающий, нужно ли включать директории в резервную копию
|
||
|
||
ENABLE_FILES - флаг, указывающий, нужно ли включать файлы в резервную копию
|
||
|
||
FTP_SERVER - адрес вашего FTP-сервера
|
||
|
||
FTP_USER - имя пользователя вашего FTP-сервера
|
||
|
||
FTP_PASS - пароль вашего FTP-сервера
|
||
|
||
<h3>▎Запуск скрипта</h1>
|
||
|
||
Запустите скрипт с правами суперпользователя:
|
||
``` bash
|
||
sudo ./backup_script.sh
|
||
```
|
||
|
||
<h3>▎Логирование</h1>
|
||
|
||
|
||
Скрипт ведет логирование всех операций в файл, имя которого формируется на основе текущей даты и времени. Логи будут содержать информацию о выполнении операций, а также сообщения об ошибках.
|
||
|
||
<h3>▎Примечание</h1>
|
||
|
||
• Убедитесь, что у вас есть права доступа на чтение файлов и директорий, которые вы хотите сохранить.
|
||
|
||
• Не храните чувствительные данные (например, пароли) в открытом виде в файле конфигурации. Рассмотрите возможность использования безопасных методов хранения конфиденциальной информации.
|
||
|
||
|
||
<h1>▎Автоматическая установка</h1>
|
||
|
||
• Для автоматической установки используйте выполните команду:
|
||
|
||
``` bash
|
||
sudo curl -O http://files.adminlabs.space/scripts/install_backup.sh && sudo chmod +x install_backup.sh && sudo ./install_backup.sh
|
||
```
|
||
|
||
• Чтобы добавить выполнение скрипта в cron, вам нужно отредактировать файл crontab. Вот как это сделать:
|
||
|
||
Откройте терминал.
|
||
|
||
Введите команду для редактирования crontab:
|
||
|
||
``` bash
|
||
sudo crontab -e
|
||
```
|
||
|
||
Добавьте новую строку для вашего скрипта в формате:
|
||
``` bash
|
||
|
||
* * * * * /opt/adminlabs_backup/backup_script.sh
|
||
```
|
||
|
||
Здесь * обозначает минуты, часы, дни месяца, месяцы и дни недели соответственно.
|
||
|
||
|
||
• Примеры различных временных вариаций:
|
||
|
||
1. Каждый день в полночь:
|
||
|
||
0 0 * * * /путь/к/вашему/скрипту
|
||
|
||
|
||
2. Каждый час:
|
||
|
||
0 * * * * /путь/к/вашему/скрипту
|
||
|
||
|
||
3. Каждые 30 минут:
|
||
|
||
*/30 * * * * /путь/к/вашему/скрипту
|
||
|
||
|
||
4. Каждый понедельник в 3 часа ночи:
|
||
|
||
0 3 * * 1 /путь/к/вашему/скрипту
|
||
|
||
|
||
5. Каждый день в 5:30 вечера:
|
||
|
||
30 17 * * * /путь/к/вашему/скрипту
|
||
|
||
|
||
6. Каждые 5 минут:
|
||
|
||
*/5 * * * * /путь/к/вашему/скрипту
|
||
|
||
|
||
7. Каждый первый день месяца в полдень:
|
||
|
||
0 12 1 * * /путь/к/вашему/скрипту
|
||
|
||
|
||
После добавления нужной строки сохраните файл и выйдите из редактора. Cron автоматически применит изменения, и ваш скрипт будет выполняться по заданному расписанию.
|
||
|
||
<h1>▎Лицензия</h1>
|
||
|
||
Этот проект лицензирован под MIT License. Пожалуйста, ознакомьтесь с файлом LICENSE для получения дополнительной информации.
|