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.
[Создание резервной копии sh]
#!/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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment