FreeBSD: резервное копирование данных с Windows серверов

Постановка задачи

Если на Вашем FreeBSD-сервере имеется большое количество свободного дискового пространства (учитывая размеры современных жестких дисков, это очень частая ситуация), то одним из эффективных вариантов его применения может стать организация резервного копирования данных с других компьютеров. Если на последние установлены операционные системы семейства Linux / Unix, у Вас не должно возникнуть ни каких проблем, если Windows, то задача немного усложнится. Я надеюсь, что данная статья поможет Вам решить ее.

Исходные данные

Имеется сервер с FreeBSD, часть локальных папок которого должна по заданному расписанию синхронизироваться с соответствующими общими папками сервера с Windows. Для репликации файлов и папок будет использоваться утилита cpbk, установленная из портов, поэтому я настоятельно рекомендую Вам обновить порты перед выполнением действий, описанных ниже.

Добавление поддержки SMBFS

Для того, чтобы сервер с FreeBSD мог использовать ресурсы серверов с Windows необходимо добавить в файл конфигурации ядра опции NETSMB, NETSMBCRYPTO, LIBMCHAIN, LIBICONV, SMBFS, пересобрать ядро и перезагрузить систему. Написано позже: начиная с FreeBSD версии 5.0, в состав операционной системы включен автоматически загружаемый модуль ядра для поддержки SMBFS, поэтому можно обойтись без выполнения рекомендаций, приведенных в данном разделе.

Файл конфигурации утилит SMBFS

Утилиты SMBFS используют глобальный файл конфигурации /usr/local/etc/nsmb.conf, а также пользовательские файлы конфигурации $HOME/.nsmbrc. Опции, заданные в глобальном файле конфигурации, имеют приоритет по отношению к опциям, заданным в конфигурациях пользователей. Мой файл $HOME/.nsmbrc содержит следующие строки:

[default]
charsets=koi8-r:cp866
nbns=192.168.0.2
workgroup=WORKGROUP
[NTSERVER1:USER1]
password=$$********
[NTSERVER2:USER2]
password=$$********

Секция [default] является общей для всех Windows-серверов. В рассматриваемом случае она задает перекодировку имен файлов для корректной работы с файлами, имена которых содержат русские буквы (charsets), IP-адрес WINS-сервера (nbns), а также имя домена или рабочей группы (workgroup). Секции вида [<Имя сервера>:<Имя пользователя>] задают настройки пользователей, применяемые при работе с серверами (имеются ввиду пользователи и серверы Windows) В рассматриваемом случае секции [NTSERVER1:USER1] и [NTSERVER2:USER2] задают пароли (password) с которыми пользователь USER1 может заходить на сервер NTSERVER1 и пользователь USER2 на NTSERVER2. По умолчанию пароли хранятся в открытом виде. Частично избежать неприятности, связанные с этим, позволяет команда smbutil(1) с опцией crypt, результатом выполнения которой является закодированный пароль (начинается с двух символов $$), однако, такое кодирование обеспечивает защиту только от подглядывания, но не спасает от специалистов-взломщиков, поэтому права доступа к файлам конфигурации утилит SMBFS должны устанавливаться очень внимательно. Для тестирования созданной конфигурации SMBFS можно смонтировать общую папку Windows-сервера с помощью команды mount_smbfs(8) с ключом -v, а затем размонтировать ее с помощью команды umount(8):

mount_smbfs -v //USER1@NTSERVER1/SHARE1 /mnt
umount /mnt

Изменение таблицы файловых систем

Для повышения удобства работы с общими папками Windows-серверов, я рекомендую: во-первых, создать локальные папки, к которым будут монтироваться общие папки, и внимательно установить права доступа к ним, т.к. файлы, расположенные на подключаемых общих ресурсах, по умолчанию получают тех же владельца, группу и права доступа, что и папка, к которой будет произведено монтирование (если Вас не устраивает такое стечение обстоятельств, используйте ключи -d, -f, -u и -g утилиты mount_smbfs), а, во-вторых, добавить определение общих папок, находящихся на Windows-серверах, в таблицу файловых систем операционной системы (файл /etc/fstab):

//USER1@NTSERVER1/SHARE1 /ntserver1/share1 smbfs rw,noauto,noexec,noatime 0 0
//USER2@NTSERVER2/SHARE2 /ntserver2/share2 smbfs rw,noauto,noexec,noatime 0 0

Выполнения указанных действий обеспечит возможность монтирования папок \\NTSERVER1\SHARE1 и \\NTSERVER2\SHARE2 командами:

mount /ntserver1/share1
mount /ntserver2/share2

Репликация данных с помощью cpbk

Установку утилиты cpbk необходимо выполнить из портов:

cd /usr/ports/sysutils/cpbk
make install clean

Cpbk не нуждается в настройке. Для синхронизации двух папок с помощью cpbk следует использовать команду:

cpbk -nr <папка-источник> <папка-приемник>

Ключ -n заставляет cpbk удалять папки и файлы, если ранее они были удалены из папки-источника, а ключ -r заставляет cpbk рекурсивно обрабатывать вложенные папки. Таким образом, cpbk выполняет полную синхронизацию двух папок. Остается написать простенький скрипт, который выполняет монтирование, синхронизацию и размонтирование нужных папок, и запускать это скрипт в нужное время с помощью утилиты cron(8), например, ночью. Приведу пример скрипта, который синхронизирует содержимое локальных папок /backup/share1 и /backup/share2 c содержимым общих папок \\NTSERVER1\SHARE1 и \\NTSERVER2\SHARE2, при этом общие папки временно монтируются к локальным папкам \ntserver1\share1 и \ntserver2\share2 (учтите, что данный скрипт подразумевает наличие соответствий общих папок \\NTSERVER1\SHARE1, \\NTSERVER2\SHARE2 и локальных точек монтирования \ntserver1\share1, \ntserver2\share2 в файле /etc/fstab):

#!/bin/sh
mount -o rdonly /ntserver1/share1
/usr/local/bin/cpbk -nr /ntserver1/share1 /backup/share1
umount /ntserver/share1
mount -o rdonly /ntserver2/share2
/usr/local/bin/cpbk -nr /ntserver2/share2 /backup/share2
umount /ntserver2/share2

Заключение

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

Другие статьи в рубрике ‘FreeBSD » Интеграция с Windows’

Оставьте комментарий

Изображения должны быть включены!