Тремя основными программами резервного копирования являются dump(8), tar(1) и cpio(1).
Для UNIX(R) традиционными программами резервного копирования
являются dump
и restore
. Они
работают с приводом как с набором дисковых блоков, которые расположены
ниже понятий файлов, связей и каталогов, создаваемых файловыми
системами. В отличие от других программ для резервного копирования,
программа dump
выполняет резервное
копирование всей файловой системы, располагающейся на устройстве.
Невозможно выполнить резервное копирование части файловой системы или
дерева каталогов, которые располагаются более чем в одной файловой
системе. Утилита dump
не записывает на ленту файлы
и каталоги, она записывает блоки данных, из которых строятся файлы и
каталоги. Утилита restore
по умолчанию настроена
так, что в процессе своей работы она сохраняет временные файлы в
каталог /tmp/
. В некоторых ситуациях доступного
в /tmp/
места бывает недостаточно: например, если
вы работаете с диска восстановления (recovery disk). В таких
случаях для успешной работы утилиты необходимо указать в переменной
окружения TMPDIR
путь к каталогу на менее заполненной
файловой системе.
Если вы используете программу dump
для работы
с корневым каталогом, при этом не будет выполняться резервное
копирование
/home
, /usr
и многих других
каталогов, так как они обычно являются точками монтирования других
файловых систем или символическими ссылками на эти файловые
системы.
В программе dump
имеются некоторые неудобства,
оставшиеся
от её ранних дней в составе Version 6 операционной системы AT&T
UNIX (примерно 1975). Параметры, используемые по умолчанию, подходят
для 9-дорожечных лент (6250 bpi), но не для современных носителей с
высокой плотностью записи информации (до 62,182 ftpi). Для
использования ёмкостей нынешних накопителей на магнитной ленте эти
параметры могут быть заданы в командной строке.
При помощи rdump
и rrestore
возможно резервное
копирование данных по сети на накопитель, подключенный к другому
компьютеру. Обе программы используют в работе rcmd(3) и
ruserok(3) для доступа к накопителю на магнитной ленте на
удалённом компьютере. Поэтому пользователь, выполняющий резервное
копирование, должен быть указан в файле .rhosts
на
удалённом компьютере. Аргументы для rdump
и
rrestore
должны подходить для использования на
другом компьютере. При выполнении копирования по команде
rdump
на компьютере с FreeBSD на накопитель Exabyte,
подключенный к машине Sun по имени komodo
, используйте
такую команду:
#
/sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1
Будьте осторожны: есть проблемы с обеспечением безопасности при
аутентификации посредством .rhosts
. Внимательно
рассмотрите вашу ситуацию.
Программы dump
и restore
можно использовать в более защищённом режиме посредством
ssh
.
dump
через
ssh#
/sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \ targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz
Либо воспользуйтесь встроенной в dump
возможностью, задав переменную окружения RSH
:
dump
при работе через
ssh с заданием RSH
#
RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0 /usr
Утилита tar(1) также восходит корнями к Version 6 системы
AT&T UNIX (около 1975). tar
работает с
файловой системой, записывая на ленту файлы и
каталоги. Эта утилита
поддерживает не полный набор опций, имеющихся в cpio(1), однако
не требует необычного перенаправления в командной строке, которое
используется в утилите cpio
.
Чтобы скопировать
данные на накопитель Exabyte, подключенный к машине Sun по имени
komodo
, используйте такую команду:
#
tar cf - . | rsh komodo dd of=
tape-device
obs=20b
Если вы беспокоитесь о безопасности создания резервных копий по
сети, то вместо rsh
вам нужно использовать
ssh
.
cpio(1) является оригинальной программой UNIX(R) для обмена
файлами на магнитных носителях. В утилите cpio
имеются опции (кроме всего прочего), позволяющие выполнять изменение
порядка следования байтов, поддерживающие различные форматы архивов и
выполняющие перенаправление данных другим программам. Последняя
возможность делает cpio
прекрасным выбором для
целей установки. cpio
не знает о том, как
работать с каталогами, список файлов должен даваться через
stdin
.
cpio
не поддерживает создание резервных
копий по сети. Вы можете воспользоваться перенаправлением вывода и
программой rsh
для посылки данных на удалённый
накопитель.
#
for f in
directory_list
; dofind $f >> backup.list
done
#
cpio -v -o --format=newc < backup.list | ssh
user
@host
"cat >backup_device
"
Где directory_list это список директорий, c которых Вы хотите
создать резервные копии,
user
@host
это
комбинация пользователь/хост которая описывает того кто
занимается резервированием, и backup_device
это устройство куда копии должны быть записаны (например,
/dev/nsa0
).
pax(1) является ответом IEEE/POSIX(R) на утилиты
tar
и cpio
. В течение многих лет
различные версии программ tar
и
cpio
получались не совсем совместимыми. Так что
вместо того, чтобы попытаться полностью их стандартизировать, POSIX(R)
создал новую утилиту для работы с архивами. pax
пытается читать и писать различные форматы cpio
и tar
, и, кроме
того, свои собственные новые форматы. Набор команд этой утилиты больше
напоминает cpio
, чем tar
.
Amanda (Advanced Maryland Network Disk Archiver) является целой клиент/серверной системой резервного копирования, а не отдельной программой. Сервер Amanda сможет осуществлять резервное копирование на единственный накопитель любого количества компьютеров, на которых имеется клиент Amanda и которые могут связываться по сети с сервером Amanda. Общей проблемой систем с большим количеством больших дисков является то, что время, требуемое для непосредственной записи данных на ленту, превышает лимит времени, выделенный на эту задачу. Amanda решает эту проблему. Amanda может использовать <<промежуточный диск>> для резервного копирования нескольких файловых систем одновременно. Amanda создаёт <<наборы архивов>>: группа лент, используемых в некоторый период времени для создания полных копий всех файловых систем, перечисленных в конфигурационном файле системы Amanda. <<Архивный набор>> содержит также создаваемый каждую ночь инкрементальные (или дифференциальные) резервные копии всех файловых систем. Восстановление повреждённой файловой системы требует наличия самой последней полной копии и инкрементальных резервных копий.
Конфигурационный файл даёт прекрасный механизм для управления процессом резервного копирования и объёмом трафика, генерируемого системой Amanda. Amanda сможет использовать любую из перечисленных выше программ для записи данных на ленту. Amanda имеется в виде как порта, так и пакета, и по умолчанию она не установлена.
<<Не делать ничего>> - это не программа для компьютера, и в то же время это наиболее широко используемая стратегия резервного копирования. Здесь нет никаких первоначальных затрат. Здесь нет расписания, которому нужно следовать. Просто скажите нет. Если что-то случится с вашими данными, улыбнитесь и забудьте о них!
Если ваше время и данные практически ничего не стоят, то <<не делать ничего>> является самой подходящей программой для вашего компьютера. Но будьте осторожны, POSIX(R) является весьма полезным инструментом, и через полгода вы можете обнаружить, что у вас есть набор файлов, представляющих для вас определенную ценность.
<<Ничего не делать>> является правильным методом
резервного копирования для /usr/obj
и других
деревьев каталогов, которые могут быть в точности перегенерированы
вашим компьютером. Примером являются файлы, представляющие страницы
этого Руководства в форматах HTML или PostScript(R). Они генерируются
из входных файлов в формате SGML. Создавать резервные копии файлов в
форматах HTML и PostScript(R) не нужно. Исходные файлы в формате SGML
копируются регулярно.
dump(8) Точка. Elizabeth D. Zwicky
протестировала все программы резервного копирования, обсуждаемые здесь.
Беспроигрышным вариантом для сохранения всех ваших данных и
особенностей файловых систем UNIX(R) является dump
.
Элизабет создала файловые системы, содержащие большое количество
необычных элементов (и некоторых не так уж необычных) и тестировала
каждую из программ, выполняя резервное копирование и последующее
восстановление этих файловых систем. В число необычных элементов
входили: файлы с дырами, файлы с дырами и блоком пустого места, файлы с
необычными символами в их именах, нечитаемые и незаписываемые файлы,
устройства, меняющие свой размер во время резервного копирования, файлы,
создаваемые и удаляемые во время копирования и тому подобное. Она
представила результаты на конференции LISA V в октябре 1991 года.
Посмотрите ссылку на сайте
torture-testing Backup and Archive Programs.
Вам нужно выполнить всего лишь четыре шага для того, чтобы быть готовым к любому сбою.
Во-первых, распечатайте разметку диска для всех ваших дисков
(к примеру, bsdlabel da0 | lpr
), таблицу файловых
систем (/etc/fstab
) и все сообщения, выводимые
при загрузке, каждого по два экземпляра.
Во-вторых, запишите CD диск с <<livefs>>. Этот диск
позволяет загружаться в режим аварийного восстановления FreeBSD,
давая возможность пользователю выполнять ряд утилит, среди которых
dump(8), restore(8), fdisk(8), bsdlabel(8),
newfs(8), mount(8) и т.д. Образ CD с <<livefs>>
для FreeBSD/i386 11.1-RELEASE находится
по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/11.1/FreeBSD-11.1-RELEASE-i386-livefs.iso
.
В-третьих, регулярно создавайте резервные копии на ленте. Любые изменения, которые вы делали после последнего резервного копирования, могут быть безвозвратно потеряны. На лентах включайте защиту от записи.
В-четвертых, проверяйте работу CD диска
(который вы сделали при выполнении второго шага) и лент
с резервными копиями. Ведите журнал выполняемых действий. Храните
эти записи вместе с загрузочным CD диском, распечатками и лентами.
Вы просто обезумеете при восстановлении данных, если окажется, что
записи помогли бы избежать разрушения ваших резервных копий (Каким
образом? Вместо команды tar xvf /dev/sa0
вы
могли случайно набрать tar cvf /dev/sa0
и тем
самым перезаписать вашу резервную копию).
Для дополнительной страховки, каждый раз создавайте загрузочный CD диск с <<livefs>> и две резервные копии на ленте. Храните одну из копий в каком-то удаленном месте и НЕ в том же здании, где находится ваш офис. Достаточно большое количество компаний во Всемирном Торговом Центре изучило это на своей шкуре. Это удаленное хранилище должно быть физически отделено на большое расстояние от ваших компьютеров и дисковых устройств.
Главный вопрос: выжило ли ваше оборудование? Вы регулярно делали резервные копии, так что нет нужды беспокоиться о программном обеспечении.
Если оборудование было повреждено, должны быть заменены неисправные компоненты.
Если с оборудованием всё в порядке, вставьте CD диск
с <<livefs>> в привод и загрузите
компьютер. На экран будет выведено оригинальное меню установки.
Выберите требуемую страну, потом - пункт меню
, а в нём выберите пункт
. Утилита
restore
и другие
нужные вам программы находятся в каталоге /mnt2/rescue
.
Восстановите по отдельности каждую файловую систему.
Попробуйте выполнить команду mount
(например,
mount /dev/da0a /mnt
) по отношению к корневому
разделу вашего первого диска. Если метка диска была испорчена,
то воспользуйтесь командой bsdlabel
для
переразбиения на
разделы и разметки диска так, чтобы получившаяся метка совпала с той,
которая вами была распечатана и сохранена. Для повторного создания
файловых систем используйте утилиту newfs
. Повторно
смонтируйте корневой раздел диска в режиме чтения-записи
(mount -u -o rw /mnt
). Воспользуйтесь вашей
программой резервного копирования и резервными копиями на лентах для
восстановления данных для этой файловой системы (например.
restore vrf /dev/sa0
). Размонтируйте файловую
систему (например, umount /mnt
). Повторите эту
процедуру для каждой файловой системы, которая была повреждена.
Как только ваша система заработает, сделайте резервную копию на новые ленты. Что бы ни вызвало сбой или потерю данных, это может случиться снова. Ещё один час, потраченный в этот момент, может спасти вас от неприятностей в будущем.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.