Резервное копирование Linux-сервера через rsync с сохранением прав и атрибутов!Для многих задач резервного копирования Linux-серверов не нужны сложные системы. rsync позволяет быстро синхронизировать данные, передавая только изменившиеся файлы и сохраняя права доступа, владельцев, группы, символические ссылки, время изменения, ACL и расширенные атрибуты.
Базовый вариант синхронизации:
rsync -av /data/ /backup/data/
Для серверных данных обычно используют расширенный режим:
rsync -aHAX /srv/ /backup/srv/
Ключ -a сохраняет структуру каталогов, права, владельцев, группы, время изменения и символические ссылки. -H сохраняет жёсткие ссылки, -A переносит ACL, а -X сохраняет расширенные атрибуты.
При переносе между серверами важно сохранить исходные UID и GID, чтобы права доступа остались корректными:
rsync -aHAX --numeric-ids -e ssh /srv/ backup@10.0.0.20:/backup/server/
Для зеркального копирования используют параметр --delete. Он удаляет в резервной копии файлы, которых больше нет в источнике, поэтому перед применением стоит проверить изменения:
rsync -aHAX --delete --dry-run --itemize-changes /srv/ /backup/srv/
rsync часто применяется для миграции серверов и переноса больших объёмов данных через SSH:
rsync -aHAX -e ssh /srv/ backup@server:/backup/
Если канал передачи ограничен по скорости, можно задать максимальную пропускную способность:
rsync -aHAX --bwlimit=50M /srv/ backup@server:/backup/
При передаче больших файлов после разрыва соединения можно сохранить частично переданные данные:
rsync -aHAX --partial --progress /images/ backup@server:/backup/images/
Параметр --append-verify следует использовать осторожно. Он подходит для случаев, когда файл только дописывается и не изменяется в уже записанной части.
Для создания нескольких ежедневных копий часто используют --link-dest. Неизменившиеся файлы будут представлены жёсткими ссылками и не займут дополнительное место:
rsync -aHAX --link-dest=/backup/latest /data/ /backup/$(date +%F)/
Пример структуры хранения:
/backup/
├── 2026-08-13/
├── 2026-08-14/
├── 2026-08-15/
└── latest -> 2026-08-15/
После создания новой копии ссылку latest обычно обновляют на последний каталог.
При резервном копировании всей системы обычно исключают виртуальные файловые системы Linux:
rsync -aHAX \
--exclude=/proc \
--exclude=/sys \
--exclude=/dev \
--exclude=/run \
/ /backup/system/
Эти каталоги содержат динамически создаваемые данные ядра и системных подсистем, поэтому их содержимое обычно не копируют.
Автоматический запуск можно настроить через cron:
0 3 * * * /usr/bin/rsync -aHAX --delete --log-file=/var/log/rsync-backup.log /srv/ /backup/srv/
Проверить различия между источником и копией без изменения данных можно через --dry-run:
rsync -aHAX --dry-run /srv/ /backup/srv/
Для проверки содержимого через контрольные суммы используется параметр --checksum:
rsync -aHAX --checksum --dry-run /srv/ /backup/srv/
--checksum выполняет полную проверку содержимого файлов, но требует чтения всех данных и создаёт дополнительную нагрузку, поэтому обычно применяется периодически.
rsync хорошо подходит для миграции серверов, синхронизации каталогов и создания файловых резервных копий. Однако это инструмент синхронизации, а не полноценная backup-система.
🔥 Он не гарантирует согласованное состояние работающих баз данных. Для MySQL, PostgreSQL и других сервисов обычно используют дампы, snapshots файловой системы или предварительную остановку приложения перед копированием. Надёжность резервной копии определяется не фактом её создания, а успешным восстановлением из неё.
🚪
Linux Ready | #практика