Для проведения резервного копирования файлов в 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.