Linux AD-DC Двусторонняя репликация SysVol

Linux AD-DC Двусторонняя репликация SysVol

Linux AD-DC Двусторонняя репликация SysVol — грааль. По крайней мере один из. Настройка двусторонней репликации SysVol — позволит держать содержимое SysVol актуальным на всех контроллерах домена Linux одновременно. Двусторонняя репликация подразумевает под собой то, что внеся правку на любом контроллере домена (создав GPOшку), она будет отражена в каталогах SysVol всех контроллеров домена. Данный факт позволяет выйти из строя любому из контроллеров домена, не выведя из строя инфраструктуру. Клиенты возьмут настройки с любого другого контроллера домена к которому обратятся. А введя в строй очередной домен, достаточно будет настроить на нём репликацию, чтобы сделать его работоспособным.

При этом настраивая двустороннюю репликацию вы получаете волшебную возможность сломать всё разом. То есть вывести из строя не один контроллер домена, а все контроллеры домена в сети разом :). Наступить не на одну граблю, а на целую связку. Потому дабы прикрыть свою жёпеньку, мы воспользуемся комбинацией утилит osynс+rsync. В результате у нас на каждом хосте будет набор резервных копий SysVol.

Linux AD-DC Двусторонняя репликация SysVol — Настройка ag-dc-1

В данный момент мы настраиваем уже работающий контроллер домена. Текущего держателя FSMO ролей. ag-dc-1.adminguide.lan

ВСЕ действия производятся из его же консоли

Устанавливаем rsync

В Ubuntu 18.04 rsync уже должен быть предустановлен, но на всякий случай это лучше проверить. Так же важным моментом со стороны rsync является поддержка ACLs и xattrs.

dpkg -s rsync | grep installed
rsync --version | grep -E 'ACLs|xattrs'

Если rsync установлен и поддержка ACLs и xattrs имеется, радуемся. Иначе ставим rsync

sudo apt install rsync

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

Скачиваем и устанавливаем osync

Исходники утилиты лежат на гитхабе. Собственно сама утилита представляет собою скрипт. Его то нам и нужно будет использовать. Переходим в домашнюю папку, качаем стабильный билд с гитхаба, и устанавливаем утилиту.

cd ~
git clone -b "stable" https://github.com/deajan/osync
cd osync
sudo bash install.sh

Вероятнее всего после установки у вас будет отсутствовать файл конфигурации. Потому скопируем его из примера идущего в комплекте из репозитория.

sudo cp /etc/osync/sync.conf.example /etc/osync/sync.conf

Теперь необходимо обозначить несколько условий:

  1. Самба установлена в /usr/sbin/samba
  2. sysvol расположен в /var/lib/samba/sysvol
  3. osync расположен в /usr/local/bin
  4. sync.conf расположен в /etc/osync/sync.conf
  5. Имя первого дц: AG-DC-1
  6. Имя второго дц: AG-DC-2
  7. У вас настроено беспарольное взаимодействие между rootами всех контроллеров домена
  8. Файловая система на которой располагается sysvol, поддерживает acl и xattr
  9. rsync НЕ сконфигурирован как демон

Проверяем есть ли у ФС с SysVol поддержка xattr и acl

Во-первых смотрим какие файловые системы у нас есть вообще.

df -Th | grep "^/dev"

Если вы до этого момента шли строго по моим мануалам, то у вас будет примерно следующее:

/dev/mapper/ubuntu--vg-ubuntu--lv ext4       20G  6.1G   13G  33% /
/dev/sda2                         ext4      976M  146M  764M  16% /boot

Если не шли, я полагаю что возможно вы сидите на бочке с порохом :).

Итак, видим что корень у нас монтируется на /dev/mapper/ubuntu—vg-ubuntu—lv. LVM раздел. В свою очередь SysVol у нас лежит на этом же разделе, т.к. мы никуда эту папку не выносили. Смотрим подробности по этому разделу:

sudo tune2fs -l /dev/mapper/ubuntu--vg-ubuntu--lv

Результат будет примерно следующим:

tune2fs 1.44.1 (24-Mar-2018)
Filesystem volume name:   
Last mounted on:          /
Filesystem UUID:          17ca31c7-5eee-4c6f-ae67-deaaea2fe24b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              1310720
Block count:              5242880
Reserved block count:     262144
Free blocks:              3582134
Free inodes:              1200499
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sat Nov 21 05:28:15 2020
Last mount time:          Wed Dec 16 06:42:46 2020
Last write time:          Sat Nov 21 05:37:43 2020
Mount count:              10
Maximum mount count:      -1
Last checked:             Sat Nov 21 05:28:15 2020
Check interval:           0 ()
Lifetime writes:          20 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      1ab8d862-c86b-4c98-899d-381e9b4e1022
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0xc03fd242

В списке как и у меня, у вас должно быть указано user_xattr acl

Проверяем настроен ли rsync как демон

cat /etc/default/rsync | grep RSYNC_ENABLE

Должно быть RSYNC_ENABLE=false

Linux AD-DC Двусторонняя репликация SysVol — Настройка osync

Настройка SysVol репликации на Linux AD-DC ag-dc-2.adminguide.lan

Итак, мы готовы к началу настройки репликации. Прежде чем продолжить настройку ag-dc-1, убедимся что ag-dc-2 готов. Проверять мы будем его готовность стать участником репликации. Я исхожу из того, что ag-dc-2 (в вашем случае название будет какое-то другое), настраивался по моим мануалам. Поэтому я опускаю фатальных размеров пласт вопросов валидации.

Подключаемся к дополнительному контроллеру домена Linux через SSH

У нас настроено беспарольное межсерверное взаимодействие рутов, потому не будем мудрить и подключимся к ag-dc-2 прямо из текущей сессии ag-dc-1.

sudo su
ssh -p 54322 root@ag-dc-2.adminguide.lan

Проверяем наличие rsync

dpkg -s rsync | grep installed
rsync --version | grep -E 'ACLs|xattrs'

Должны увидеть следующее:

root@ag-dc-2:~# dpkg -s rsync | grep installed
Status: install ok installed
root@ag-dc-2:~# rsync --version | grep -E 'ACLs|xattrs'
append, ACLs, xattrs, iconv, symtimes, prealloc

Если rsync отсутствует, ставим rsync с помощью команды

apt install rsync

И повторяем проверку. В случае если у вас из репозиториев ставится rsync без поддержки ACLs и xattrs, пишите, будем разбираться.

Если всё ок, и мы видим ожидаемый вывод, возвращаемся к настройке ag-dc-1. Выходим из сессии сервера ag-dc-2 написав в терминал exit

exit

Linux AD-DC Двусторонняя репликация SysVol — ag-dc-1.adminguide.lan

Во-первых открываем скопированный из примера ранее файл sync.conf

sudo nano /etc/osync/sync.conf

Во-вторых — вам необходимо найти все перечисленные ниже строки и привести их в надлежащий вид

INSTANCE_ID="adminguide_sysvol_sync" # Имя вашей задачи
INITIATOR_SYNC_DIR="/var/lib/samba/sysvol" # Путь расположения SysVol
TARGET_SYNC_DIR="ssh://root@ag-dc-2:54322//var/lib/samba/sysvol" # Удалённая папка SysVol
SSH_RSA_PRIVATE_KEY="/root/.ssh/id_rsa" # ssh ключ от root
REMOTE_3RD_PARTY_HOSTS="" # Удалённые хосты которые osync пингует перед стартом
PRESERVE_ACL=yes # Сохранить ACL 
PRESERVE_XATTR=yes # Сохранить xattr
SOFT_DELETE=yes # Жёпенькина устойчивость к косякам с SysVol + 100500%. При репликации будут делаться бекапы

Если нет желания заниматься нудными ручными правками, я изменил конфиг. Ниже приведён полноценный конфиг где параметры которые необходимо изменить вынесены в начало. В своих исходных местах они просто закомментированы с дефолтными значениями. Так что можно целиком заменить им  содержимое файла sync.conf и вносить все правки в начало файла. Данный конфиг я скопипасчу в sync.conf на ag-dc-1.adminguide.lan

Конфиг /etc/osync/sync.conf

#!/usr/bin/env bash
###### osync - Rsync based two way sync engine with fault tolerance
###### (C) 2013-2017 by Orsiris de Jong (www.netpower.fr)
###### osync v1.1x / v1.2x config file rev 2017020801
#### ---------- AdminGuide.Ru - 1st DC Configuration - GENERAL OPTIONS OVERRIDE - Start
## Имя вашей задачи
## Name of your job
INSTANCE_ID="adminguide_sysvol_sync"
## Путь до папки SysVol на текущем сервере
## Path to SysVol folder on current server
INITIATOR_SYNC_DIR="/var/lib/samba/sysvol"
## Путь до папки SysVol на удалённом сервере
## Path to SysVol folder on remote server
TARGET_SYNC_DIR="ssh://root@ag-dc-2:54322//var/lib/samba/sysvol"
## Путь до id_rsa файла пользователя root текущего сервера
## Path to root user id_rsa file of current server
SSH_RSA_PRIVATE_KEY="/root/.ssh/id_rsa" # ssh ключ от root
## Список удалённых хостов должен быть пустым. Мы используем только локальные адреса для репликации
## Remote 3rd party hosts list must be empty. We use only local adresses for replication
REMOTE_3RD_PARTY_HOSTS="" # Удалённые хосты которые osync пингует перед стартом
## Нам необходимо чтобы ACL после репликации были сохранены
## We need to save ACLs after replication
PRESERVE_ACL=yes
## Как и в случае с ACL, нам надо сохранить xattr
## Same as ACLs, we need save xattr
PRESERVE_XATTR=yes # Сохранить xattr
## Жёпенькина устойчивость к косякам с SysVol + 100500%. При репликации будут делаться бекапы
## Do not disable backups. This will save your ass if you make any mistake
SOFT_DELETE=yes
## Количество дней сколько будут храниться бекапы SysVol, я предпочитаю 360
## Amout of days, SysVol backups will be stored. I prefer 360
SOFT_DELETE_DAYS=360
###### ---------- OPTIONAL - Start
## Настройки оповещения. Оставьте как есть если оповещение не нужно
## Notification options. Do not configure if dont need notofocations
DESTINATION_MAILS="sysvol_replication@adminguide.ru"
MAIL_BODY_CHARSET=""
SENDER_MAIL="alert@your.system.tld"
SMTP_SERVER=smtp.your.isp.tld
SMTP_PORT=25
# шифрование может быть tls, ssl или none
# encryption can be tls, ssl or none
SMTP_ENCRYPTION=none
SMTP_USER=
SMTP_PASSWORD=
###### ---------- OPTIONAL - Start
#### ---------- AdminGuide.Ru - 1st DC Configuration - GENERAL OPTIONS OVERRIDE - End
## ---------- GENERAL OPTIONS
## Sync job identification
#INSTANCE_ID="sync_test"
## Directories to synchronize.
## Initiator is the system osync runs on. The initiator directory must be a local path.
#INITIATOR_SYNC_DIR="/home/git/osync/dir1"
## Target is the system osync synchronizes to (can be the same system as the initiator in case of local sync tasks). The target directory can be a local or remote path.
#TARGET_SYNC_DIR="/home/git/osync/dir2"
#TARGET_SYNC_DIR="ssh://backupuser@yourhost.old:22//home/git/osync/dir2"
## If the target system is remote, you can specify a RSA key (please use full path). If not defined, the default ~/.ssh/id_rsa will be used. See documentation for further information.
#SSH_RSA_PRIVATE_KEY="/home/backupuser/.ssh/id_rsa"
## Alternatively, you may specify an SSH password file (less secure). Needs sshpass utility installed.
SSH_PASSWORD_FILE=""
## When using ssh filter, you must specify a remote token matching the one setup in authorized_keys
_REMOTE_TOKEN=SomeAlphaNumericToken9
## Create sync directories if they do not exist
CREATE_DIRS=no
## Log file location. Leaving this empty will create a logfile at /var/log/osync_version_SYNC_ID.log (or current directory if /var/log doesn't exist)
LOGFILE=""
## Generate an alert if initiator or target replicas have less free space than given value in KB. Set this to zero to skip disk space tests.
MINIMUM_SPACE=10240
## Bandwidth limit Kbytes / second. Leave 0 to disable limitation
BANDWIDTH=0
## If enabled, synchronization on remote system will be processed as superuser. See documentation for /etc/sudoers file configuration.
SUDO_EXEC=no
## Paranoia option. Don't change this unless you read the documentation.
RSYNC_EXECUTABLE=rsync
## Remote rsync executable path. Leave this empty in most cases
RSYNC_REMOTE_PATH=""
## Rsync exclude / include order (the option set here will be set first, eg: include will make include then exclude patterns)
RSYNC_PATTERN_FIRST=include
## List of files / directories to incldue / exclude from sync on both sides (see rsync patterns, wildcards work).
## Paths are relative to sync dirs. List elements are separated by a semicolon.
RSYNC_INCLUDE_PATTERN=""
RSYNC_EXCLUDE_PATTERN=""
#RSYNC_EXCLUDE_PATTERN="tmp;archives"
## Files that contains lists of files / directories to include / exclude from sync on both sides. Leave this empty if you don't want to use an exclusion file.
## This file has to be in the same directory as the config file
## Paths are relative to sync dirs. One element per line.
RSYNC_INCLUDE_FROM=""
RSYNC_EXCLUDE_FROM=""
#RSYNC_EXCLUDE_FROM="exclude.list"
## List elements separator char.  You may set an alternative separator char for your directories lists above.
PATH_SEPARATOR_CHAR=";"
## ---------- REMOTE SYNC OPTIONS
## ssh compression should be used unless your remote connection is good enough (LAN)
SSH_COMPRESSION=yes
## Ignore ssh known hosts. DANGER WILL ROBINSON DANGER ! This can lead to security issues. Only enable this if you know what you're doing.
SSH_IGNORE_KNOWN_HOSTS=no
## Check for connectivity to remote host before launching remote sync task. Be sure the hosts responds to ping. Failing to ping will stop sync.
REMOTE_HOST_PING=no
## Check for internet access by pinging one or more 3rd party hosts before remote sync task. Leave empty if you don't want this check to be be performed. Failing to ping will stop sync.
## If you use this function, you should set more than one 3rd party host, and be sure you can ping them.
## Be aware some DNS like opendns redirect false hostnames. Also, this adds an extra execution time of a bit less than a minute.
#REMOTE_3RD_PARTY_HOSTS="www.kernel.org www.google.com"
## ---------- MISC OPTIONS
## Optional arguments passed to rsync executable. The following are already managed by the program and shoul never be passed here
## -r -l -p -t -g -o -D -E - u- i- n --executability -A -X -L -K -H -8 -zz –skip-compress –checksum –bwlimit –partial –partial-dir –no-whole-file –whole-file –backup –backup-dir –suffix
## --exclude --exclude-from --include --include-from --list-only --stats
RSYNC_OPTIONAL_ARGS=""
## Preserve basic linux permissions
PRESERVE_PERMISSIONS=yes
PRESERVE_OWNER=yes
PRESERVE_GROUP=yes
## On MACOS X, does not work and will be ignored
PRESERVE_EXECUTABILITY=yes
## Preserve ACLS. Make sure source and target FS can handle ACL. Disabled on Mac OSX.
#PRESERVE_ACL=no
## Preserve Xattr. Make sure source and target FS can manage identical XATTRS. Disabled on Mac OSX.
#PRESERVE_XATTR=no
## Transforms symlinks into referent files/dirs. Be careful as symlinks without referrent will break sync as if standard files could not be copied.
COPY_SYMLINKS=no
## Treat symlinked dirs as dirs. CAUTION: This also follows symlinks outside of the replica root.
KEEP_DIRLINKS=no
## Preserve hard links. Make sure source and target FS can manage hard links or you will lose them.
PRESERVE_HARDLINKS=no
## Do a full checksum on all files that have identical sizes, they are checksummed to see if they actually are identical. This can take a long time.
CHECKSUM=no
## Let RSYNC compress file transfers. Do not use this if both initator and target replicas are on local system. Also,  do not use this if you already enabled SSH compression.
RSYNC_COMPRESS=yes
## Maximum execution time (in seconds) for sync process. Set these values zero will disable max execution times.
## Soft exec time only generates a warning. Hard exec time will generate a warning and stop sync process.
SOFT_MAX_EXEC_TIME=7200
HARD_MAX_EXEC_TIME=10600
## Log a message every KEEP_LOGGING seconds just to know the task is still alive
KEEP_LOGGING=1801
## Minimum time (in seconds) in file monitor /daemon mode between modification detection and sync task in order to let copy operations finish.
MIN_WAIT=60
## Maximum time (in seconds) waiting in file monitor / daemon mode. After this time, sync is run.
## Use 0 to wait indefinitely.
MAX_WAIT=7200
## ---------- BACKUP AND DELETION OPTIONS
## Enabling this option will keep a backup of a file on the target replica if it gets updated from the source replica. Backups will be made to .osync_workdir/backups
CONFLICT_BACKUP=yes
## Keep multiple backup versions of the same file. Warning, This can be very space consuming.
CONFLICT_BACKUP_MULTIPLE=no
## Osync will clean backup files after a given number of days. Setting this to 0 will disable cleaning and keep backups forever. Warning: This can be very space consuming.
CONFLICT_BACKUP_DAYS=30
## If the same file exists on both replicas, newer version will be synced. However, if both files have the same timestamp but differ, CONFILCT_PREVALANCE sets winner replica.
CONFLICT_PREVALANCE=initiator
## On deletion propagation to the target replica, a backup of the deleted files can be kept. Deletions will be kept in .osync_workdir/deleted
#SOFT_DELETE=yes
## Osync will clean deleted files after a given number of days. Setting this to 0 will disable cleaning and keep deleted files forever. Warning: This can be very space consuming.
#SOFT_DELETE_DAYS=30
## Optional deletion skip on replicas. Valid values are "initiator", "target", or "initiator,target"
SKIP_DELETION=
## ---------- RESUME OPTIONS
## Try to resume an aborted sync task
RESUME_SYNC=yes
## Number maximum resume tries before initiating a fresh sync.
RESUME_TRY=2
## When a pidlock exists on slave replica that does not correspond to the initiator's instance-id, force pidlock removal. Be careful with this option if you have multiple initiators.
FORCE_STRANGER_LOCK_RESUME=no
## Keep partial uploads that can be resumed on next run, experimental feature
PARTIAL=no
## Use delta copy algortithm (usefull when local paths are network drives), defaults to yes
DELTA_COPIES=yes
## ---------- ALERT OPTIONS
## List of alert mails separated by spaces
## Most Unix systems (including Win10 bash) have mail support out of the box
## Just make sure that the current user has enough privileges to use mail / mutt / sendmail and that the mail system is configured to allow outgoing mails
## on pfSense platform, smtp support needs to be configured in System > Advanced > Notifications
#DESTINATION_MAILS="your@alert.tld"
## Optional change of mail body encoding (using iconv)
## By default, all mails are sent in UTF-8 format without header (because of maximum compatibility of all platforms)
## You may specify an optional encoding here (like "ISO-8859-1" or whatever iconv can handle)
#MAIL_BODY_CHARSET=""
## Additional mail parameters needed for Android / Busybox / Cygwin / MSYS
## Android & Busybox use sendmail (and openssl if encryption is needed)
## MSYS & Cygwin Windows mail support relies on mailsend.exe from muquit, http://github.com/muquit/mailsend which needs to be in %PATH% environment variable
#SENDER_MAIL="alert@your.system.tld"
#SMTP_SERVER=smtp.your.isp.tld
#SMTP_PORT=25
# encryption can be tls, ssl or none
#SMTP_ENCRYPTION=none
#SMTP_USER=
#SMTP_PASSWORD=
## ---------- EXECUTION HOOKS
## Commands can will be run before and / or after sync process (remote execution will only happen if REMOTE_OPERATION is set).
LOCAL_RUN_BEFORE_CMD=""
LOCAL_RUN_AFTER_CMD=""
REMOTE_RUN_BEFORE_CMD=""
REMOTE_RUN_AFTER_CMD=""
## Max execution time of commands before they get force killed. Leave 0 if you don't wan't this to happen. Time is specified in seconds.
MAX_EXEC_TIME_PER_CMD_BEFORE=0
MAX_EXEC_TIME_PER_CMD_AFTER=0
## Stops osync execution if one of the above commands fail
STOP_ON_CMD_ERROR=yes
## Run local and remote after sync commands even on failure
RUN_AFTER_CMD_ON_ERROR=no

После того как конфиг настроен, авторизуемся под рутом и запускаем тестовый прогон на сухую. Именно для этого первой статьёй этой серии, я указал статью про межсерверное взаимодействие рутов по сертификатам. Если запустить задачу из под другой учётки, она банально не сможет авторизоваться на другом сервере.

sudo su
/usr/local/bin/osync.sh /etc/osync/sync.conf --dry --verbose

Результат который мы ожидаем увидеть:

TIME: 0 - -------------------------------------------------------------
TIME: 0 - Mon Dec 28 13:11:55 UTC 2020 - osync 1.2 script begin.
TIME: 0 - -------------------------------------------------------------
TIME: 0 - Sync task [adminguide_sysvol_sync] launched as root@ag-dc-1 (PID 2555)
TIME: 1 - Checking minimum disk space in local replica [/var/lib/samba/sysvol/].
TIME: 0 - Checking minimum disk space in remote replica [/var/lib/samba/sysvol/] .
TIME: 4 - Starting synchronization task.
TIME: 4 - Creating initiator replica file list [/var/lib/samba/sysvol/].
TIME: 4 - Creating target replica file list [/var/lib/samba/sysvol/].
TIME: 6 - Creating initiator replica deleted file list.
TIME: 6 - Creating target replica deleted file list.
TIME: 6 - Getting list of files that need updates.
TIME: 7 - List:
.d..tp.g.ax ./
.d..tp.g.ax adminguide.lan/
cd+++++++++ adminguide.lan/Policies/
cd+++++++++ adminguide.lan/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/

В нём присутствуют несколько ошибок, информирующих нас о том что на источнике и получателе репликации отсутствуют папки backup и deleted.

Создаём на источнике (ag-dc-1) необходимые папки для бэкапов и сохранения удаляемых файлов. Помним что мы всё ещё авторизованы под рутом.

mkdir /var/lib/samba/sysvol/.osync_workdir/backup
mkdir /var/lib/samba/sysvol/.osync_workdir/deleted

Снова запускаем тест на сухую

/usr/local/bin/osync.sh /etc/osync/sync.conf --dry --verbose

Если всё сделано правильно, у в логе останется всего две ошибки:

The target replica dir [/var/lib/samba/sysvol/.osync_workdir/backup] does not exist. Skipping cleaning of old files
The target replica dir [/var/lib/samba/sysvol/.osync_workdir/deleted] does not exist. Skipping cleaning of old files

Они говорят о том что на удалённом хосте ag-dc-2.adminguide.lan, получателе репликации, отсутствуют в реплицируемой папке SysVol служебные папки /sysvol/.osync_workdir/backup и /sysvol/.osync_workdir/deleted . Нужно их создать. Помним что у нас настроено беспарольное межсерверное взаимодействие рутов. На ag-dc-1 из под рута, можно отправить через ssh необходимые команды прямо на ag-dc-2.

ssh -p 54322 root@ag-dc-2.adminguide.lan mkdir /var/lib/samba/sysvol/.osync_workdir/backup && ssh -p 54322 root@ag-dc-2.adminguide.lan mkdir /var/lib/samba/sysvol/.osync_workdir/deleted

Так как порт у нас не стандартный, незабываем указать параметр -p с номером нестандартного порта. Если порт стандартный, параметр -p можно опустить. Команда в этом случае будет выглядеть так:

ssh root@ag-dc-2.adminguide.lan mkdir /var/lib/samba/sysvol/.osync_workdir/backup && ssh root@ag-dc-2.adminguide.lan mkdir /var/lib/samba/sysvol/.osync_workdir/deleted

Финальные тесты

Снова тестим.

/usr/local/bin/osync.sh /etc/osync/sync.conf --dry --verbose

В этот раз ошибок никаких быть уже не должно.
Последний тест проводим на живую.

/usr/local/bin/osync.sh /etc/osync/sync.conf --verbose

Если всё прошло без ошибок, необходимо переходить к следующему этапу.

Ещё больше интересного контента в моём блоге в Zen и на моём канале YouTube. Подписывайтесь на канал, ставьте лайки, делайте репосты, это поможет развитию контента проекта AdminGuide.Ru

Text.ru - 100.00%

Texnologiyalar
Linux AD-DC Двусторонняя репликация SysVol