Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

В статье рассматриваются основные инструменты резервного копирования, входящие в состав дистрибутивов ОС ОН Орёл и ОС СН Смоленск:

  • инструмент командной строки dd
  • инструмент командной строки tar;
  • инструмент командной строки rsync;
  • графический инструмент luckyBackup;





Предупреждение
Рассмотренные в данной статье инструменты неприменимы для резервного копирования содержимого действующих (изменяющихся) баз данных, так как не гарантируют целостность полученной копии. Для копирования содержимого баз данных следует использовать штатные инструменты этих баз данных.



Информация

Данная статья применима к:

  • ОС СН Смоленск 1.6;
  • ОС СН Смоленск 1.5;
  • ОС ОН Орёл 2.12 (в части, не касающейся мандатных атрибутов);



Информация

По каждому инструменту рассматриваются средства, позволяющие выполнять резервное копирование и восстановление с сохранением всех расширенных атрибутов,
в том числе, для ОС СН Смоленск, с сохранением мандатных (классификационных) меток и флагов аудита.

DD

Инструмент командной строки dd является самым простым средством полного резервного копирования.
Инструмент автоматически устанавливается при установке ОС и никаких настроек не требует.
Недостатками инструмента являются:

  • избыточность  копируемых данных (так как копируется незанятое файлами пространство);
  • необходимость размещения копии на отличном от копируемого физическом устройстве;
  • необходимость использование дополнительных средств для копирования по сети.

Однако, команда dd весьма удобна для полного копирования дисков или дисковых разделов при переносе системы на новый диск.

Команда для копирования системного раздела диска (обычно при установке ОС с параметрами "по умолчанию" это /dev/sda1) в файл с условным названием /media/not-sda-device/sda.bin:

Command
dd if=/dev/sda1 of=/media/not-sda1-device/sda1.bin bs=4096


ПареметрЗначение
if=Имя входного файла. Если пропущено то читает стандартный ввод.
of=Имя выходного файла. Если пропущено то пишет в стандартный вывод.
bs=

Размер блока. Увеличение размера блока может повысить скорость копирования.
Можно выбрать размер блока равным или кратным размеру блока копируемого устройства.
Узнать размер блока дискового устройства с файловой системой Ext2/Ext3/Ext4 можно командой

Command
tune2fs -l /dev/sda1 | grep Block



С учетом возможности перенаправления стандартного ввода/вывода команда dd позволяет применять для копирования алгоритмы сжатия или защитного преобразования:

Command
dd if=/dev/sda1 bs=4096 | gzip > /media/not-sda1-device/sda1.bin.gz2

Команда для восстановления системного раздела диска (для этого потребуется загрузиться с отдельного диска, и примонтировать носитель, на котором был размещен файл с образом):

Command
dd if=/media/mountpoint/sda1.bin of=/dev/sda1 bs=4096

Или, для сжатого файла:

Command
gzip -dc /media/not-sda1-device/sda1.bin.gz2 | dd of=/dev/sda1 bs=4096

Полученный с помощью инструмента dd файл с образом дискового раздела (не подвергнутый сжатию или защитному преобразованию) может быть примонтирован и использоваться как обычный дисковый раздел:

Command
mount -o loop /media/mountpoint/sda1.bin /mnt

TAR

Инструмент командной строки tar в основном применяется для копирования данных в пределах одного компьютера.
Позволяет скопировать дерево файлов в один файл архива. Позволяет сжать копии с помощью программ архивации.
Для копирования с использованием сети требуется применение дополнительных средств.

Создание архива

Команда для копирования файлов в архив с условным названием /backup.tar.bz2 (файл архива располагается в той же файловой системе):

Command

cd /
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

Составной параметр:

-с - создать новый архив
-z - пропускать данные перед записью в архив через программу сжатия gzip
-f - указывает на то, что следующим параметров является имя файла архива (в данном примере backup.tar.bz2)

--exclude

Указывает, какие файлы и каталоги копировать не нужно. В частности, обязательно:

  • исключить из копирования необходимо сам файл архива;
  • исключить из копирования виртуальную файловую систему /parsecfs/
  • Дополнительно можно исключить:
    • /tmp
    • /var/lib/samba/private/msg.sock/
    • /var/lib/samba/winbindd_privileged/pipe
    • /var/lib/sss/pipes/
/Последним параметром указывается каталог, который нужно копировать.


Предупреждение

При копировании полные имена файлов будут сохранены в архиве без начального символа "/".
Это сделано:

  • из соображений безопасности, чтобы случайное/ошибочное разархивирование не перезаписало корневую файловую систему;
  • чтобы файлы можно было восстанавливать из другого экземпляра ОС (например, загрузившись с LiveCD) на примонтированные устройства.


Информация
С архивами tar можно работать с помощью инструмента Midnight Commander, который автоматически устанавливается при установке всех версий Astra Linux.

Восстановление

Пример команд для восстановления файлов из архива:

Command
echo 1 > /parsecfs/unsecure_setxattr
/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 - извлечь файлы из архива
-z - распаковать извлекаемые файлы с помощью программы gunzip
-f - указывает на то, что следующим параметров является имя файла архива (в данном примере backup.tar.bz2)

-C /

Указывает, что перед началом разархивирования нужно перейти в корневой каталог (каталог "/").
Это необходимо сделать для правильного восстановления первоначального размещения файлов, так как при копировании полные имена файлов были сохранены в архиве без начального символа "/".

echo 0 > /parsecfs/unsecure_setxattrКоманда восстанавливает запрет на применение мандатной привилегии  PARSEC_CAP_UNSAFE_SETXATTR (настройка ОС СН Смоленск по умолчанию).
Предупреждение
Если восстановление файлов из архива производится не в том экземпляре  ОС, в котором было сделано архивирование (например, восстановление производится из ОС, загруженной с LiveCD),
то необходимо использовать дополнительную опцию --numeric-owner, запрещающую перепроверять имена пользователей/групп и изменять их числовые идентификаторы в соответствии с действующим в используемой системе.
Предупреждение

После переноса с помощью tar содержимого загрузочного диска на другой диск требуется восстановить системный загрузчик grub. Для этого:

  • примонтировать восстанавливаемый диск, например в каталог /mnt
  • выполнить следующие команды,  указав при выполнении команды dpkg-reconfigure grub-pc диск, с которого должна выполняться загрузка:

    Command
    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:

    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 - рекурсивное копирование дерева файлов
    -l - копировать симлинки как симлинки
    -p - сохранять права доступа
    -t - сохранять время модификации
    -g - сохранять группы
    -o - сохранять владельцев
    -D - сохранять файлы устройств и специальные файлы

    --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/):

    Command
    sudo rsync -a --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys/ / admin@host.astradomain.ru:backup

    Заметим, что для подобного копирования служба rsync.service на компьютере-получателе не нужна, достаточно работающей службы ssh.
    При этом автоматически используются алгоритмы защитного преобразования данных, встроенные  в SSH.

    Предупреждение

    При таком копировании атрибуты доступа к копиям будут установлены неверно, копии будут принадлежать пользователю admin на компьютере-получателе, мандатные атрибуты установлены не будут.

    Более продвинутый пример удалённого копирования:

    Command

    sudo rsync -a --X --A --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/parsecfs --rsync-path="sudo /rsync --fake-super" / / admin@host.astradomain.ru:backup

    В примере применены ранее описанные атрибуты --xattrs и --acls (в краткой форме -X и -A), и добавлен новый атрибут  --rsync-path, который переопределяет вызов удалённого экземпляра rsync как:

  • вызов rsync от имени и с правами суперпользоваетеля (sudo), что позволяет выставлять на удалённом компьютере любые атрибуты создаваемым файлам-копиям;.
  • вызов rsync с параметром --fake-super, разрешающим выставлять создаваемым файлам-копиям атрибуты исходных файлов независимо от валидности этих атрибутов в целевой ОС.
    Предупреждение
    Для полностью корректной работы приведённых примеров под ОС СН Смоленск должна быть определена политика предоставления мандатной привилегии PARSEC_CAP_UNSAFE_SETXATTR удалённому экземпляру rsync.

    Восстановление

    Для восстановления достаточно выполнить команду, поменяв местами источник и назначение (и не забыв установить привилегию на изменение мандатных атрибутов, подробности см. в примере к инструменту tar):

    Command

    echo 1 > /parsecfs/unsecure_setxattr
    /usr/sbin/execaps -c 0x1000 -- sudo rsync -a --xattrs --acls /backup/ /
    echo 0 > /parsecfs/unsecure_setxattr

    Сценарий проверки корректности работы с мандатными атрибутами

    Настройка и применение 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 *.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/Список каталогов, которые не нужно копировать

    Создание архива на удалённом компьютере

    Инструмент tar не содержит собственных средств для работы через сеть, однако может использоваться совместно с другими инструментами для сетевой работы.
    Типичным примерами таких инструментов  являются netcat (nc) и tar.

    Инструмент Netcat (nc)

    Инструмент 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 без указания целевого файла архива.
    Архиватор выводит архив в стандартный вывод (stdout),  который перенаправляется инструменту nc для передачи на IP-адрес 192.168.32.97 и порт 1024.
    Параметр  -q 0 указывает закрыть соединение после завершения входного потока данных.

    После завершения передачи соединение будет закрыто автоматически, на принимающей машине данные будут записаны в указанный файл, и инструмент nc завершит работу.

    С помощью SSH

    Более безопасным вариантом является использование SSH. Подробно про настройку SSH и работу с ним можно прочитать в соответствующей статье.
    Пример команды:

    Command
    tar -cvpz / | ssh 192.168.32.97 "( cat > ssh_backup.tar.gz )"

    В примере:

    • Инструмент tar применяется без указания целевого файла, и выводит поток данных в стандартный вывод (stdout);
    • Стандартный вывод перенаправляется в ssh;
    • ssh подключается к удалённому компьютеру и выполняет на удалённом компьютере команду записи в файл;

    Восстановление

    Пример команд для восстановления файлов из архива:

    Command
    echo 1 > /parsecfs/unsecure_setxattr
    /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 - извлечь файлы из архива
    -z - распаковать извлекаемые файлы с помощью программы gunzip
    -f - указывает на то, что следующим параметров является имя файла архива (в данном примере backup.tar.bz2)

    -C /

    Указывает, что перед началом разархивирования нужно перейти в корневой каталог (каталог "/").
    Это необходимо сделать для правильного восстановления первоначального размещения файлов, так как при копировании полные имена файлов были сохранены в архиве без начального символа "/".

    echo 0 > /parsecfs/unsecure_setxattrКоманда восстанавливает запрет на применение мандатной привилегии  PARSEC_CAP_UNSAFE_SETXATTR (настройка ОС СН Смоленск по умолчанию).


    Предупреждение
    Если восстановление файлов из архива производится не в том экземпляре  ОС, в котором было сделано архивирование (например, восстановление производится из ОС, загруженной с LiveCD),
    то необходимо использовать дополнительную опцию --numeric-owner, запрещающую перепроверять имена пользователей/групп и изменять их числовые идентификаторы в соответствии с действующим в используемой системе.


    Предупреждение

    После переноса с помощью tar содержимого загрузочного диска на другой диск требуется восстановить системный загрузчик grub. Для этого:

    • примонтировать восстанавливаемый диск, например в каталог /mnt
    • выполнить следующие команды,  указав при выполнении команды dpkg-reconfigure grub-pc диск, с которого должна выполняться загрузка:

      Command
      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:

    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 - рекурсивное копирование дерева файлов
    -l - копировать симлинки как симлинки
    -p - сохранять права доступа
    -t - сохранять время модификации
    -g - сохранять группы
    -o - сохранять владельцев
    -D - сохранять файлы устройств и специальные файлы

    --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/):

    Command
    sudo rsync -a --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys/ / admin@host.astradomain.ru:backup

    Заметим, что для подобного копирования служба rsync.service на компьютере-получателе не нужна, достаточно работающей службы ssh.
    При этом автоматически используются алгоритмы защитного преобразования данных, встроенные  в SSH.

    Предупреждение

    При таком копировании атрибуты доступа к копиям будут установлены неверно, копии будут принадлежать пользователю admin на компьютере-получателе, мандатные атрибуты установлены не будут.

    Более продвинутый пример удалённого копирования:

    Command

    sudo rsync -a --X --A --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/parsecfs --rsync-path="sudo /rsync --fake-super" / / admin@host.astradomain.ru:backup

    В примере применены ранее описанные атрибуты --xattrs и --acls (в краткой форме -X и -A), и добавлен новый атрибут  --rsync-path, который переопределяет вызов удалённого экземпляра rsync как:

    • вызов rsync от имени и с правами суперпользоваетеля (sudo), что позволяет выставлять на удалённом компьютере любые атрибуты создаваемым файлам-копиям;.
    • вызов rsync с параметром --fake-super, разрешающим выставлять создаваемым файлам-копиям атрибуты исходных файлов независимо от валидности этих атрибутов в целевой ОС.

    Предупреждение
    Для полностью корректной работы приведённых примеров под ОС СН Смоленск должна быть определена политика предоставления мандатной привилегии PARSEC_CAP_UNSAFE_SETXATTR удалённому экземпляру rsync.

    Восстановление

    Для восстановления достаточно выполнить команду, поменяв местами источник и назначение (и не забыв установить привилегию на изменение мандатных атрибутов, подробности см. в примере к инструменту tar):

    Command

    echo 1 > /parsecfs/unsecure_setxattr
    /usr/sbin/execaps -c 0x1000 -- sudo rsync -a --xattrs --acls /backup/ /
    echo 0 > /parsecfs/unsecure_setxattr

    Сценарий проверки корректности работы с мандатными атрибутами

    Настройка и применение rsync.service

    Предупреждение
    С учетом того, что работа службы rsyncd (rsync.service) осуществляется без защитного преобразования данных,
    использовать эту службу следует с осторожностью:
    либо в доверенной защищенной сети, либо для передачи данных, уже подвергнутых защитному преобразованию.

    В принципе, для решения большинства задач копирования достаточно изложенных выше приёмов работы через SSH без использования rsync.service.
    Служба rsync.service может оказаться полезна:

    • для копирования очень больших объёмов информации, так как сервер rsync.service может локально определить, какую информацию копировать;
    • для работы со слабыми процессорами, так как отсутствие шифрования снижает нагрузку на процессор (хотя, при необходимости, шифрование можно отключить и при использовании ssh)

    Однако, возможно, в указанных ситуациях разумнее воспользоваться сервисом резервного копирования Bacula (описание см. в отдельной статье)

    Для использования rsync.service следует:

    1. Разрешить запуск службы, заменив в файле /etc/default/rsync значение параметра
      RSYNC_ENABLE=false
      на
      RSYNC_ENABLE=true

    2. Создать и заполнить файл конфигурации /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 доступно по сслыке.

    3. Создать файл с адресами и паролями (в данном примере - /etc/rsyncd.scrt):

      Информация
      user1:password1
      user2:password2
      backup:password3

      В целях безопасности рекомендуется ограничить доступ к этому файлу:

      Command
      chmod 600 /etc/rsyncd.scrt


    4. Запустить сервис:

      Command
      service rsync start


    5. Доступ к серверу rsync осуществляется точно так же, как и доступ через SSH, единственное различие - в использовании "двойного двоеточия", указывающего, что нужно использовать протокол rsync:

      Command
      rsync -a  user1@host.astradomain.ru::data1 /tmp/


    Восстановление через сеть

    С помощью 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"

    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

    В целях безопасности рекомендуется ограничить доступ к этому файлу:

    Command
    chmod 600 /etc/rsyncd.scrt

    Запустить сервис:

    Command
    service rsync start

    Доступ к серверу rsync осуществляется точно так же, как и доступ через SSH, единственное различие - в использовании "двойного двоеточия", указывающего, что нужно использовать протокол rsync:

    Commandrsync -a  user1@host.astradomain.ru::data1 /tmp/

    luckyBackup

    Представляет собой графический интерфейс к инструменту rsync.
    По умолчанию не устанавливается, и может быть установлен с помощью графического менеджера пакетов или из командной строки:

    Command
    apt install luckybackup

    После установки доступен через графическое меню  "Пуск" - "Системные" - "luckyBackup (суперпользователь)".
    При первом запуске рекомендуется установить русский язык ("Settings" - "Language"):

    Инструмент поддерживает все возможности rsync, и предоставляет возможность :

    • проверка синтаксической и логической корректности заданных параметров rsync;
    • тестовое (dry-run, "холостое") выполнение команды копирования с проверкой корректности заданных параметров.

    Подключение работы с мандатными атрибутами

    Предупреждение
    Для работы с мандатными атрибутами нужно будет запустить программу luckyBackup с привилегией PARSEC_CAP_UNSAFE_SETXATTR.

    Для включения в инструменте luckyBackup работы с мандатными атрибутами:

    1. Создать новую задачу (кнопка "Добавить"):


    2. Перейти в установку расширенных параметров (Кнопка "Расширенный"):


    3. Выбрать закладку "Опции" (возможно, для этого придётся развернуть окно на весь экран):


    4. В нижней части выбрать закладку "Заданные пользователем" и указать там нужные параметры
      (каждый параметр указывается в отдельной строке, для примера указаны краткие формы ранее описанных параметров --xattrs и --acls):


    5. После внесения изменений не забыть сохранить профиль ("Профиль" - "Сохранить").