Команда rm -rf, выполненная не в том каталоге, или вышедший из строя диск способны уничтожить месяцы работы за секунды — и в Linux нет «корзины» для файлов, удалённых из терминала. Именно поэтому резервное копирование в Linux стоит настроить до того, как что-то пойдёт не так, а не после. Система предоставляет для этого богатый арсенал: от классических утилит командной строки до графических инструментов снимков системы.
В этом руководстве разберём основные инструменты резервного копирования — rsync, tar, dd и Timeshift, покажем, как автоматизировать создание бэкапов через cron, и объясним, как восстановить систему или отдельные файлы после сбоя. Материал подходит для большинства популярных дистрибутивов: Ubuntu, Debian, Fedora, Arch и их производных.
Что копировать: стратегия 3-2-1 и выбор данных
Прежде чем запускать команды, определите, что именно нужно защищать. В Linux личные данные пользователя сосредоточены в /home, системные настройки — в /etc, а конфигурации веб-серверов и баз данных — обычно в /var. Копировать весь корневой раздел целиком нужно далеко не всегда: каталоги /proc, /sys, /dev и /tmp содержат виртуальные и временные данные, которые не имеет смысла включать в архив.
Устойчивой практикой считается правило 3-2-1: храните минимум три копии данных, на двух разных носителях, одна из которых находится вне основного устройства — на внешнем диске, сетевом хранилище (NAS) или удалённом сервере. Одна копия на том же физическом диске не защитит ни от отказа накопителя, ни от шифровальщика.
- 🏠 /home — документы, фото, настройки приложений пользователя
- ⚙️ /etc — системные конфигурации: сеть, пользователи, службы
- 🗄️ Список установленных пакетов — ускорит развёртывание системы с нуля
- 💾 Загрузочные разделы и таблица разделов — для полного восстановления диска
Копирование файлов с помощью rsync
rsync — основной инструмент файлового бэкапа в Linux. Его ключевое преимущество — инкрементальность: при повторных запусках копируются только изменённые файлы, что сокращает время и нагрузку на диск. Утилита входит в стандартные репозитории практически всех дистрибутивов и устанавливается командой sudo apt install rsync (в Debian/Ubuntu) или аналогичной для вашего пакетного менеджера.
Типовая команда для копирования домашнего каталога на внешний диск выглядит так:
rsync -aHAX --delete --progress /home/ /mnt/backup/home/
Здесь -a включает архивный режим (сохранение прав, владельцев, символических ссылок), -HAX сохраняет жёсткие ссылки, ACL и расширенные атрибуты, а --delete удаляет в копии файлы, исчезнувшие из источника — так копия остаётся точным зеркалом. Обратите внимание на завершающий слэш в пути источника: /home/ означает «содержимое каталога», а без слэша скопируется сам каталог.
⚠️ Внимание: опция--deleteбезвозвратно удаляет файлы в каталоге назначения. Если вы случайно укажете пустой или неверный источник, rsync «отзеркалирует» его и сотрёт существующий бэкап. Перед первым запуском проверьте команду с флагом--dry-run— он покажет список действий без их выполнения.
Для копирования на удалённый сервер rsync умеет работать поверх SSH: rsync -aHAX /home/ user@server:/backups/home/. Это удобный способ реализовать внешнюю копию из правила 3-2-1 без дополнительного ПО.
Архивация через tar и посекторные копии dd
Утилита tar упаковывает каталоги в единый архив, который удобно хранить или передавать. Для создания сжатого архива домашнего каталога выполните:
sudo tar -cvpzf backup-home.tar.gz --exclude=/home/user/.cache /home
Флаг -p сохраняет права доступа, что критично при архивации системных каталогов. Распаковка выполняется командой sudo tar -xvpzf backup-home.tar.gz -C /. Архивы tar хорошо подходят для «холодного» хранения, но в отличие от rsync не позволяют быстро извлечь один файл без просмотра архива и не обновляются инкрементально без дополнительных ухищрений.
Отдельный класс задач решает dd — посекторное копирование диска или раздела в образ: sudo dd if=/dev/sda of=/mnt/backup/disk.img bs=4M status=progress. Такой образ содержит всё, включая загрузчик и таблицу разделов, и позволяет вернуть диск в исходное состояние целиком. Минус очевиден: образ занимает объём всего диска, а не только занятого пространства, и не даёт доступа к отдельным файлам без монтирования.
⚠️ Внимание: dd не прощает ошибок в параметрахif=иof=. Перепутанные местами источник и назначение приведут к затиранию рабочего диска. Перед запуском проверьте имена устройств командойlsblkи убедитесь, что целевой диск не смонтирован в систему.
Как сократить размер образа dd
Перед созданием образа можно заполнить свободное место диска нулями (например, командой dd if=/dev/zero of=/zero.tmp с последующим удалением файла) — тогда сжатие образа через gzip будет заметно эффективнее: dd if=/dev/sda bs=4M | gzip > disk.img.gz
Снимки системы с Timeshift
Если вам нужна защита именно системы, а не пользовательских файлов — например, перед обновлением дистрибутива или экспериментами с драйверами — подойдёт Timeshift. Программа создаёт снимки системных файлов, используя rsync с жёсткими ссылками либо возможности файловой системы Btrfs, и умеет откатывать систему к выбранной точке прямо из графического интерфейса или из режима восстановления.
По умолчанию Timeshift исключает содержимое /home пользователей — это осознанное решение: откат системы не должен затирать ваши документы. Поэтому Timeshift дополняет файловый бэкап через rsync, а не заменяет его. Установка в Ubuntu и производных выполняется командой sudo apt install timeshift, при первом запуске мастер предложит выбрать тип снимков, расписание и место хранения.
Автоматизация бэкапов через cron
Резервная копия, которую нужно делать вручную, рано или поздно перестаёт делаться. Планировщик cron решает эту проблему: откройте редактор заданий командой crontab -e и добавьте строку расписания. Например, ежедневное копирование в 3 часа ночи:
0 3 * rsync -aHAX --delete /home/ /mnt/backup/home/ >> /var/log/backup.log 2>&1
Формат расписания cron состоит из пяти полей: минута, час, день месяца, месяц, день недели. Перенаправление вывода в лог-файл позволит позже проверить, отработала ли задача и не было ли ошибок доступа к внешнему диску. Для системных каталогов вроде /etc задание добавляется в crontab суперпользователя через sudo crontab -e.
☑️ Проверка автоматического бэкапа
Проверить, что задание действительно выполняется, можно двумя способами: просмотреть лог на следующий день после настройки и сравнить дату изменения файлов в каталоге бэкапа командой ls -la /mnt/backup/home/. Если лог пуст, убедитесь, что служба cron запущена: systemctl status cron (в некоторых дистрибутивах служба называется crond).
Восстановление файлов и системы после сбоя
Восстановление — зеркальная операция копирования. Для rsync достаточно поменять местами источник и назначение: rsync -aHAX /mnt/backup/home/ /home/. Отдельный файл проще скопировать обычной командой cp из каталога бэкапа. Из архива tar один файл извлекается так: tar -xvpzf backup-home.tar.gz home/user/document.odt — путь внутри архива указывается без ведущего слэша.
При полном отказе системы порядок действий иной. Загрузитесь с Live USB вашего дистрибутива, примонтируйте разделы восстанавливаемого диска и диск с бэкапом, затем скопируйте данные обратно через rsync. Если восстанавливается системный раздел, после копирования потребуется переустановить загрузчик — для систем с GRUB это обычно делается через chroot в восстановленную систему и команду grub-install с последующим update-grub. Точные шаги зависят от дистрибутива и схемы загрузки (UEFI или Legacy), поэтому сверяйтесь с документацией вашей системы.
Образ dd разворачивается обратной командой с Live USB: sudo dd if=/mnt/backup/disk.img of=/dev/sda bs=4M status=progress. Целевой диск должен быть не меньше исходного, иначе восстановление оборвётся с ошибкой нехватки места.
| Инструмент | Тип копии | Инкрементальность | Лучшее применение |
|---|---|---|---|
| rsync | Файлы и каталоги | Да | Регулярный бэкап /home и /etc |
| tar | Архив | Нет | Разовые архивы, передача данных |
| dd | Образ диска | Нет | Клонирование диска целиком |
| Timeshift | Снимок системы | Да | Откат после неудачных обновлений |
Проверка бэкапов: почему копия без теста — не копия
Главная ошибка в резервном копировании — ни разу не проверить, что копия реально восстанавливается. Непроверенный бэкап может оказаться битым, пустым или неполным именно в момент, когда он понадобится. Периодически выполняйте контрольное восстановление: выберите несколько файлов из копии, восстановите их во временный каталог и убедитесь, что они открываются.
Для архивов tar целостность проверяется просмотром содержимого без распаковки: tar -tzf backup-home.tar.gz > /dev/null — ошибки чтения будут выведены в терминал. Для rsync полезен запуск с флагом -n --itemize-changes: если между источником и копией есть расхождения, они отобразятся в выводе. Внешний диск с бэкапами также стоит время от времени проверять на ошибки файловой системы штатными средствами вроде fsck (только на размонтированном разделе).
Часто задаваемые вопросы
Как часто нужно делать резервные копии?
Ориентируйтесь на объём данных, которые вы готовы потерять. Если день работы — критично, настройте ежедневный бэкап через cron; для редко меняющихся файлов достаточно еженедельного копирования. Инкрементальный rsync делает частые копии быстрыми, поэтому ежедневное расписание — разумный выбор по умолчанию.
Достаточно ли Timeshift для полной защиты данных?
Нет. Timeshift по умолчанию исключает пользовательские каталоги и защищает только системные файлы. Для документов, фото и проектов нужен отдельный файловый бэкап — например, через rsync на внешний диск или удалённый сервер.
Можно ли восстановить удалённый файл без бэкапа?
Иногда — с помощью утилит восстановления данных вроде TestDisk или PhotoRec, но результат не гарантирован и зависит от того, были ли перезаписаны данные. После случайного удаления сразу прекратите запись на диск. Однако надёжной заменой резервному копированию такие инструменты не являются.
Куда лучше сохранять бэкапы: на внешний диск или в облако?
Оптимально — и туда, и туда, следуя правилу 3-2-1. Внешний диск обеспечивает быстрое восстановление больших объёмов, удалённое хранилище защищает от локальных рисков: кражи, пожара, выхода из строя всех дисков одновременно. Для удалённых копий rsync поверх SSH — простое и проверенное решение.
Нужно ли копировать весь корневой раздел?
Обычно нет. Каталоги /proc, /sys, /dev, /run и /tmp — виртуальные или временные, их копирование бессмысленно и может вызвать ошибки. Для переустановки системы достаточно бэкапа /etc, /home и списка установленных пакетов; полный образ раздела через dd оправдан, когда нужна точная копия диска со всеми настройками.