7.2 KiB
▎Описание
Этот скрипт предназначен для автоматизации процесса резервного копирования файлов и директорий на удаленный FTP-сервер. Он поддерживает отправку уведомлений о статусе резервного копирования через Telegram и Gotify.
▎Функциональные возможности
• Чтение конфигурации: Скрипт загружает параметры из файла backup.ini, который содержит настройки для резервного копирования и отправки уведомлений.
• Проверка наличия необходимых утилит: Перед выполнением резервного копирования скрипт проверяет наличие необходимых утилит (tar, ftp, lftp, curl).
• Создание временной директории: Скрипт создает временную директорию для хранения резервных файлов.
• Исключения: Поддержка исключений для файлов и директорий, которые не должны быть включены в резервную копию.
• Отправка уведомлений: Возможность отправки уведомлений о статусе резервного копирования через Telegram и Gotify.
Ручная установка
-
Убедитесь, что у вас установлены необходимые утилиты:
sudo apt-get install tar curl lftp
-
Скопируйте файл скрипта .sh и файл конфигурации .ini в директорию /opt/adminlabs_backup.
-
Командой sudo chmod +x backup_script.sh сделайте скрипт исполняемым.
-
Отредактируйте файл конфигурации backup.ini.
▎Пример файла backup.ini
[SENT]
TELEGRAM_TOKEN=ваш_телеграм_токен
CHAT_ID=ваш_chat_id
GOTIFY_URL=http://ваш_адрес_gotify
GOTIFY_APP_TOKEN=ваш_gotify_app_token
[Backup]
DIRS=/path/to/dir1,/path/to/dir2
FILES=/path/to/file1,/path/to/file2
SKIP_FILES=/path/to/skip_file1,/path/to/skip_file2
SKIP_DIRS=/path/to/skip_dir1,/path/to/skip_dir2
ENABLE_DIRS=true
ENABLE_FILES=true
[FTP]
FTP_SERVER=ftp://ваш_ftp_сервер
FTP_USER=ваш_пользователь
FTP_PASS=ваш_пароль
[END]
▎Описание переменных
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
▎Логирование
Скрипт ведет логирование всех операций в файл, имя которого формируется на основе текущей даты и времени. Логи будут содержать информацию о выполнении операций, а также сообщения об ошибках.
▎Примечание
• Убедитесь, что у вас есть права доступа на чтение файлов и директорий, которые вы хотите сохранить.
• Не храните чувствительные данные (например, пароли) в открытом виде в файле конфигурации. Рассмотрите возможность использования безопасных методов хранения конфиденциальной информации.
▎Автоматическая установка
• Для автоматической установки используйте выполните команду:
curl -O http://files.adminlabs.space/scripts/install_backup.sh && chmod +x install_backup.sh && sudo ./install_backup.sh
• Чтобы добавить выполнение скрипта в cron, вам нужно отредактировать файл crontab. Вот как это сделать:
Откройте терминал.
Введите команду для редактирования crontab:
sudo crontab -e
Добавьте новую строку для вашего скрипта в формате:
* * * * * /opt/adminlabs_backup/backup_script.sh
Здесь * обозначает минуты, часы, дни месяца, месяцы и дни недели соответственно.
• Примеры различных временных вариаций:
-
Каждый день в полночь:
0 0 * * * /путь/к/вашему/скрипту
-
Каждый час:
0 * * * * /путь/к/вашему/скрипту
-
Каждые 30 минут:
*/30 * * * * /путь/к/вашему/скрипту
-
Каждый понедельник в 3 часа ночи:
0 3 * * 1 /путь/к/вашему/скрипту
-
Каждый день в 5:30 вечера:
30 17 * * * /путь/к/вашему/скрипту
-
Каждые 5 минут:
*/5 * * * * /путь/к/вашему/скрипту
-
Каждый первый день месяца в полдень:
0 12 1 * * /путь/к/вашему/скрипту
После добавления нужной строки сохраните файл и выйдите из редактора. Cron автоматически применит изменения, и ваш скрипт будет выполняться по заданному расписанию.
▎Лицензия
Этот проект лицензирован под MIT License. Пожалуйста, ознакомьтесь с файлом LICENSE для получения дополнительной информации.