Linux

Как создать полный бэкап системы Linux: подробное руководство

Это руководство поможет вам настроить полное резервное копирование системы Linux, включая все файлы и настройки, с помощью инструментов вроде rsync и tar.

Обновлено 16 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 10+Fedora 35+CentOS 7+

Введение / Зачем это нужно

Резервное копирование системы Linux — это не просто хорошая практика, а необходимость для защиты от аппаратных сбоев, ошибок при обновлениях или вредоносных атак. Полный бэкап позволяет восстановить всю операционную систему, настройки и пользовательские данные в исходное состояние. В этом руководстве вы научитесь создавать надежные копии системы с помощью стандартных инструментов Linux, таких как rsync и tar. После выполнения вы получите готовый бэкап, который можно хранить на внешнем носителе или сетевом хранилище и использовать для восстановления при необходимости.

Требования / Подготовка

Перед началом убедитесь, что у вас есть:

  • Целевой носитель: внешний жесткий диск, USB-накопитель или сетевое хранилище (NFS, Samba) с объемом, превышающим используемое пространство на системе. Рекомендуется запас 20-30% для ротации бэкапов.
  • Права администратора: для доступа к системным файлам и монтирования дисков потребуются права root или sudo.
  • Базовые навыки работы с терминалом: умение выполнять команды и редактировать файлы.
  • Установленные утилиты: rsync, tar, cron (обычно предустановлены в большинстве дистрибутивов). Для dd тоже обычно есть.
  • Стабильное подключение: если используете сетевое хранилище, убедитесь в надежном соединении.

Шаг 1: Подготовка целевого носителя

Сначала подключите и подготовьте диск для хранения бэкапа.

  1. Определите устройство вашего диска с помощью команды lsblk или sudo fdisk -l. Например, внешний диск может отображаться как /dev/sdb1.
  2. Если диск новый или вы хотите переформатировать, создайте файловую систему. Для большинства случаев подойдет ext4:
    sudo mkfs.ext4 /dev/sdX1
    
    Замените sdX1 на ваше устройство.
  3. Создайте точку монтирования, например, /mnt/backup:
    sudo mkdir -p /mnt/backup
    
  4. Смонтируйте диск:
    sudo mount /dev/sdX1 /mnt/backup
    
  5. Для автоматического монтирования после перезагрузки добавьте запись в /etc/fstab. Откройте файл:
    sudo nano /etc/fstab
    
    Добавьте строку (замените UUID или устройство):
    UUID=ваш-uuid /mnt/backup ext4 defaults 0 2
    
    UUID можно узнать через blkid.
  6. Проверьте, что диск смонтирован и имеет достаточно места:
    df -h /mnt/backup
    

Шаг 2: Выбор инструмента резервного копирования

Для полного бэкапа системы есть несколько инструментов, каждый со своими особенностями:

  • rsync: Идеален для инкрементальных копий. Копирует только измененные файлы, экономя время и место. Поддерживает сохранение прав, владельцев и атрибутов. Хорошо подходит для регулярных бэкапов.
  • tar: Создает единый сжатый архив. Прост в использовании, но не поддерживает инкрементальность без дополнительных скриптов. Подходит для разовых полных бэкапов.
  • dd: Копирует полный образ блочного устройства, включая загрузчик и неразмеченные области. Требует много места и времени, а восстановление сложнее. Используйте с осторожностью, только для полного клонирования диска.

В этом руководстве мы сосредоточимся на rsync и tar как наиболее практичных для большинства пользователей. dd рассматривается только для специфических случаев.

Шаг 3: Создание полного бэкапа системы

Вариант A: Использование rsync

rsync позволяет создать полную копию системы с сохранением всех атрибутов, исключая временные и виртуальные файловые системы.

Выполните команду от root:

sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/backup

Опции:

  • -a: архивный режим (сохраняет права, временные метки, символические ссылки).
  • -A: сохраняет ACL (списки контроля доступа).
  • -X: сохраняет расширенные атрибуты (xattr).
  • -v: подробный вывод.
  • --exclude: исключает каталоги, которые не нужно копировать (они генерируются системой динамически или являются точками монтирования).

Процесс может занять время в зависимости от объема данных. Для инкрементальных бэкапов в будущем просто повторите ту же команду — rsync скопирует только изменения.

Вариант B: Использование tar

tar создает сжатый архив всей системы. Это хороший вариант для однократного полного бэкапа.

sudo tar -cvpzf /mnt/backup/full_backup_$(date +%Y-%m-%d).tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /

Опции:

  • -c: создать архив.
  • -v: подробный вывод.
  • -p: сохранять права доступа.
  • -z: сжать с помощью gzip.
  • -f: указать имя файла.
  • --exclude: исключить ненужные каталоги.

Архив будет сохранен с датой в имени, например, full_backup_2026-02-16.tar.gz. Учтите, что создание большого архива может потребовать много времени и временного дискового пространства.

Вариант C: Использование dd (для полного образа диска)

⚠️ Осторожно: dd копирует диск побитно, включая все разделы и загрузчик. Убедитесь, что целевой диск достаточно велик, и вы точно указали устройства. Ошибка может привести к потере данных.

sudo dd if=/dev/sda of=/mnt/backup/system_image.dd bs=64K conv=noerror,sync
  • if: входное устройство (исходный диск, например, /dev/sda).
  • of: выходной файл на целевом носителе.
  • bs: размер блока для ускорения.
  • conv=noerror,sync: продолжать при ошибках чтения, заполнять нулями.

Этот метод создает полный образ, но не позволяет легко извлекать отдельные файлы без монтирования. Для восстановления потребуется записать образ обратно на диск.

Шаг 4: Проверка целостности бэкапа

После завершения копирования обязательно проверьте, что бэкап корректен:

  1. Проверка свободного места на целевом диске:
    df -h /mnt/backup
    

    Убедитесь, что использованное место соответствует ожидаемому.
  2. Для rsync: Запустите команду повторно. Если ничего не изменилось, вывод покажет, что все файлы уже актуальны.
    sudo rsync -aAXn --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/backup
    

    Опция -n (dry-run) покажет, какие файлы были бы скопированы. Если вывод пуст — бэкап синхронизирован.
  3. Для tar: Проверьте содержимое архива:
    tar -tvzf /mnt/backup/full_backup_*.tar.gz | head -20
    

    Это выведет первые 20 файлов. Также можно попробовать распаковать один файл в тестовую директорию:
    sudo tar -xzvf /mnt/backup/full_backup_*.tar.gz /etc/hosts -C /tmp/
    

    Убедитесь, что файл восстановлен корректно.
  4. Для dd: Проверьте контрольную сумму образа (если создавали на исходном диске):
    sudo dd if=/dev/sda bs=64K | md5sum
    sudo dd if=/mnt/backup/system_image.dd bs=64K | md5sum
    

    Суммы должны совпадать, но это долго для больших дисков. Альтернативно, проверьте размер файла:
    ls -lh /mnt/backup/system_image.dd
    

Шаг 5: Настройка автоматизации (опционально)

Чтобы не забывать о регулярных бэкапах, настройте автоматическое выполнение через cron.

  1. Откройте crontab для root:
    sudo crontab -e
    
  2. Добавьте строку для ежедневного инкрементального бэкапа в 2:00 ночи:
    0 2 * * * rsync -aAX --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/backup
    
    Для полного бэкапа раз в месяц можно использовать tar и ротацию файлов. Пример скрипта:
    #!/bin/bash
    BACKUP_DIR="/mnt/backup"
    DATE=$(date +%Y-%m-%d)
    tar -cvpzf $BACKUP_DIR/full_backup_$DATE.tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /
    find $BACKUP_DIR -name "full_backup_*.tar.gz" -mtime +30 -delete  # удалить бэкапы старше 30 дней
    
    Сохраните его как /usr/local/bin/backup_system.sh, дайте права chmod +x, и добавьте в cron:
    0 3 1 * * /usr/local/bin/backup_system.sh
    
    Это запустит полный бэкап 1-го числа каждого месяца в 3:00.

Проверка результата

После настройки убедитесь, что бэкап работает корректно:

  • Для ручного бэкапа: Проверьте наличие файлов на целевом диске. Убедитесь, что ключевые каталоги (/etc, /home, /var) скопированы.
  • Для автоматического: Проверьте логи cron:
    sudo grep CRON /var/log/syslog
    
    Или посмотрите на наличие новых файлов бэкапа в /mnt/backup.
  • Тест восстановления: Попробуйте восстановить один важный файл из бэкапа. Например, для rsync:
    sudo rsync -av /mnt/backup/etc/hosts /tmp/
    
    Сравните исходный и восстановленный файлы.
  • Для tar: Распакуйте тестовый файл, как в Шаге 4.

Если все файлы на месте и восстановление работает, бэкап настроен успешно.

Возможные проблемы

При создании бэкапа системы Linux могут возникнуть следующие трудности:

  • Недостаточно места на целевом диске:

    💡 Совет: Всегда проверяйте свободное место перед началом с помощью df -h. Для полного бэкапа системы требуется место, равное размеру используемых данных. Учтите, что инкрементальные бэкапы с rsync занимают меньше, но первые копии могут быть большими.

  • Ошибки доступа или "Permission denied": Запускайте команды с sudo. Убедитесь, что целевой диск смонтирован с правами записи для root. Проверьте, нет ли проблем с SELinux или AppArmor, которые могут блокировать доступ.
  • Бэкап неполный или пропущенные файлы: Убедитесь, что в командах исключены только ненужные каталоги (/proc, /sys, /tmp и т.д.). Проверьте, что не исключили что-то важное по ошибке. Для rsync используйте опцию -a для сохранения всего.
  • Консистентность данных во время работы системы: Если система активно работает, некоторые файлы (например, базы данных) могут измениться во время копирования, что приведет к несогласованному бэкапу.

    ⚠️ Важно: Для критичных данных остановите сервисы (например, sudo systemctl stop mysql) перед бэкапом или используйте инструменты, поддерживающие снапшоты (LVM, Btrfs, ZFS). Например, для LVM:

    sudo lvcreate --snapshot --name backup_snap --size 1G /dev/vg0/root
    sudo mount /dev/vg0/backup_snap /mnt/snap
    sudo rsync -aAX /mnt/snap/ /mnt/backup/
    sudo umount /mnt/snap
    sudo lvremove -f /dev/vg0/backup_snap
    
  • Проблемы с восстановлением на другом железе: Полный бэкап системы может не загрузиться на другом оборудовании из-за различий в драйверах (особенно проприетарных) или конфигурации загрузчика.

    💡 Совет: Для миграции на другое железо используйте инструменты вроде Clonezilla или создавайте бэкап с учетом аппаратной независимости (например, только /home и /etc). При восстановлении на новую систему может потребоваться переустановка загрузчика (grub-install) и настройка драйверов.

  • Долгое время выполнения: Полный бэкап большой системы может занимать часы. Используйте rsync для последующих копий — он обработает только изменения. Также рассмотрите сжатие в реальном времени (например, с pv и gzip), но это увеличит нагрузку на CPU.
  • Ошибки при работе с сетевыми хранилищами: При монтировании NFS или Samba могут возникать таймауты. Убедитесь в стабильности сети и настройте опции монтирования (например, hard,intr для NFS). Для больших бэкапов используйте rsync с опцией --partial для возобновления прерванных передач.

Часто задаваемые вопросы

Можно ли сделать бэкап системы без остановки сервисов?
Как часто нужно делать резервное копирование системы?
Хватит ли места на внешнем диске для бэкапа?
Можно ли восстановить систему на другое железо?

Полезное

Подготовка целевого носителя
Выбор инструмента резервного копирования
Создание полного бэкапа системы
Проверка целостности бэкапа
Настройка автоматизации (опционально)

Эта статья помогла вам решить проблему?