backup-server-ftp/README.md
2025-01-28 14:21:43 +03:00

170 lines
7.2 KiB
Markdown
Raw 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-get install tar curl lftp
```
2. Скопируйте файл скрипта .sh и файл конфигурации .ini в директорию /opt/adminlabs_backup.
3. Командой sudo chmod +x backup_script.sh сделайте скрипт исполняемым.
2. Отредактируйте файл конфигурации backup.ini.
<h3>▎Пример файла backup.ini</h1>
``` 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]
```
<h3>▎Описание переменных</h1>
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
curl -O http://files.adminlabs.space/scripts/install_backup.sh && 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 для получения дополнительной информации.