From 4fe9f8401aa9002336b99d818402c4ee871f25f2 Mon Sep 17 00:00:00 2001 From: stirelshka8 Date: Thu, 23 Jan 2025 20:38:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=B4=20TAR.GZ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backup.ini | 2 +- backup.sh | 99 ++++++++++++++++++++++++++---------------------------- 2 files changed, 48 insertions(+), 53 deletions(-) diff --git a/backup.ini b/backup.ini index 11adea7..956e1d7 100644 --- a/backup.ini +++ b/backup.ini @@ -1,6 +1,6 @@ [Backup] ENABLE_DIRS=true -ENABLE_FILES=true +ENABLE_FILES=false DIRS=/etc,/var/log FILES=/home/user/BashProject/backup.sh,/home/user/jet/restore.sh [FTP] diff --git a/backup.sh b/backup.sh index 63a3f39..a61f435 100755 --- a/backup.sh +++ b/backup.sh @@ -1,6 +1,6 @@ #!/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" # Инициализация логирования @@ -13,45 +13,45 @@ if [ "$EUID" -ne 0 ]; then fi # Проверка наличия необходимых утилит -for cmd in zip ftp; do +for cmd in tar ftp lftp; do if ! command -v "$cmd" &> /dev/null; then echo "Ошибка: Утилита '$cmd' не найдена. Установите её и повторите попытку." exit 1 fi done - get_ini_value() { - local ini_file="$CONFIG_DIR" - local section="$1" - local key="$2" +get_ini_value() { + local ini_file="$CONFIG_DIR" + local section="$1" + local key="$2" - # Найти секцию - local section_found=0 - while IFS= read -r line; do - # Проверка на начало секции - if [[ "$line" == "[$section]" ]]; then - section_found=1 - continue - fi + # Найти секцию + local section_found=0 + while IFS= read -r line; do + # Проверка на начало секции + if [[ "$line" == "[$section]" ]]; then + section_found=1 + continue + fi - # Если секция найдена, ищем ключ - if [[ $section_found -eq 1 ]]; then - # Проверка на конец секции - if [[ "$line" =~ ^[.*]$ ]]; then - break - fi + # Если секция найдена, ищем ключ + if [[ $section_found -eq 1 ]]; then + # Проверка на конец секции + if [[ "$line" =~ ^[.*]$ ]]; then + break + fi - # Проверка на наличие ключа - if [[ "$line" == "$key="* ]]; then - echo "${line#*=}" - return - fi - fi - done < "$ini_file" + # Проверка на наличие ключа + if [[ "$line" == "$key="* ]]; then + echo "${line#*=}" + return + fi + fi + done < "$ini_file" - echo "Ошибка: значение для ключа '$key' в разделе '$section' не найдено." - exit 1 - } + echo "Ошибка: значение для ключа '$key' в разделе '$section' не найдено." + exit 1 +} # Указываем директории и файлы для копирования 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") TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") 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_USER="$(get_ini_value "FTP" "FTP_USER")" FTP_PASS="$(get_ini_value "FTP" "FTP_PASS")" - # Создаем временную директорию mkdir -p "$TEMP_DIR" echo "Создана временная директория: $TEMP_DIR" @@ -100,22 +99,12 @@ else echo "Резервное копирование файлов отключено." fi -# Упаковываем временную директорию в ZIP-архив -zip -r "$ZIP_NAME" "$TEMP_DIR" && echo "Создан ZIP-архив: $(pwd)/$ZIP_NAME" || { echo "Ошибка при создании ZIP-архива."; exit 1; } +# Упаковываем временную директорию в tar.gz архив +tar -czf "$TAR_NAME" -C "$TEMP_DIR" . && echo "Создан tar.gz архив: $(pwd)/$TAR_NAME" || { echo "Ошибка при создании tar.gz архива."; exit 1; } # Проверяем наличие файлов -if [[ ! -f "$ZIP_NAME" ]]; then - echo "Файл $ZIP_NAME не найден." - exit 1 -fi - -if [[ ! -f "$LOG_FILE" ]]; then - echo "Файл $LOG_FILE не найден." - exit 1 -fi -# Проверяем наличие файлов -if [[ ! -f "$ZIP_NAME" ]]; then - echo "Файл $ZIP_NAME не найден." +if [[ ! -f "$TAR_NAME" ]]; then + echo "Файл $TAR_NAME не найден." exit 1 fi @@ -124,21 +113,27 @@ if [[ ! -f "$LOG_FILE" ]]; then exit 1 fi +# Загружаем файлы на FTP-сервер lftp -u "$FTP_USER","$FTP_PASS" "$FTP_SERVER" < ftp_log.txt 2>&1 set ssl:verify-certificate no -put "$(pwd)/$ZIP_NAME" +put "$(pwd)/$TAR_NAME" put "$(pwd)/$LOG_FILE" bye EOF -# Проверка статуса выполнения +# Проверка статуса выполнения FTP команды if [ $? -ne 0 ]; then - echo "$FTP_USER $FTP_PASS $FTP_SERVER" - echo "Ошибка при выполнении FTP команды" + echo "Ошибка при выполнении FTP команды." exit 1 fi -# Удаляем временную директорию и ZIP-архив +# Удаление временной директории и архива после завершения работы скрипта rm -rf "$TEMP_DIR" -rm "$ZIP_NAME" +rm "$TAR_NAME" rm "$LOG_FILE" + +echo "Временная директория $TEMP_DIR удалена." +echo "Архив $TAR_NAME удален." +echo "Лог-файл $LOG_FILE удален." + +echo "Резервное копирование завершено успешно."