Резервная копия linux

Для проведения резервного копирования файлов в linux есть множество способов и инструментов. Всё зависит от постановки задачи. В нашем распоряжении как консольные утилиты, так и графические. Как создание полного бэкапа, так и инкременального. Как сохранение резервной копии на внешний жёсткий диск, так и передача файлов на сервер. Многое из этого уже описывалось, что-то описываться не будет совсем за неименеем возможности проверить инструкцию на практике. Сегодня же захотелось ещё раз вспомнить о rsync, ранее уже вскользь упоминавшемся. Коротко, в виде шпаргалки для себя.

Для начала следует установить rsync. Применительно к дистрибутиву Gentoo Linux выглядит это так:

# emerge -av rsync
net-misc/rsync-3.0.9-r2  USE="acl iconv -ipv6 -static -xattr"

Резервное копирование без отмонтирования разделов

Создание полной резервной копии пользовательского раздела:

# mkdir /home/backup-root
# rsync -PavHx /home/* /home/backup-root/

Разбор аргументов (см. man rsync):

  • -Pav --- "стандартный джентльменский набор": докачка оборванных файлов, сохранение прав доступа/времени;
  • -H --- поддержка жёстких ссылок;
  • -x --- не перескакивать через точки монтирования (если отдельно смонтированы /var, /usr, /boot, нужно будет их отдельно rsync'ать при создании бэкапа либо --exclude 'sys/' --exclude 'proc/' --exclude 'home/*')

Некоторые опции rsync:

  • -v --verbose --- показать подробный вывод
  • -q --quiet --- не показывать сообщения об ошибках
  • -c --checksum --- выполнять проверку контрольных сумм
  • -a --archive --- "архивный" режим. Уже содержит флаги -rlptgoD, не копирует жёсткие ссылки
  • -r --recursive --- копируем рекурсивно
  • -b --backup --- указание на создание бэкапа
  • -l --links --- копирование симлинков
  • -z --compress --- сжатие файлов во время передач
  • --daemon --- запустить как rsync-демон
  • --stats --- выдавать статистику по передаче файлов
  • --progress --- показать % выполнения во время передачи
  • -p, --perms --- сохранять разрешения
  • -g, --group --- сохранять группу
  • -t, --times --- сохранять время
  • -o, --owner --- сохранять владельца (только root)
  • -D, --devices --- сохранять файлы устройств (только root)
  • -S, --sparse --- эффективно обработать фрагментированные файлы
  • --existing --- только обновить те файлы, которые уже существуют
  • --ignore-existing --- пропускать те файлы, которые уже существуют на приёмной стороне
  • --delete --- удалять файлы, которых нет на передающей стороне
  • --delete-excluded --- удалять файлы, которые исключены из списка копирования
  • --delete-after --- удалять после копирования, а не до него
  • -R, --relative --- использовать относительные пути
  • --partial --- сохранять частично переданные файлы
  • --progress --- показать процент выполнения во время передачи
  • -P --- то же, что --partial --progress
  • -H, --hard-links --- сохранять жесткие ссылки
  • -x, --one-file-system --- не выходить за пределы файловой системы

При последующем обновлении бэкапа:

# rsync -PavHx --delete-after /home/* /home/backup-root/

Этот способ отлично подходит для периодического создания копии home-каталога. Запустив всего одну команду, мы можем не терять время на перезагрузку и нам не нужен livecd. Но делать полный бэкап системы этим способом не рекомендуется, лучше воспользоваться утилитой cp.