В статье рассматриваются основные инструменты резервного копирования, входящие в состав дистрибутивов ОС ОН Орёл и ОС СН Смоленск:
- инструмент командной строки dd
- инструмент командной строки tar;
- инструмент командной строки rsync;
- графический инструмент luckyBackup;
Кроме перечисленных в этой статье инструментов в состав дистрибутивов входит комплекс резервного копирования и восстановления BACULA. Описание комплекса BACULA, в связи со значительным объёмом информации, представлено в отдельной статье.
Данная статья применима к:
- ОС СН Смоленск 1.6;
- ОС СН Смоленск 1.5;
- ОС СН Ленинград 8.1;
- ОС ОН Орёл 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) на примонтированные устройства.
Создание архива на удалённом компьютере
Инструмент tar не содержит собственных средств для работы через сеть, однако может использоваться совместно с другими инструментами для сетевой работы.
Типичным примерами таких инструментов являются netcat (nc) и tar.
Инструмент Netcat (nc)
Инструмент nc разработан как средство общего назначения для передачи данных через сеть, и позволяет установить простое соединение между двумя машинами.
Сценарий применения (опции tar для простоты не указаны):
На принимающей машине | На передающей машине | Комментарий |
---|---|---|
nc -l 1024 > backup.tar.gz | Запускаем инструмент на принимающей машине. Инструмент слушает сетевой порт номер 1024 и записывает всё полученное в файл backup.tar.gz Далее предположим, что IP-адрес принимающей машины - 192.168.32.97 | |
tar -cvpz / | nc -q 0 192.168.32.97 1024 | На передающей машине запускаем архиватор tar без указания целевого файла архива. | |
После завершения передачи соединение будет закрыто автоматически, на принимающей машине данные будут записаны в указанный файл, и инструмент nc завершит работу. |
С помощью SSH
Более безопасным вариантом является использование SSH. Подробно про настройку SSH и работу с ним можно прочитать в соответствующей статье.
Пример команды:
В примере:
- Инструмент tar применяется без указания целевого файла, и выводит поток данных в стандартный вывод (stdout);
- Стандартный вывод перенаправляется в ssh;
- ssh подключается к удалённому компьютеру и выполняет на удалённом компьютере команду записи в файл;
Восстановление
Пример команд для восстановления файлов из архива:
/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
Восстановление через сеть
С помощью Netcat (nc)
Компьютер, на котором восстанавливаются данные | Компьютер, на котором хранится архив | Комментарий |
---|---|---|
nc -l 1024 | tar -xvpzf - -C /tmp | Запускаем инструмент nc, который слушает порт номер 1024 и передает полученные данные инструменту tar для распаковки. Инструмент tar получает архив через стандартный ввод (stdin) (параметр f с указанием тире вместо имени файла). Параметр --С /tmp указывает распаковывать полученные данные в каталог /tmp | |
cat backup.tar.gz | nc -q 0 10.0.2.2 1024 | Передаем архив через стандатный ввод-вывод иструменту nc для передачи на компьютер с адресом 10.0.2.2 в порт 1024. |
С помощью SSH
Пример команды:
Сценарий проверки корректности работы с мандатными атрибутами
Пример сценария копирования и восстановления с сохранением мандатных атрибутов и проверкой корректности восстановления доступен по ссылке.
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): - После внесения изменений не забыть сохранить профиль ("Профиль" - "Сохранить").