пользователь должен нести ответственность за расход дискового прост-
ранства. (Если вы платите за дисковую память, то у вас также могут быть
финансовые стимулы.) Однако, то, что вы хотите сохранить, вы хотите
СОХРАНИТЬ. Именно здесь начинается работа по созданию резервных копий.
3.1. СОПРОВОЖДЕНИЕ ФАЙЛОВ
В предыдущей главе мы разработали некоторые средства поиска и
отображения информации, помогающие нам поддерживать жизненный путь всех
наших файлов. Теперь мы собираемся обратиться к важнейшим рутинным ра-
ботам, которые позволят избежать хаоса и катастрофы.
Сопровождение файлов означает избавление от файлов, которые нам
больше не нужны и в то же время систематическое копирование тех файлов,
которые мы хотим сохранить. Для этого требуется возможность использова-
ния разнородных доступных носителей данных. Сопровождение файлов подра-
зумевает также ряд систематических, повторяющихся задач, а это означа-
ет, что мы можем создать средства системы UNIX для автоматизации этого
процесса.
3.1.1. ОПЕРАЦИИ СОПРОВОЖДЕНИЯ
Сопровождение файлов включает два вида операций: создание резерв-
ных копий (копирование) и удаление "мусора".
Копирование - это дань уважения, которую мы платим за хрупкость
физических данных в руки Мерфи и других богов энтропии. Хорошее
средство копирования является быстрым, гибким, простым в использовании
и стимулирует пользователей часто копировать самые важные файлы. В
последующем тексте будут представлены различные методы копирования,
пригодные для разных конфигураций системы и типов носителей.
Имеется два вида резервных копий: "мягкие" и "твердые". "Мягкие"
резервные копии - это копии в другом файле или каталоге в той же или в
другой файловой системе (т.е. разделе) на том же или другом жестком
диске. Такого рода копирование сделать легко и оно предохраняет от на-
носимого самому себе ущерба, такого как удаление файла по невниматель-
ности. Чаще всего для такого типа копирования используется наше
средство cptdir. Основной недостаток мягкого копирования заключается в
том, что вы по-прежнему уязвимы для таких воздействий, которые влияют
на ваш физический носитель (обычно жесткий диск) так, что и оригинал и
копия оказываются разрушенными.
"Твердая" копия - это копия на другом устройстве или даже в другой
системе UNIX. Средства, представленные ниже в данной главе, управляют
такого рода копированием и дают вам возможность выполнять копирование
такого типа и с такой периодичностью, которые соответствуют объему ва-
шей вычислительной системы, уровню ее активности и важности хранимых
данных.
Твердое копирование всегда несколько утомительно, потому что диски
или ленты должны быть смонтированы (или должна быть установлена связь с
другой системой), а эта операция требует много времени. Преимущество,
естественно, заключается в том, что вы больше не зависите от целост-
ности какого-либо одного устройства.
Автоматизируя нашу процедуру копирования, мы стараемся сделать его
как можно менее болезненным. Делая наши средства копирования в какой-то
степени разумными, мы можем выбрать только файлы, которые нуждаются в
копировании, и тем самым сохранить время и память. Наилучший способ
обеспечить, чтобы копирование выполнялось регулярно - минимизировать
время и требуемые для этого усилия. Наконец, создание процедур для про-
верки правильности копий даст вам спокойствие духа.
"Удаление мусора" можно автоматизировать путем указания и подго-
товки к удалению файлов, которые, вероятно, будут временными, либо ка-
ких-то других файлов, которые созданы (но не обязательно разрушены) при
компиляции, выполнении конвейеров или другими операциями. Вы также мо-
жете указывать файлы, специфичные для ваших работ как не подлежащие
удалению.
3.1.2. СРЕДСТВА ПЕРЕСЫЛКИ ФАЙЛОВ
Первая группа средств - это простые универсальные переносчики фай-
лов. Программа cptdir может копировать каталог (и любые подчиненные ка-
талоги, лежащие ниже в дереве) в каталог-приемник. Каталог-приемник -
это обычно каталог, назначенный в качестве резервной копии для некото-
рого проекта.
Программа can берет на себя необходимую рутинную работу - убирает
"мусор". Эта программа позволяет вам выбрать типы временных файлов, ко-
торые должны периодически удаляться. Направляя их в "мусорный" каталог,
can предоставляет вам возможность просмотреть все, что было удалено, и
восстановить то, что вы на самом деле хотите сохранить.
Программа dosflp допускает применение символов-шаблонов в именах
файлов, используемых при копировании отобранных файлов с дискет формата
MS-DOS в XENIX. Это упрощает операцию копирования и уменьшает число на-
жатий на клавиши.
3.1.3. СРЕДСТВА КОПИРОВАНИЯ
Далее представляется "рабочая лошадка" - средства копирования.
Autobkp использует список маршрутных имен, чтобы определить, какие
части файловой системы должны быть проверены. Затем эта программа копи-
рует из выбранных областей те файлы, которые были добавлены или измене-
ны в последние 24 часа.
Cpiobr предоставляет интерактивное дополнение к команде cpio
системы UNIX. Она позволяет вам скопировать файлы с жесткого диска на
гибкий и, если необходимо, восстановить их с гибкого диска на жесткий.
3.1.4. СРЕДСТВА ПРОВЕРКИ ОПЕРАЦИЙ КОПИРОВАНИЯ
Выполнение копирования не избавит вас от волнений, пока вы не бу-
дете знать, что вы скопировали все, что хотели, и что копирование прош-
ло корректно. Программа dsum использует контрольную сумму для проверки
того, что исходный каталог и каталог-копия содержат одни и те же файлы.
Программа log отображает регистрационный файл, чтобы показать, какое
автоматическое копирование выполнялось в четыре часа утра, когда вы
(надеемся) спали.
При создании этих средств мы просмотрим некоторые важные команды
системы UNIX и обнаружим новые способы их использования. Когда вы про-
работаете всю данную главу, вы будете знать, как работать "с мельчайши-
ми частицами" при использовании файловой системы UNIX. Вы сможете авто-
матизировать иную большую область ваших компьютерных будней. Вы должны
суметь создать пользовательские утилиты копирования и верификации,
удовлетворяющие вашим нуждам. Вы сможете перевести вашу систему в режим
работы, обеспечивающий ей самостоятельное выживание. (Мы оставляем фи-
лософам определять, даст ли это вашему компьютеру примитивную форму
жизни!)
Между прочим, многие средства в данной главе пользуются преиму-
ществами рекурсивных методов обхода дерева, которые мы разработали в
предыдущей главе. Вы можете просмотреть тот материал, если у вас име-
ются затруднения в понимании того, что представлено здесь.
3.2. ПЕРЕСЫЛКА ФАЙЛОВ
3.2.1. cptdir - копирование дерева каталога
ИМЯ: cptdir
cptdir Копирует дерево каталога в другое место
ФУНКЦИЯ
Копирует дерево файловой системы, корень которого расположен в ка-
талоге, в другой каталог системы. Нет ограничений на какой-либо специ-
фический каталог или жесткий диск.
ФОРМАТ
cptdir [-s] каталог-источник каталог-приемник
ПРИМЕР ВЫЗОВА
cptdir $HOME /bkp
Копирует каждый файл из $HOME в каталог /bkp.
КОМАНДНЫЙ ФАЙЛ cptdir
1 :
2 # &(#) cptdir v.1.0 Copy a directory tree Autor: Russ Sage
4 if [ $# -lt 2 -o $# -gt 3 ]
5 then echo "cptdir: argument error" >&2
6 echo "usage: cptdir [-s] srcdir desdir" >&2
7 echo " -s silent mode" >&2
8 exit 1
9 fi
11 if [ "$1" ="-s" ]
12 then OPT="-pd"
13 shift
14 else OPT="-pdv"
15 fi
17 SRC=$1
18 DEST=$2
19 umask 0
21 if [ -d $DEST ]
22 then echo "\"$DEST\" already exist. Remove it? (y/n): \c"
23 read CMD
24 if [ "$CMD" = "y" ]
25 then rm -rf $DEST
26 mkdir $DEST
27 fi
28 else mkdir $DEST
29 fi
31 if [ "`echo $DEST|cut -c1`" = "/" ]
32 then cd $SRC
33 find . -print | sort | cpio $OPT $DEST
34 else PWD=`pwd`
35 cd $SRC
36 find . -print | sort | cpio $OPT $PWD/$DEST
37 fi
ПЕРЕМЕННЫЕ СРЕДЫ
CMD Команда, полученная от пользователя
DEST Каталог-приемник, в который нужно копировать
OPT Опции, которые передаются утилите cpio
PWD Текущий рабочий каталог
SRC Каталог-источник, из которого нужно копировать
Описание
Зачем нам нужен cptdir?
Мы уже отмечали необходимость в дополнительных командах, которые
рекурсивно обходят древовидную структуру файловой системы UNIX. В ран-
них версиях UNIX единственная команда tar могла управлять движением по
дереву. В более новых версиях системы имеется опция -r в команде cp,
которая делает cp рекурсивной (эта возможность реализована только в
последней версии System V) и команда cpio. Последняя является многоце-
левой командой копирования, которая может иметь дело как с потоковым
форматом, так и с форматом файловой системы.
Проблема при использовании даже таких улучшенных стандартных ко-
манд системы UNIX состоит в том, что вам необходимо указать множество
деталей и убедиться в том, что вы правильно используете синтаксис.
Ошибки могут привести к потере времени и даже хуже того, к неожиданным
побочным эффектам. С некоторыми из этих эффектов связаны изменения прав
доступа и владельца, порядок распределения индексных дескрипторов фай-
лов (inode), размещения файлов-приемников и результирующие полные име-
на. Очень много необходимо запомнить и заново вызывать каждый раз при
копировании. Поскольку такое копирование делается не часто, тяжело за-
помнить все эти детали. Мы разрешаем эту проблему, автоматизируя детали
процесса и в то же время предоставляя пользователю гибкость и управле-
ние результатами. Мы создаем инструменты для управления файлами, кото-
рые являются хорошими дополнительными средствами к основным командам
системы UNIX.
Что делает cptdir?
Процедура cptdir копирует каталог (и все дерево под ним, если оно
существует) в другой каталог системы. Поскольку каталоги предусматрива-
ют логический доступ и не являются аппаратно-зависимыми (в отличие от
имен устройств), то вы можете легко копировать файлы в другое место на
том же диске или копировать их на другой диск полностью без специально-
го синтаксиса или опций.
Вы можете указать, хотите ли вы, чтобы на экран выводились имена
копируемых файлов. Если вы не хотите этого, используйте опцию -s