backup-server-ftp/README.md

180 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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 для получения дополнительной информации.