Предупреждение |
---|
Рассмотренные в данной статье инструменты неприменимы для резервного копирования содержимого действующих (изменяющихся) баз данных, так как не гарантируют целостность полученной копии. Для резервного копирования содержимого баз данных следует использовать инструменты, поставляемые с СУБД. |
Оглавление |
---|
В статье рассматриваются основные инструменты резервного копирования, входящие в состав дистрибутивов ОС Astra Linux:
- инструмент командной строки dd;
- инструмент командной строки tar;
- инструмент командной строки rsync;
- графический инструмент luckyBackup.
Информация |
---|
Кроме перечисленных в этой статье инструментов в состав дистрибутивов входит комплекс резервного копирования и восстановления BACULA. Описание комплекса BACULA, в связи со значительным объемом информации, представлено в отдельной статье. |
Информация |
---|
Данная статья применима к:
|
Информация |
---|
Для каждого из перечисленных инструментов далее приводятся способы создания резервных копий и восстановления из них. При этом обеспечивается сохранение расширенных атрибутов, в том числе меток безопасности и флагов аудита. |
Предупреждение |
---|
Далее в примерах подразумевается, что все действия по резервному копированию и восстановлению выполняются с правами суперпользователя (для Astra Linux Special Edition - в сессии суперпользователя с высоким уровнем целостности). |
DD
Инструмент командной строки dd является самым простым средством полного резервного копирования.
Инструмент автоматически устанавливается при установке ОС и никаких настроек не требует.
Недостатками инструмента являются:
- избыточность копируемых данных (так как копируется пустое, не занятое файлами, пространство);
- необходимость размещения копии на отличном от копируемого физическом устройстве;
- необходимость использования дополнительных средств для копирования по сети.
Однако, команда dd весьма удобна для полного копирования дисков или дисковых разделов при переносе системы на новый диск, а также широко применяется для создания загрузочных накопителей из файлов с образами.
Команда для копирования системного раздела диска (обычно при установке ОС с параметрами "по умолчанию" это раздел /dev/sda1) в файл с условным названием /media/not-sda-device/sda.bin:
Command |
---|
sudo dd if=/dev/sda1 of=/media/not-sda1-device/sda1.bin bs=4096 |
Параметр | Значение | ||
---|---|---|---|
if | Имя входного файла. Если пропущено то читает стандартный ввод. | ||
of | Имя выходного файла. Если пропущено то пишет в стандартный вывод. | ||
bs | Размер блока. Увеличение размера блока может повысить скорость копирования.
|
С учетом возможности перенаправления стандартного ввода/вывода команда dd позволяет применять для копирования алгоритмы сжатия или защитного преобразования:
Command |
---|
sudo dd if=/dev/sda1 bs=4096 | sudo gzip > /media/not-sda1-device/sda1.bin.gz |
Команда для восстановления системного раздела диска (для этого потребуется загрузиться с отдельного диска, и примонтировать носитель, на котором был размещен файл с образом):
Command |
---|
sudo dd if=/media/mountpoint/sda1.bin of=/dev/sda1 bs=4096 |
Или, для сжатого файла:
Command |
---|
sudo gzip -dc /media/not-sda1-device/sda1.bin.gz | sudo dd of=/dev/sda1 bs=4096 |
Полученный с помощью инструмента dd файл с образом дискового раздела (не подвергнутый сжатию или защитному преобразованию) может быть примонтирован и использоваться как обычный дисковый раздел:
Command |
---|
sudo mount -o loop /media/mountpoint/sda1.bin /mnt |
TAR
Инструмент командной строки tar в основном применяется для копирования данных в пределах одного компьютера.
Позволяет скопировать дерево файлов в один файл архива. Позволяет сжать копии с помощью программ архивации.
Для копирования с использованием сети требуется применение дополнительных средств.
Создание архива
Команда для копирования полного дерева файловых объектов в архив с условным названием /backup.tar.gz (файл архива располагается в той же файловой системе):
Command |
---|
sudo tar --xattrs --acls -czf backup.tar.gz \ |
Значения параметров:
Параметр | Значение |
---|---|
--xattrs | Включить поддержку расширенных атрибутов файлов |
--acls | Включить поддержку списков контроля доступа (POSIX Access Control Lists, ACL) |
-czf | Составной параметр: -с - создать новый архив |
--exclude | Указывает, какие файлы и каталоги копировать не нужно. В частности, обязательно:
|
/ | Последним параметром указывается каталог, который нужно копировать. |
Информация |
---|
Дополнительно можно рекомендовать использовать для архивирования параметр архивирования -S (или --sparse). Этот параметр включает проверку архивируемых файлов на "разреженность" (sparse). Применение этого параметра несколько замедляет работу, однако помогает избежать ситуаций, когда сделанный архив невозможно распаковать из-за превращения "разреженных" файлов в обычные файлы огромного размера. |
Предупреждение |
---|
При копировании полные имена файлов будут сохранены в архиве без начального символа "/".
|
Информация |
---|
С архивами tar можно работать с помощью инструмента Midnight Commander, который автоматически устанавливается при установке всех версий Astra Linux. |
Создание архива на удалённом компьютере
Инструмент tar не содержит собственных средств для работы через сеть, однако может использоваться совместно с другими инструментами для сетевой работы.
Типичным примерами таких инструментов являются netcat (nc) и tar.
Инструмент Netcat (nc)
Инструмент nc разработан как средство общего назначения для передачи данных через сеть, и позволяет установить простое соединение между двумя машинами.
Предупреждение |
---|
Использовать данный способ рекомендуется с осторожностью, так как инструмент nc не поддерживает защитное преобразование данных и авторизацию. |
Сценарий применения (опции tar для простоты не указаны):
На принимающей машине | На передающей машине | Комментарий | ||
---|---|---|---|---|
| Запускаем инструмент на принимающей машине. Инструмент слушает принимает данные через сетевой порт номер 1024 и записывает всё полученное в файл backup.tar.gz Далее предположим, что IP-адрес принимающей машины - 192.168.32.97 | |||
| На передающей машине запускаем архиватор tar без указания целевого файла архива. | |||
После завершения передачи соединение будет закрыто автоматически, на принимающей машине данные будут записаны в указанный файл, и инструмент nc завершит работу. |
С помощью SSH
Более безопасным вариантом является использование SSH. Подробно про настройку SSH и работу с ним можно прочитать в соответствующей статье.
Пример команды:
Command |
---|
sudo tar -cvpz / | ssh 192.168.32.97 "( cat > ssh_backup.tar.gz )" |
В примере:
- Инструмент tar применяется без указания целевого файла, и выводит поток данных в стандартный вывод (stdout);
- Стандартный вывод перенаправляется в ssh;
- ssh подключается к удалённому компьютеру и выполняет на удалённом компьютере команду записи в файл;
Восстановление
Пример команд для восстановления файлов из архива:
Command |
---|
echo 1 | sudo tee /parsecfs/unsecure_setxattr sudo /usr/sbin/execaps -c 0x1000 -- tar --xattrs --xattrs-include=security.{PDPL,AUDIT,DEF_AUDIT} --acls -xzf backup.tar.gz -С / echo 0 | sudo tee /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 (настройка ОС Astra Linux Special Edition по умолчанию). |
Восстановление атрибутов файлов
Предупреждение |
---|
Если восстановление файлов из архива производится не в том экземпляре ОС, в котором было сделано архивирование (например, восстановление производится из ОС, загруженной с LiveCD), то необходимо использовать дополнительную опцию --numeric-owner, запрещающую перепроверять имена пользователей/групп и изменять их числовые идентификаторы в соответствии с действующим в используемой системе. |
Восстановление загрузчика GRUB и параметров монтирования
Предупреждение | ||||
---|---|---|---|---|
После переноса с помощью tar или rsync содержимого загрузочного диска на другой диск требуется восстановить системный загрузчик grub. Для этого:
Кроме того, при переносе системы на новый диск (дисковый раздел) необходимо исправить таблицу монтирования в файле /etc/fstab, указав данные для идентификации нового диска. Обычно для идентификации используется параметр UUID, узнать который можно выполнив команду:
|
Восстановление через сеть
С помощью 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
Пример команды:
Command |
---|
cat ssh_backup.tar.gz | ssh 10.0.2.2 "tar -xvpzf - -C /tmp" |
Сценарий проверки корректности работы с мандатными атрибутами
Пример сценария копирования и восстановления с сохранением мандатных атрибутов и проверкой корректности восстановления доступен по ссылке.
RSYNC
Инструмент rsync является наиболее сложным инструментом и включает в свой состав инструмент rsync и службу rsync.service, обеспечивающую удаленный доступ для копирования.
Может применяться для локального и удалённого копирования.
В отличие от tar, копирует дерево файлов в дерево файлов и не позволяет сжать полученные копии.
Пакет не устанавливается по умолчанию при установке ОС, однако он входит в зависимости многих других пакетов (например, системы контроля версий git и subversion, система резервного копирования luckyBackup, Система контейнерной изоляции уровня ОС LXC), поэтому может быть установлен автоматически при их установке.
Инструмент обеспечивает очень много возможностей, в том числе:
- распараллеливание операций при копировании;
- сжатие при копировании по сети;
- инкрементное копирование, в том числе копирование только изменённых частей файлов;
- копирование удалений файлов;
- возобновление прерванного копирования;
- сохранение нескольких "снимков"
При автоматической установке служба rsync.service также устанавливается, но автоматически не запускается и требует настройки.
Несмотря на отсутствие запущенной службы rsync.service, удалённое копирование по сети можно выполнять через SSH.
Создание копии
По аналогии с примером для инструмента tar, пример локального копирования корневой файловой системы в каталог /backup:
Command |
---|
sudo /usr/sbin/execaps -c 0x1000 -- sudo rsync -a --xattrs --acls --exclude=/proc --exclude=/lost+found --exclude=/backup --exclude=/mnt --exclude=/sys --exclude=/parsecfs / /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 Разница между командами - в символе '/' в конце имени каталога-источника. |
Простейший пример для удалённого копирования отличается только объектом, в который осуществляется копирование (в примере - копирование с использованием ssh на хост host.astradomain.ru под именем пользователя admin в каталог ~admin/backup/):
Command |
---|
sudo rsync -a --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys/ / admin@host.astradomain.ru:backup |
Заметим, что для подобного копирования служба rsync.service на компьютере-получателе не нужна, достаточно работающей службы ssh.
При этом автоматически используются алгоритмы защитного преобразования данных, встроенные в SSH.
Предупреждение |
---|
При таком копировании атрибуты доступа к копиям будут установлены неверно, копии будут принадлежать пользователю admin на компьютере-получателе, мандатные атрибуты установлены не будут. |
Сохранение атрибутов файлов
Предупреждение |
---|
Данный пример работает только на файловых системах, поддерживающих расширенные атрибуты файлов и разрешающих запись пользовательских атрибутов. Файловая система Ext4 (рекомандуется к использованию) и большинство современных файловых систем соответствуют этим условиям по умолчанию. Файловые системы Ext2/Ext3 должны быть смонтированы с дополнительной опцией монтирования user_xattr. При использовании иных файловых систем см. соответствующую документацию. |
Более продвинутый пример удалённого копирования с сохранением атрибутов файлов независимо от их валидности в целевой ОС:
Command |
---|
sudo rsync -a --X --A --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/parsecfs -M --fake-super / / admin@host.astradomain.ru:backup |
В примере применены ранее описанные атрибуты --xattrs и --acls (в краткой форме -X и -A), и добавлен новый атрибут -M, передающий следующий атрибут удалённому компьютеру. В данном случае удалённому компьютеру передаётся параметр --fake-super, заствляющий удалённый компьютер сохранять невалидные атрибуты доступа файлов в расширенных атрибутах (extended attributes) этих файлов. Т.е. если на принимающем компьютере rsync не может установить атрибуты файла (потому что на принимающем компьютере нет пользователя и/или группы с таким идентификатором, или потому, что rsync запущен от имени пользователя, не имеющего права выставлять такие атрибуты), то файлу-копии будут выставлены атрибуты пользователя, от имени которого запущен на принимающем компьютере rsync, а реальные атрибуты будут сохранены в расширенных атрибутах файла-копии.
Примечание |
---|
В старых руководствах по rsync часто встречается устаревший вариант сохранения атрибутов, переопределяющий вызов удалённого экземпляра rsync как --rsync-path="rsync --fake-super" или даже --rsync-path="sudo rsync --fake-super". В настоящее время использование команды -M --fake-super является предпочтительным вариантом, а использование sudo крайне нежелательно с точки зрения безопасности. Вызов rsync на принимающем компьютере происходит от имени и с правами пользователя, осуществившего вход в ssh. Хорошей практикой является создание для этой цели специально назначенного пользователя с ограниченными правами. |
Предупреждение |
---|
Для полностью корректной работы приведённых примеров под ОС Astra Linux Special Edition должна быть определена политика предоставления мандатной привилегии PARSEC_CAP_UNSAFE_SETXATTR удалённому экземпляру rsync. |
Восстановление
Для восстановления достаточно выполнить команду, поменяв местами источник и назначение (и не забыв установить привилегию на изменение мандатных атрибутов, подробности см. в примере к инструменту tar):
Command |
---|
echo 1 | sudo tee /parsecfs/unsecure_setxattr |
Для восстановления копий, сделанных с помощью опции --fake-super следует также использовать эту опцию:
Command |
---|
sudo rsync -a --X --A -M --fake-super / admin@host.astradomain.ru:backup / |
Сценарий проверки корректности работы с мандатными атрибутами
Пример сценария копирования и восстановления с сохранением мандатных атрибутов и проверкой корректности восстановления доступен по ссылке.
Настройка и применение rsync.service
Предупреждение |
---|
С учетом того, что работа службы rsyncd (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 *.bz *.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 *.bz *.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В целях безопасности рекомендуется ограничить доступ к этому файлу:
Command sudo chmod 600 /etc/rsyncd.scrt Запустить сервис:
Command sudo systemctl start rsync Доступ к серверу rsync осуществляется точно так же, как и доступ через SSH, единственное различие - в использовании "двойного двоеточия", указывающего, что нужно использовать протокол rsync:
Command sudo rsync -a user1@host.astradomain.ru::data1 /tmp/
luckyBackup
Представляет собой графический интерфейс к инструменту rsync.
По умолчанию не устанавливается, и может быть установлен с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки:
Command |
---|
apt install luckybackup |
После установки доступен через графическое меню "Пуск" - "Системные" - "luckyBackup (суперпользователь)".
При первом запуске рекомендуется установить русский язык ("Settings" - "Language"):
Инструмент поддерживает все возможности rsync, и предоставляет возможность :
- проверка синтаксической и логической корректности заданных параметров rsync;
- тестовое (dry-run, "холостое") выполнение команды копирования с проверкой корректности заданных параметров.
Подключение работы с мандатными атрибутами
Предупреждение |
---|
Для работы с мандатными атрибутами нужно будет запустить программу luckyBackup с привилегией PARSEC_CAP_UNSAFE_SETXATTR. |
Для включения в инструменте luckyBackup работы с мандатными атрибутами:
- Создать новую задачу (кнопка "Добавить"):
- Перейти в установку расширенных параметров (Кнопка "Расширенный"):
- Выбрать закладку "Опции" (возможно, для этого придётся развернуть окно на весь экран):
- В нижней части выбрать закладку "Заданные пользователем" и указать там нужные параметры
(каждый параметр указывается в отдельной строке, для примера указаны краткие формы ранее описанных параметров --xattrs и --acls): - После внесения изменений не забыть сохранить профиль ("Профиль" - "Сохранить").
Резервное копирование домашних каталогов пользователей в Astra Linux Special Edition
Для решения типичной задачи резервного копирования домашних каталогов пользователей применимы все вышепречисленные инструменты, кроме копирующего носитель целиком инструмента dd. При настройке правил резервного копирования домашних каталогов следует помнить, что:
- для домашних каталогов, не содержащих файлы с ненулевыми метками конфиденциальности:
- проверить расположение домашнего каталога:
для локальных пользователей можно командой:
Command grep <имя_локального_пользователя> /etc/passwd - для доменных пользователей:
в домене FreeIPA - использовать web-интерфейс FreeIPA или использовать команду:
Command ipa user-show <имя_доменного_пользователя> - в домене ALD - использовать графический инструмент fly-admin-ald-server
- расположение домашних каталогов по умолчанию:
- для локальных пользователей и пользователей в домене FreeIPA - каталог /home;
- в домене ALD - каталог /ald_home;
- проверить расположение домашнего каталога:
- для домашних каталогов, содержащих файлы с ненулевыми метками конфиденциальности:
- расположение домашних каталогов по умолчанию:
- на недоменных машинах Astra Linux Special Edition и на машинах Astra Linux Special Edition в доменах FreeIPA - в каталоге /home/.pdp;
- на машинах Astra Linux Special Edition в доменах ALD - в каталоге /ald_export_home.
- расположение домашних каталогов по умолчанию: