▎Описание

Этот скрипт предназначен для автоматизации процесса резервного копирования файлов и директорий на удаленный FTP-сервер. Он поддерживает отправку уведомлений о статусе резервного копирования через Telegram и Gotify.

▎Функциональные возможности

• Чтение конфигурации: Скрипт загружает параметры из файла backup.ini, который содержит настройки для резервного копирования и отправки уведомлений. • Проверка наличия необходимых утилит: Перед выполнением резервного копирования скрипт проверяет наличие необходимых утилит (tar, ftp, lftp, curl). • Создание временной директории: Скрипт создает временную директорию для хранения резервных файлов. • Исключения: Поддержка исключений для файлов и директорий, которые не должны быть включены в резервную копию. • Отправка уведомлений: Возможность отправки уведомлений о статусе резервного копирования через Telegram и Gotify.

Ручная установка

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.

▎Пример файла backup.ini

``` 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] ```

▎Описание переменных

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-сервера

▎Запуск скрипта

Запустите скрипт с правами суперпользователя: ``` bash sudo ./backup_script.sh ```

▎Логирование

Скрипт ведет логирование всех операций в файл, имя которого формируется на основе текущей даты и времени. Логи будут содержать информацию о выполнении операций, а также сообщения об ошибках.

▎Примечание

• Убедитесь, что у вас есть права доступа на чтение файлов и директорий, которые вы хотите сохранить. • Не храните чувствительные данные (например, пароли) в открытом виде в файле конфигурации. Рассмотрите возможность использования безопасных методов хранения конфиденциальной информации.

▎Автоматическая установка

• Для автоматической установки используйте выполните команду: ``` 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 автоматически применит изменения, и ваш скрипт будет выполняться по заданному расписанию.

▎Лицензия

Этот проект лицензирован под MIT License. Пожалуйста, ознакомьтесь с файлом LICENSE для получения дополнительной информации.