Переделано под TAR.GZ
This commit is contained in:
parent
d6d48b4980
commit
4fe9f8401a
@ -1,6 +1,6 @@
|
|||||||
[Backup]
|
[Backup]
|
||||||
ENABLE_DIRS=true
|
ENABLE_DIRS=true
|
||||||
ENABLE_FILES=true
|
ENABLE_FILES=false
|
||||||
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]
|
||||||
|
99
backup.sh
99
backup.sh
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
CONFIG_DIR="/home/stirelshka8/BashProject/backup-server-ftp/backup.ini"
|
CONFIG_DIR="backup.ini"
|
||||||
LOG_FILE="backup_log_$(date +"%Y-%m-%d_%H-%M-%S").txt"
|
LOG_FILE="backup_log_$(date +"%Y-%m-%d_%H-%M-%S").txt"
|
||||||
|
|
||||||
# Инициализация логирования
|
# Инициализация логирования
|
||||||
@ -13,45 +13,45 @@ if [ "$EUID" -ne 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверка наличия необходимых утилит
|
# Проверка наличия необходимых утилит
|
||||||
for cmd in zip ftp; do
|
for cmd in tar ftp lftp; do
|
||||||
if ! command -v "$cmd" &> /dev/null; then
|
if ! command -v "$cmd" &> /dev/null; then
|
||||||
echo "Ошибка: Утилита '$cmd' не найдена. Установите её и повторите попытку."
|
echo "Ошибка: Утилита '$cmd' не найдена. Установите её и повторите попытку."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
get_ini_value() {
|
get_ini_value() {
|
||||||
local ini_file="$CONFIG_DIR"
|
local ini_file="$CONFIG_DIR"
|
||||||
local section="$1"
|
local section="$1"
|
||||||
local key="$2"
|
local key="$2"
|
||||||
|
|
||||||
# Найти секцию
|
# Найти секцию
|
||||||
local section_found=0
|
local section_found=0
|
||||||
while IFS= read -r line; do
|
while IFS= read -r line; do
|
||||||
# Проверка на начало секции
|
# Проверка на начало секции
|
||||||
if [[ "$line" == "[$section]" ]]; then
|
if [[ "$line" == "[$section]" ]]; then
|
||||||
section_found=1
|
section_found=1
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Если секция найдена, ищем ключ
|
# Если секция найдена, ищем ключ
|
||||||
if [[ $section_found -eq 1 ]]; then
|
if [[ $section_found -eq 1 ]]; then
|
||||||
# Проверка на конец секции
|
# Проверка на конец секции
|
||||||
if [[ "$line" =~ ^[.*]$ ]]; then
|
if [[ "$line" =~ ^[.*]$ ]]; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверка на наличие ключа
|
# Проверка на наличие ключа
|
||||||
if [[ "$line" == "$key="* ]]; then
|
if [[ "$line" == "$key="* ]]; then
|
||||||
echo "${line#*=}"
|
echo "${line#*=}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done < "$ini_file"
|
done < "$ini_file"
|
||||||
|
|
||||||
echo "Ошибка: значение для ключа '$key' в разделе '$section' не найдено."
|
echo "Ошибка: значение для ключа '$key' в разделе '$section' не найдено."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Указываем директории и файлы для копирования
|
# Указываем директории и файлы для копирования
|
||||||
DIRECTORIES=$(get_ini_value "Backup" "DIRS")
|
DIRECTORIES=$(get_ini_value "Backup" "DIRS")
|
||||||
@ -60,12 +60,11 @@ 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")
|
||||||
TEMP_DIR="/tmp/backup_$TIMESTAMP"
|
TEMP_DIR="/tmp/backup_$TIMESTAMP"
|
||||||
ZIP_NAME="BACKUP_$(hostname)_$TIMESTAMP.zip"
|
TAR_NAME="BACKUP_$(hostname)_$TIMESTAMP.tar.gz"
|
||||||
FTP_SERVER="$(get_ini_value "FTP" "FTP_SERVER")"
|
FTP_SERVER="$(get_ini_value "FTP" "FTP_SERVER")"
|
||||||
FTP_USER="$(get_ini_value "FTP" "FTP_USER")"
|
FTP_USER="$(get_ini_value "FTP" "FTP_USER")"
|
||||||
FTP_PASS="$(get_ini_value "FTP" "FTP_PASS")"
|
FTP_PASS="$(get_ini_value "FTP" "FTP_PASS")"
|
||||||
|
|
||||||
|
|
||||||
# Создаем временную директорию
|
# Создаем временную директорию
|
||||||
mkdir -p "$TEMP_DIR"
|
mkdir -p "$TEMP_DIR"
|
||||||
echo "Создана временная директория: $TEMP_DIR"
|
echo "Создана временная директория: $TEMP_DIR"
|
||||||
@ -100,22 +99,12 @@ else
|
|||||||
echo "Резервное копирование файлов отключено."
|
echo "Резервное копирование файлов отключено."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Упаковываем временную директорию в ZIP-архив
|
# Упаковываем временную директорию в tar.gz архив
|
||||||
zip -r "$ZIP_NAME" "$TEMP_DIR" && echo "Создан ZIP-архив: $(pwd)/$ZIP_NAME" || { echo "Ошибка при создании ZIP-архива."; exit 1; }
|
tar -czf "$TAR_NAME" -C "$TEMP_DIR" . && echo "Создан tar.gz архив: $(pwd)/$TAR_NAME" || { echo "Ошибка при создании tar.gz архива."; exit 1; }
|
||||||
|
|
||||||
# Проверяем наличие файлов
|
# Проверяем наличие файлов
|
||||||
if [[ ! -f "$ZIP_NAME" ]]; then
|
if [[ ! -f "$TAR_NAME" ]]; then
|
||||||
echo "Файл $ZIP_NAME не найден."
|
echo "Файл $TAR_NAME не найден."
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -f "$LOG_FILE" ]]; then
|
|
||||||
echo "Файл $LOG_FILE не найден."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
# Проверяем наличие файлов
|
|
||||||
if [[ ! -f "$ZIP_NAME" ]]; then
|
|
||||||
echo "Файл $ZIP_NAME не найден."
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -124,21 +113,27 @@ if [[ ! -f "$LOG_FILE" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Загружаем файлы на FTP-сервер
|
||||||
lftp -u "$FTP_USER","$FTP_PASS" "$FTP_SERVER" <<EOF > ftp_log.txt 2>&1
|
lftp -u "$FTP_USER","$FTP_PASS" "$FTP_SERVER" <<EOF > ftp_log.txt 2>&1
|
||||||
set ssl:verify-certificate no
|
set ssl:verify-certificate no
|
||||||
put "$(pwd)/$ZIP_NAME"
|
put "$(pwd)/$TAR_NAME"
|
||||||
put "$(pwd)/$LOG_FILE"
|
put "$(pwd)/$LOG_FILE"
|
||||||
bye
|
bye
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Проверка статуса выполнения
|
# Проверка статуса выполнения FTP команды
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "$FTP_USER $FTP_PASS $FTP_SERVER"
|
echo "Ошибка при выполнении FTP команды."
|
||||||
echo "Ошибка при выполнении FTP команды"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Удаляем временную директорию и ZIP-архив
|
# Удаление временной директории и архива после завершения работы скрипта
|
||||||
rm -rf "$TEMP_DIR"
|
rm -rf "$TEMP_DIR"
|
||||||
rm "$ZIP_NAME"
|
rm "$TAR_NAME"
|
||||||
rm "$LOG_FILE"
|
rm "$LOG_FILE"
|
||||||
|
|
||||||
|
echo "Временная директория $TEMP_DIR удалена."
|
||||||
|
echo "Архив $TAR_NAME удален."
|
||||||
|
echo "Лог-файл $LOG_FILE удален."
|
||||||
|
|
||||||
|
echo "Резервное копирование завершено успешно."
|
||||||
|
Loading…
Reference in New Issue
Block a user