Найти в Дзене
Просто о сложном

Как автоматизировать резервное копирование и спать спокойно

Бэкап — это не папка «копия на всякий случай», а система, которую можно проверить, восстановить и автоматизировать. Показываю, как это сделать — с пояснениями и логами. Пока всё работает — кажется, что резервное копирование не нужно.
Но настоящий сисадмин думает наперёд: «если сегодня ночью сломается диск, я смогу восстановиться?» Автоматизированный бэкап — это не роскошь, а гарантия, что ты спишь спокойно. И если на тебя позвонят в 6 утра, ты не будешь в ужасе искать «где у нас копия». Вот как я это настраиваю: просто, надёжно, с минимальным кодом и максимумом пользы. 1. Что стоит бэкапить Не всё на сервере одинаково важно. Вот приоритеты: 2. Простой .bat для Windows — с пояснениями bat @echo off chcp 65001 >nul rem Получаем дату в формате ГГГГММДД (русская локаль: ДД.ММ.ГГГГ) set "DAY=%date:~0,2%" set "MONTH=%date:~3,2%" set "YEAR=%date:~6,4%" set "BACKUPDATE=%YEAR%%MONTH%%DAY%" rem Пути set "SOURCE=D:\Data" set "BACKUPROOT=E:\Backup" set "DEST=%BACKUPROOT%\Data_%BACKUPDATE%" set "LO

Бэкап — это не папка «копия на всякий случай», а система, которую можно проверить, восстановить и автоматизировать. Показываю, как это сделать — с пояснениями и логами.

Пока всё работает — кажется, что резервное копирование не нужно.
Но настоящий сисадмин думает наперёд:
«если сегодня ночью сломается диск, я смогу восстановиться?»

Автоматизированный бэкап — это не роскошь, а гарантия, что ты спишь спокойно. И если на тебя позвонят в 6 утра, ты не будешь в ужасе искать «где у нас копия».

Вот как я это настраиваю: просто, надёжно, с минимальным кодом и максимумом пользы.

1. Что стоит бэкапить

Не всё на сервере одинаково важно. Вот приоритеты:

  • Документы и файлы — то, что нельзя заново сгенерировать
  • Базы данных — с учётом экспорта, не просто “копировать файл”
  • Конфиги, скрипты, настройки — всё, что сэкономит часы ручной работы
  • Системные образы — в идеале, для полного восстановления машины

2. Простой .bat для Windows — с пояснениями

bat

@echo off

chcp 65001 >nul

rem Получаем дату в формате ГГГГММДД (русская локаль: ДД.ММ.ГГГГ)

set "DAY=%date:~0,2%"

set "MONTH=%date:~3,2%"

set "YEAR=%date:~6,4%"

set "BACKUPDATE=%YEAR%%MONTH%%DAY%"

rem Пути

set "SOURCE=D:\Data"

set "BACKUPROOT=E:\Backup"

set "DEST=%BACKUPROOT%\Data_%BACKUPDATE%"

set "LOGFILE=%BACKUPROOT%\log_%BACKUPDATE%.txt"

rem Создаём папку для бэкапов, если её нет

if not exist "%BACKUPROOT%" (

mkdir "%BACKUPROOT%"

)

rem Запись в лог

echo [%date% %time%] Резервное копирование начато >> "%LOGFILE%"

rem Копирование с помощью robocopy

robocopy "%SOURCE%" "%DEST%" /e /r:3 /w:5 /np /tee /log+:"%LOGFILE%"

rem Проверка кода возврата robocopy

set "RC=%ERRORLEVEL%"

if %RC% LEQ 3 (

echo [%date% %time%] Резервное копирование завершено успешно (код %RC%) >> "%LOGFILE%"

) else (

echo [%date% %time%] ОШИБКА при копировании (код %RC%) >> "%LOGFILE%"

)

exit /b %RC%

Что делает этот скрипт:

  • Создаёт папку с датой — Data_20250522, например
  • Копирует туда всё из D:\Data, включая подкаталоги
  • Создаёт лог-файл: log_20250522.txt
  • Записывает туда время начала, успешное завершение или ошибку

Как использовать:

  1. Сохрани скрипт с расширением .bat, например backup_data.bat
  2. Настрой задание в Планировщике задач:
  • Раз в день, например, в 22:00
  • От имени администратора
  • Убедись, что диск E:\ подключён и доступен
  1. Проверяй логи по мере необходимости — они будут лежать рядом с копиями

Дополнительно — как удалить старые копии (например, старше 14 дней):

Добавь в конец скрипта строку:

bat

forfiles /p "E:\Backup" /s /m "Data_*" /d -14 /c "cmd /c rd /s /q @path"

Что делает:
Удаляет все папки, начинающиеся на Data_, которым больше 14 дней.

3. Проверка и уведомления

Если хочешь, чтобы скрипт отправлял тебе уведомления по почте (например, при ошибке) — это можно сделать через PowerShell или сторонние утилиты (blat, sendEmail, SMTP Mailer).
Но даже простое логирование — уже шаг к надёжности.

4. Альтернатива для Linux — rsync и cron

bash

rsync -a --delete /home/ /mnt/backup/home_$(date +%F)/ >> /var/log/backup.log

Добавь в crontab:

perl

0 2 * * * /home/admin/scripts/backup.sh

Что делает:

  • Сохраняет /home/ в папку с датой
  • Удаляет из копии то, что удалили в оригинале
  • Записывает результат в лог

5. Используй простые правила

  • Никогда не сохраняй бэкап на тот же диск, где оригиналы
  • Храни хотя бы одну копию вне офиса
  • Проверяй, что копии реально восстанавливаются, хотя бы раз в месяц
  • Добавь ротацию: чтобы не забить диск старыми копиями

Учти, что это примеры скриптов, а не универсальное решение. Что бы они работали у тебя - их надо адаптировать под твои папки, названия дисков и задачи.

Вывод

Бэкап — это не про тех, кто боится. Это про тех, кто думает на два шага вперёд.
Автоматизация + логирование = уверенность. Потрать один вечер — и потом не паникуй каждый раз, когда у кого-то что-то «исчезло».

#бэкап #сисадмин #автоматизация #резервноекопирование #надежность