Добавлено описание
This commit is contained in:
parent
1fd4901dbf
commit
f88576b917
70
README.md
Normal file
70
README.md
Normal 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 для получения дополнительной информации.
|
@ -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]
|
||||||
|
18
backup.sh
18
backup.sh
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user