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


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

Необходимо организовать резервное копирование содержимого общих папок \NTSERVER1SHARE1 и \NTSERVER2SHARE2, находящихся на серверах с Windows, в папки /backup/share1 и /backup/share2 локальной файловой системы сервера с FreeBSD по заданному расписанию. Для выполнения резервного копирования (синхронизации) файлов и папок следует использовать утилиту cpbk, установленную из свежеобновленной коллекции портов.
Добавление поддержки SMBFS

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

По умолчанию утилиты SMBFS используют глобальный файл конфигурации /etc/nsmb.conf и пользовательские файлы конфигурации ~/.nsmbrc. Опции, заданные в глобальном файле конфигурации, переопределяют опции, заданные в файлах конфигурации пользователей. Лично я использую файл конфигурации .nsmbrc, находящийся в домашней папке суперпользователя root. В рассматриваемом случае этот файл должен обеспечивать корректную перекодировку русских букв в именах файлов и папок, возможность обращения к серверам с Windows по именам NetBIOS и возможность подключения к выбранным общим папкам без ввода пароля. С учетом сказанного файл ~/.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 к конкретным серверами с Windows. В рассматриваемом случае они содержат пароли password. По умолчанию пароли хранятся в открытом виде. Для частичного избавления от данной неприятности предназначена команда smbutil crypt <пароль>, результатом выполнения которой является закодированный пароль. В связи с тем, что кодирование не является шифрованием и спасает только от подглядывания, не забудьте выполнить команду chmod 600 ~/.nsmbrc, которая запретит доступ к файлу ~/.nsmbrc всем, кроме владельца. Для тестирования созданного файла конфигурации можно запросить списки общих папок серверов с Windows командами:


smbutil view //USER1@NTSERVER1
smbutil view //USER2@NTSERVER2


а также создать точки монтирования и попытаться смонтировать выбранные общие папки серверов с Windows командами:

mkdir -p /ntserver1/share1 /ntserver2/share2
mount -t smbfs //USER1@NTSERVER1/SHARE1 /ntserver1/share1
mount -t smbfs //USER2@NTSERVER2/SHARE2 /ntserver2/share2


Если Вы были внимательны, команды smbutil... и mount... отработают без ошибок и ни разу не попросят Вас ввести пароль.
Обновление таблицы файловых систем

Для повышения удобства работы необходимо добавить общие папки серверов с Windows в таблицу файловых систем /etc/fstab:
//USER1@NTSERVER1/SHARE1 /ntserver1/share1 smbfs rw,noauto 0 0
//USER2@NTSERVER2/SHARE2 /ntserver2/share2 smbfs rw,noauto 0 0


Теперь для монтирования общих папок \NTSERVER1SHARE1 и \NTSERVER2SHARE2 можно будет использовать команды:1
2 mount /ntserver1/share1
mount /ntserver2/share2

Синхронизация данных с помощью cpbk

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


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


Cpbk не нуждается в дополнительной настройке, поэтому для решения поставленной задачи остается подготовить простейший скрипт, который будет запускаться по необходимому расписанию с помощью cron'а и выполнять монтирование, синхронизацию и размонтирование нужных папок. С учетом описанного выше обновления таблицы файловых систем такой скрипт должен иметь примерно такое содержимое:1

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


Ключи -nr утилиты cpbk обеспечивают удаление файлов и папок, которые отсутствуют в папке-источнике, и рекурсивную обработку вложенных папок (в результате в папке-приемнике создается точная копия содержимого папки-источника), а благодаря наличию ключа -o rdonly команды mount, общие папки серверов с Windows монтируются только для чтения. Для того, что созданный скрипт ежесуточно запускался в полночь, следует войти в систему под именем суперпользователя root, выполнить команду crontab -e и добавить в открывшуюся crontab строку:1 0 0 * * * <Полное имя скрипта резервного копирования>

Заключение

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

http://www.sergeysl.ru/freebsd-backup-from-windows/

Обновлено: 12.03.2015