В статье рассматриваются основные инструменты резервного копирования, входящие в состав дистрибутивов ОС ОН Орёл и ОС СН Смоленск:
- инструмент командной строки dd
- инструмент командной строки tar;
- инструмент командной строки rsync;
- графический инструмент luckyBackup;
По каждому инструменту рассматриваются средства, позволяющие выполнять резервное копирование и восстановление с сохранением всех расширенных атрибутов,
в том числе, для ОС СН Смоленск, с сохранением мандатных (классификационных) меток и флагов аудита.
Данная статья применима к ОС СН Смоленск 1.5, ОС СН Смоленск 1.6, и, в части, не касающейся мандатных атрибутов, к ОС ОН Орёл 2.12
DD
Инструмент командной строки dd является самым простым средством полного резервного копирования.
Инструмент автоматически устанавливается при установке ОС и никаких настроек не требует.
Недостатками инструмента являются:
- избыточность копируемых данных (так как копируется незанятое файлами пространство);
- необходимость размещения копии на отличном от копируемого физическом устройстве;
- необходимость использование дополнительных средств для копирования по сети.
Однако, команда dd весьма удобна для полного копирования дисков или дисковых разделов при переносе системы на новый диск.
Команда для копирования системного раздела диска (обычно при установке ОС с параметрами "по умолчанию" это /dev/sda1) в файл с условным названием /media/not-sda-device/sda.bin:
Пареметр | Значение |
---|---|
if= | Имя входного файла. Если пропущено то читает стандартный ввод. |
of= | Имя выходного файла. Если пропущено то пишет в стандартный вывод. |
bs= | Размер блока. Увеличение размера блока может повысить скорость копирования. tune2fs -l /dev/sda1 | grep Block |
С учетом возможности перенаправления стандартного ввода/вывода команда dd позволяет применять для копирования алгоритмы сжатия или защитного преобразования:
Или, для сжатого файла:
TAR
Инструмент командной строки tar в основном применяется для копирования данных в пределах одного компьютера.
Позволяет скопировать дерево файлов в один файл архива. Позволяет сжать копии с помощью программ архивации.
Для копирования с использованием сети требуется применение дополнительных средств.
Создание архива
Команда для копирования файлов в архив с условным названием /backup.tar.bz2 (файл архива располагается в той же файловой системе):
tar --xattrs --acls -czf backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys --exclude=/parsecfs /
Параметр | Значение |
---|---|
--xattrs | Включить поддержку расширенных атрибутов файлов |
--acls | Включить поддержку списков контроля доступа (POSIX Access Control Lists, ACL) |
-czf | Составной параметр: -с - создать новый архив |
--exclude | Указывает, какие файлы и каталоги копировать не нужно. В частности, обязательно:
|
/ | Последним параметром указывается каталог, который нужно копировать. |
При копировании полные имена файлов будут сохранены в архиве без начального символа "/".
Это сделано:
- из соображений безопасности, чтобы случайное/ошибочное разархивирование не перезаписало корневую файловую систему;
- чтобы файлы можно было восстанавливать из другого экземпляра ОС (например, загрузившись с LiveCD) на примонтированные устройства.
Восстановление
Пример команд для восстановления файлов из архива:
/usr/sbin/execaps -c 0x1000 -- tar --xattrs --xattrs-include=security.{PDPL,AUDIT,DEF_AUDIT} --acls -xzf backup.tar.bz2 -С /
echo 0 > /parsecfs/unsecure_setxattr
Команда/Параметр | |
---|---|
echo 1 > /parsecfs/unsecure_setxattr | Команда, устанавливающая для параметра защиты файловой системы /parsecfs/unsecure_setxattr значение 1, разрешающее применять мандатную привилегию PARSEC_CAP_UNSAFE_SETXATTR (см.ниже). |
/usr/bin/execaps -c 0x1000 | Команда, устанавливающая для команды разархивирования мандатную привилегию PARSEC_CAP_UNSAFE_SETXATTR, позволяющую устанавливать мандатные атрибуты объектов файловой системы без учета мандатных атрибутов родительского объекта-контейнера. Для действия этой этой мандатной привилегии параметр /parsecfs/unsecure_setxattr должен быть установлен в значение 1. |
-- | Параметр указывает, что следующим параметром является выполняемая команда. |
tar | Собственно, команда разархивирования, которая будет выполнена с мандатной привилегией PARSEC_CAP_UNSAFE_SETXATTR |
--xattrs | Включить поддержку расширенных атрибутов файлов |
--xattrs-include=security.{PDPL,AUDIT,DEF_AUDIT} | Задаёт шаблоны включаемых расширенных атрибутов |
--acls | Включить поддержку списков контроля доступа (POSIX Access Control Lists, ACL) |
-xzf | Составная команда: -x - извлечь файлы из архива |
-C / | Указывает, что перед началом разархивирования нужно перейти в корневой каталог (каталог "/"). |
echo 0 > /parsecfs/unsecure_setxattr | Команда восстанавливает запрет на применение мандатной привилегии PARSEC_CAP_UNSAFE_SETXATTR (настройка ОС СН Смоленск по умолчанию). |
то необходимо использовать дополнительную опцию --numeric-owner, запрещающую перепроверять имена пользователей/групп и изменять их числовые идентификаторы в соответствии с действующим в используемой системе.
После переноса с помощью tar содержимого загрузочного диска на другой диск требуется восстановить системный загрузчик grub. Для этого:
- примонтировать восстанавливаемый диск, например в каталог /mnt
выполнить следующие команды, указав при выполнении команды dpkg-reconfigure grub-pc диск, с которого должна выполняться загрузка:
sudo -s
for f in dev dev/pts proc ; do mount --bind /$f /mnt/$f ; done
chroot /mnt
dpkg-reconfigure grub-pc
exit
Сценарий проверки корректности работы с мандатными атрибутами
Пример сценария копирования и восстановления с сохранением мандатных атрибутов и проверкой корректности восстановления доступен по ссылке.
RSYNC
Инструмент rsync является наиболее сложным инструментом и включает в свой состав инструмент rsync и службу rsync.service, обеспечивающую удаленный доступ для копирования.
Может применяться для локального и удалённого копирования.
В отличие от tar, копирует дерево файлов в дерево файлов и не позволяет сжать полученные копии.
Пакет не устанавливается по умолчанию при установке ОС, однако он входит в зависимости многих других пакетов (например, системы контроля версий git и subversion, система резервного копирования luckyBackup, система контейнеров виртуализации LXC), поэтому может быть установлен автоматически при их установке.
Инструмент обеспечивает очень много возможностей, в том числе:
- распараллеливание операций при копировании;
- сжатие при копировании по сети;
- инкрементное копирование, в том числе копирование только изменённых частей файлов;
- копирование удалений файлов;
- возобновление прерванного копирования;
- сохранение нескольких "снимков"
При автоматической установке служба rsync.service также устанавливается, но автоматически не запускается и требует настройки.
Несмотря на отсутствие запущенной службы rsync.service, удалённое копирование по сети можно выполнять через SSH.
Создание копии
По аналогии с примером для инструмента tar, пример локального копирования корневой файловой системы в каталог /backup:
Параметр | Значение |
---|---|
-a | Параметр, задающий режим архивирования. -r - рекурсивное копирование дерева файлов |
--xattrs -X | Включить поддержку расширенных атрибутов файлов |
--acls -A | Включить поддержку списков контроля доступа (POSIX Access Control Lists, ACL) |
--exclude | Исключить объекты из копирования. В частности, исключить из копирования необходимо сам каталог архива. |
/ | Источник данных для копирование (в данном случае - корневой каталог) |
/backup | Объект, в который осуществляется копирование |
Правила задания имён каталогов.
Рассмотрим два каталога SRC и DST, причем SRC содержит подкаталог SUB (т.е. SRC/SUB/) и сравним варианты копирования.
При использовании простой команды копирования cp разницы в результатах работы между командами cp -a SRC DST и cp -a SRC/ DST не будет: будет создана структура DST/SRC/SUB.
Однако результатом команды rsync -a SRC DST будет DST/SRC/SUB
а результатом команды rsync -a SRC/ DST будет DST/SUB.
Разница между командами - в символе '/' в конце имени каталога-источника.
Простейший пример для удалённого копирования отличается только объектом, в который осуществляется копирование (в примере - копирование с использованием ssh на хост host.astradomain.ru под именем пользователя admin в каталог ~admin/backup/):
При этом автоматически используются алгоритмы защитного преобразования данных, встроенные в SSH.
При таком копировании атрибуты доступа к копиям будут установлены неверно, копии будут принадлежать пользователю admin на компьютере-получателе, мандатные атрибуты установлены не будут.
Более продвинутый пример удалённого копирования:
- вызов rsync от имени и с правами суперпользоваетеля (sudo), что позволяет выставлять на удалённом компьютере любые атрибуты создаваемым файлам-копиям;.
- вызов rsync с параметром --fake-super, разрешающим выставлять создаваемым файлам-копиям атрибуты исходных файлов независимо от валидности этих атрибутов в целевой ОС.
Восстановление
Для восстановления достаточно выполнить команду, поменяв местами источник и назначение (и не забыв установить привилегию на изменение мандатных атрибутов, подробности см. в примере к инструменту tar):
/usr/sbin/execaps -c 0x1000 -- sudo rsync -a --xattrs --acls /backup/ /
echo 0 > /parsecfs/unsecure_setxattr
Сценарий проверки корректности работы с мандатными атрибутами
Пример сценария копирования и восстановления с сохранением мандатных атрибутов и проверкой корректности восстановления доступен по ссылке.
Настройка и применение rsync.service
использовать эту службу следует с осторожностью:
либо в доверенной защищенной сети, либо для передачи данных, уже подвергнутых защитному преобразованию.
В принципе, для решения большинства задач копирования достаточно изложенных выше приёмов работы через SSH без использования rsync.service.
Служба rsync.service может оказаться полезна:
- для копирования очень больших объёмов информации, так как сервер rsync.service может локально определить, какую информацию копировать;
- для работы со слабыми процессорами, так как отсутствие шифрования снижает нагрузку на процессор (хотя, при необходимости, шифрование можно отключить и при использовании ssh)
Однако, возможно, в указанных ситуациях разумнее воспользоваться сервисом резервного копирования Bacula (описание см. в отдельной статье)
Для использования rsync.service следует:
- Разрешить запуск службы, заменив в файле /etc/default/rsync значение параметра
RSYNC_ENABLE=false
на
RSYNC_ENABLE=true Создать и заполнить файл конфигурации /etc/rsyncd.conf, например:
max connections = 10
exclude = lost+found/ /tmp/
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 *.rar *.7z *.mp3 *.jpg
[data1]
path = /data1/
comment = Public folders
read only = yes
list = yes
auth users = rsync_d1
secrets file = /etc/rsyncd.scrt
hosts allow = localhost 192.168.32.96 192.168.32.97
hosts deny = *где:
max connections = 10 Максимальное количество одновременных подключений exclude = lost+found/ /tmp/ Список каталогов, которые не нужно копировать dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 *.rar *.7z *.mp3 *.jpg Список файлов, которые не нужно сжимать при передаче (которые уже сжаты) [data1] Заголовок описания секции данных (таких секций может быть несколько) path = /data1/ Путь к месту хранения данных comment = Public folders Комментарий read only = yes Запрет на переписывание данных list = yes Разрешение на просмотр каталога данных auth users = user1 user2 Список авторизованных пользователей secrets file = /etc/rsyncd.scrt Файл с именами и паролями hosts allow = localhost 192.168.32.96 192.168.32.97 Список адресов, с которых разрешен доступ hosts deny = * Список адресов, с которых доступ запрещен Подробное описание параметров конфигурации rsync.service доступно по сслыке.
Создать файл с адресами и паролями (в данном примере - /etc/rsyncd.scrt):
user1:password1
user2:password2
backup:password3В целях безопасности рекомендуется ограничить доступ к этому файлу:
chmod 600 /etc/rsyncd.scrtЗапустить сервис:
service rsync startДоступ к серверу rsync осуществляется точно так же, как и доступ через SSH, единственное различие - в использовании "двойного двоеточия", указывающего, что нужно использовать протокол rsync:
rsync -a user1@host.astradomain.ru::data1 /tmp/
luckyBackup
Представляет собой графический интерфейс к инструменту rsync.
По умолчанию не устанавливается, и может быть установлен с помощью графического менеджера пакетов или из командной строки:
При первом запуске рекомендуется установить русский язык ("Settings" - "Language"):
Инструмент поддерживает все возможности rsync, и предоставляет возможность :
- проверка синтаксической и логической корректности заданных параметров rsync;
- тестовое (dry-run, "холостое") выполнение команды копирования с проверкой корректности заданных параметров.
Подключение работы с мандатными атрибутами
Для включения в инструменте luckyBackup работы с мандатными атрибутами:
- Создать новую задачу (кнопка "Добавить"):
- Перейти в установку расширенных параметров (Кнопка "Расширенный"):
- Выбрать закладку "Опции" (возможно, для этого придётся развернуть окно на весь экран):
- В нижней части выбрать закладку "Заданные пользователем" и указать там нужные параметры
(каждый параметр указывается в отдельной строке, для примера указаны краткие формы ранее описанных параметров --xattrs и --acls): - После внесения изменений не забыть сохранить профиль ("Профиль" - "Сохранить").