Приемы профессиональной работы в UNIX


ПОЯСНЕНИЯ


В строках 4-9 производится проверка аргументов командной строки. Если указано меньше двух аргументов, этого недостаточно. Как минимум должны быть указаны имена каталога-источника и каталога-приемника. Более трех аргументов слишком много. Самое большее, там должны быть опция -s, каталог-источник и каталог-приемник.

В строках 11-15 устанавливаются ключи команды cpio. По умолчанию это pdv, что означает "pass" (передача) для копирования в формате файловой системы (в отличие от необработанного потока данных), "directory" (каталог) для создания каталога при необходимости и "verbose" (многословный) для выдачи имен файлов по мере их копирования. Если первым позиционным параметром является ключ -s, который указывает запуск cptdir в молчаливом режиме, ключи команды cpio не содержат ключа выдачи сообщений и, таким образом имена файлов не выдаются на экран.

Строки 17,18 и 19 устанавливают каталоги "откуда" и "куда" и устанавливают переменную umask в 0. Переменная umask определяет подразумеваемые права доступа для всех файлов, созданных нашим командным процессором. Мы изменяем umask для гарантии того, что все файлы копируются в дерево-приемник и ни один из них не будет заблокирован из-за отсутствия прав чтения или записи. Побочным эффектом является то, что все каталоги имеют права доступа вида rwxrwxrwx, а все файлы - вида rw-rw-rw-, что может потребовать изменений для обеспечения вашей безопасности. Изменение umask имеет действие только на время работы процедуры. Когда cptdir завершается, umask вашего вызывающего командного процессора остается неизменным.

Строки 21-29 выполняют проверку каталога-приемника. Если он уже существует, вас запрашивают, нужно ли его удалить и заново создать. Если он не существует, он создается для работы cpio.

Строки 31-36 выполняют непосредственно копирование. Прежде чем объяснить, что здесь делается, давайте сперва посмотрим, как работает cpio. Поскольку оператор find генерирует список файлов, нам необходимо представлять, как его выход может влиять на выполнение cpio.

Если мы указали "find . -print", то полные имена файлов будут иметь точку впереди, например:




Начало  Назад  Вперед