Skip to content

Instantly share code, notes, and snippets.

@Feiron
Created July 30, 2025 10:43
Show Gist options
  • Select an option

  • Save Feiron/09ca8613c2dff14e8370d1aaabc5dbc1 to your computer and use it in GitHub Desktop.

Select an option

Save Feiron/09ca8613c2dff14e8370d1aaabc5dbc1 to your computer and use it in GitHub Desktop.

Revisions

  1. Feiron created this gist Jul 30, 2025.
    39 changes: 39 additions & 0 deletions back.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    #!/bin/bash

    # === НАСТРОЙКИ ===
    BACKUP_DIR="/var/backups/mysite" # Папка для хранения резервных копий
    SITE_DIR="/var/www/mysite" # Папка сайта
    DB_NAME="mydatabase" # Имя базы данных
    DB_USER="dbuser" # Пользователь MySQL
    DB_PASS="dbpassword" # Пароль MySQL
    MAX_BACKUPS=5 # Максимальное количество копий
    DATE=$(date +"%Y-%m-%d_%H-%M-%S")
    BACKUP_NAME="backup_$DATE"
    TMP_DIR="/tmp/site_backup_$DATE"

    # === СОЗДАНИЕ ВРЕМЕННОЙ ПАПКИ И БЭКАПА ===
    mkdir -p "$TMP_DIR"
    mkdir -p "$BACKUP_DIR"

    # Бэкап сайта
    cp -r "$SITE_DIR" "$TMP_DIR/site"

    # Бэкап базы данных (если нужно)
    mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$TMP_DIR/db.sql"

    # Архивация
    tar -czf "$BACKUP_DIR/${BACKUP_NAME}.tar.gz" -C "$TMP_DIR" .

    # Очистка временной папки
    rm -rf "$TMP_DIR"

    # === УДАЛЕНИЕ СТАРЫХ КОПИЙ ===
    cd "$BACKUP_DIR" || exit
    COUNT=$(ls -1 backup_*.tar.gz 2>/dev/null | wc -l)

    if [ "$COUNT" -gt "$MAX_BACKUPS" ]; then
    REMOVE_COUNT=$((COUNT - MAX_BACKUPS))
    ls -1tr backup_*.tar.gz | head -n "$REMOVE_COUNT" | xargs rm -f
    fi

    echo "Резервное копирование завершено: $BACKUP_DIR/${BACKUP_NAME}.tar.gz"