Добавлено описание

This commit is contained in:
stirelshka8 2025-01-25 12:40:18 +03:00
parent 1fd4901dbf
commit f88576b917
3 changed files with 90 additions and 0 deletions

70
README.md Normal file
View File

@ -0,0 +1,70 @@
▎Описание скрипта резервного копирования
Этот скрипт предназначен для автоматизации процесса резервного копирования файлов и директорий на удаленный FTP-сервер. Он поддерживает отправку уведомлений о статусе резервного копирования через Telegram и Gotify.
▎Функциональные возможности
• Чтение конфигурации: Скрипт загружает параметры из файла backup.ini, который содержит настройки для резервного копирования и отправки уведомлений.
• Проверка наличия необходимых утилит: Перед выполнением резервного копирования скрипт проверяет наличие необходимых утилит (tar, ftp, lftp, curl).
• Создание временной директории: Скрипт создает временную директорию для хранения резервных файлов.
• Исключения: Поддержка исключений для файлов и директорий, которые не должны быть включены в резервную копию.
• Отправка уведомлений: Возможность отправки уведомлений о статусе резервного копирования через Telegram и Gotify.
▎Установка
1. Убедитесь, что у вас установлены необходимые утилиты:
``` bash
sudo apt-get install tar curl lftp
```
2. Создайте файл конфигурации backup.ini с необходимыми параметрами.
▎Пример файла backup.ini
``` 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]
```
▎Запуск скрипта
Запустите скрипт с правами суперпользователя:
``` bash
sudo ./backup_script.sh
```
▎Логирование
Скрипт ведет логирование всех операций в файл, имя которого формируется на основе текущей даты и времени. Логи будут содержать информацию о выполнении операций, а также сообщения об ошибках.
▎Примечания
• Убедитесь, что у вас есть права доступа на чтение файлов и директорий, которые вы хотите сохранить.
Не храните чувствительные данные (например, пароли) в открытом виде в файле конфигурации. Рассмотрите возможность использования безопасных методов хранения конфиденциальной информации.
▎Лицензия
Этот проект лицензирован под MIT License. Пожалуйста, ознакомьтесь с файлом LICENSE для получения дополнительной информации.

View File

@ -1,6 +1,8 @@
[Backup] [Backup]
ENABLE_DIRS=true ENABLE_DIRS=true
ENABLE_FILES=false ENABLE_FILES=false
SKIP_FILES=
SKIP_DIRS=
DIRS=/etc,/var/log DIRS=/etc,/var/log
FILES=/home/user/BashProject/backup.sh,/home/user/jet/restore.sh FILES=/home/user/BashProject/backup.sh,/home/user/jet/restore.sh
[FTP] [FTP]

View File

@ -92,6 +92,8 @@ get_sent_message() {
# Указываем директории и файлы для копирования # Указываем директории и файлы для копирования
DIRECTORIES=$(get_ini_value "Backup" "DIRS") DIRECTORIES=$(get_ini_value "Backup" "DIRS")
FILES=$(get_ini_value "Backup" "FILES") FILES=$(get_ini_value "Backup" "FILES")
SKIP_FILES=$(get_ini_value "Backup" "SKIP_FILES")
SKIP_DIRS=$(get_ini_value "Backup" "SKIP_DIRS")
ENABLE_DIRS=$(get_ini_value "Backup" "ENABLE_DIRS") ENABLE_DIRS=$(get_ini_value "Backup" "ENABLE_DIRS")
ENABLE_FILES=$(get_ini_value "Backup" "ENABLE_FILES") ENABLE_FILES=$(get_ini_value "Backup" "ENABLE_FILES")
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
@ -105,11 +107,21 @@ FTP_PASS="$(get_ini_value "FTP" "FTP_PASS")"
mkdir -p "$TEMP_DIR" mkdir -p "$TEMP_DIR"
echo "Create temp directory: $TEMP_DIR" echo "Create temp directory: $TEMP_DIR"
# Преобразуем списки исключений в массивы
IFS=',' read -r -a SKIP_FILE_ARRAY <<< "$SKIP_FILES"
IFS=',' read -r -a SKIP_DIR_ARRAY <<< "$SKIP_DIRS"
# Проверка, включено ли резервное копирование директорий # Проверка, включено ли резервное копирование директорий
echo "Enable backup of directories: $ENABLE_DIRS" echo "Enable backup of directories: $ENABLE_DIRS"
if [[ "$ENABLE_DIRS" == "true" ]]; then if [[ "$ENABLE_DIRS" == "true" ]]; then
IFS=',' read -r -a DIR_ARRAY <<< "$DIRECTORIES" IFS=',' read -r -a DIR_ARRAY <<< "$DIRECTORIES"
for DIR in "${DIR_ARRAY[@]}"; do for DIR in "${DIR_ARRAY[@]}"; do
# Проверка на исключение директорий
if [[ " ${SKIP_DIR_ARRAY[@]} " =~ " $DIR " ]]; then
echo "Directory $DIR is in the skip list, skipping."
continue
fi
if [ -d "$DIR" ]; then if [ -d "$DIR" ]; then
cp -r "$DIR" "$TEMP_DIR/" && echo "Copy directory $DIR completed." || echo "Error while copying directory $DIR." cp -r "$DIR" "$TEMP_DIR/" && echo "Copy directory $DIR completed." || echo "Error while copying directory $DIR."
else else
@ -125,6 +137,12 @@ echo "Enable backup of files: $ENABLE_FILES"
if [[ "$ENABLE_FILES" == "true" ]]; then if [[ "$ENABLE_FILES" == "true" ]]; then
IFS=',' read -r -a FILE_ARRAY <<< "$FILES" IFS=',' read -r -a FILE_ARRAY <<< "$FILES"
for FILE in "${FILE_ARRAY[@]}"; do for FILE in "${FILE_ARRAY[@]}"; do
# Проверка на исключение файлов
if [[ " ${SKIP_FILE_ARRAY[@]} " =~ " $FILE " ]]; then
echo "File $FILE is in the skip list, skipping."
continue
fi
if [ -f "$FILE" ]; then if [ -f "$FILE" ]; then
cp "$FILE" "$TEMP_DIR/" && echo "Copy file $FILE completed." || echo "Error while copying file $FILE." cp "$FILE" "$TEMP_DIR/" && echo "Copy file $FILE completed." || echo "Error while copying file $FILE."
else else