Go to file
2025-02-18 10:48:21 +00:00
backup.ini Добавлено удаление старых архивов 2025-02-18 13:47:23 +03:00
backup.sh Добавлено удаление старых архивов 2025-02-18 13:47:23 +03:00
install_backup.sh Исправлен скрипт установки 2025-02-09 17:30:31 +03:00
LICENSE Добавить LICENSE 2025-01-25 09:42:06 +00:00
README.md Обновлено описание 2025-02-09 19:18:53 +03:00

▎Описание

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

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

• Чтение конфигурации: Скрипт загружает параметры из файла backup.ini, который содержит настройки для резервного копирования и отправки уведомлений.

• Проверка наличия необходимых утилит: Перед выполнением резервного копирования скрипт проверяет наличие необходимых утилит (tar, ftp, lftp, curl).

• Создание временной директории: Скрипт создает временную директорию для хранения резервных файлов.

• Исключения: Поддержка исключений для файлов и директорий, которые не должны быть включены в резервную копию.

• Отправка уведомлений: Возможность отправки уведомлений о статусе резервного копирования через Telegram и Gotify.

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

  1. Убедитесь, что у вас установлены необходимые утилиты для выполнения скрипта, в противном случае установите командой:

    sudo apt install tar curl lftp jq -y
    
  2. Скопируйте файл скрипта .sh и файл конфигурации .ini в директорию /opt/adminlabs_backup.

  3. Командой sudo chmod +x backup_script.sh сделайте скрипт исполняемым.

  4. Отредактируйте файл конфигурации backup.ini.

▎Пример файла backup.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-сервера

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

Запустите скрипт с правами суперпользователя:

sudo ./backup_script.sh

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

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

▎Примечание

• Убедитесь, что у вас есть права доступа на чтение файлов и директорий, которые вы хотите сохранить.

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

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

• Для автоматической установки используйте выполните команду:

sudo curl -O http://files.adminlabs.space/scripts/install_backup.sh && sudo chmod +x install_backup.sh && sudo ./install_backup.sh

• Чтобы добавить выполнение скрипта в cron, вам нужно отредактировать файл crontab. Вот как это сделать:

Откройте терминал.

Введите команду для редактирования crontab:

sudo crontab -e

Добавьте новую строку для вашего скрипта в формате:


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