Операционная система UNIX - Программирование, компьютеры и кибернетика контрольная работа

Операционная система UNIX - Программирование, компьютеры и кибернетика контрольная работа



































Права доступа к файлам и управление ими и другими атрибутами. Значения прав доступа для файлов и директорий. Набор файловых флагов. Команды управления процессами в операционной системе UNIX. Опции и значения программ архивации и сжатия - tar и gzip.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Обнинский институт атомной энергетики - филиал
федерального государственного бюджетного образовательного учреждения высшего профессионального образования национальный исследовательский ядерный университет «мифи»
1. Права доступа к файлам и управление ими и другими атрибутами
Как и в любой многопользовательской системе, в операционных системах Unix, есть механизм управления доступом пользователей к тем или иным ресурсам системы (процессорное время, память, файлы, директории и прочее). Основными участниками данного механизма являются: Пользователь (user), Группа (group), Другие (Other), основными правами доступа в Unix, являются:
Соответственно, в Unix, права доступа и участники, сгруппированы три по три, read/write/execution для user/group/other.
Кроме вышеупомянутых прав доступа, операционные системы Unix, поддерживает "файловые флаги", для обеспечения дополнительного уровня защиты, контроля и управления объектами системы. Например, с помощью флагов, можно запретить удаление файла, даже пользователю root.
Вообще, правильней говорить не о правах пользователей, на тот или иной файл/директорию, а о правах процессов, так как все манипуляции с файлами (создание, чтение, изменение, удаление), производятся с помощью какой-то программы, например текстового редактора, который в запущенном виде, собственно и является процессом.
Каждому пользователю системы, присваиваются идентификаторы, UserID (идентификатор пользователя) и GroupID (идентификатор группы), именно по ним операционная система определяет владельца и группу для того или иного объекта системы. Символические имена назначаются исключительно для удобства чтения, пользователями.
Каждый процесс в операционной системе Unix, имеет не два, а четыре идентификатора, это, реальный UserID (UID) и эффективный UserID (UID) а так-же реальный и эффективный идентификатор группы GroupID (GID). Реальный UserID (Реальный GroupID) - реальные номера применяются для учета использования системных ресурсов. Эффективный UserID (Эффективный GroupID) - новый идентификатор, полученный процессом уже во время выполнения, применяются для определения прав доступа.
Процессы запущенные автоматически (например при старте системы), также получают UserID, какой именно, определяется запускающей программой (cron, inetd и т.д.), в обычных случаях, UserID наследуется от родительского процесса. Некоторые процессы - "родители", могут присваивать, дочернему процессу - "потомку", UserID, не совпадающий со своим.
Иногда, запущенный процесс, может во время выполнения, менять свои идентификаторы. Это происходит, когда в правах доступа на файл, установлены дополнительные биты, SUID (Set user ID - бит смены идентификатора пользователя) и SGID (Set group ID - бит смены идентификатора группы). Когда пользователь или процесс запускает файл, у которого установлен один из этих битов, процессу, временно присваиваются права владельца данного файла (а не того, кто его запускает). Таким образом, обычный пользователь, может выполнять команды от имени пользователя root.
Как было упомянуто выше, права доступа к файлам и директориям, определяются по Реальному UserID и Реальному GroupID. Если идентификатор не меняется в процессе выполнения программы, Реальный UserID (реальный GroupID) и Эффективный UserID (эффективный GroupID) совпадают.
Система обеспечения прав доступа в операционных системах Unix, имеет числовое и символическое, выражения. Числовое выглядит следующим образом:
Плюс к этому, биты смены идентификаторов SUID и SGID, восьмеричные значения 4000 и 2000, как было сказано выше, они обеспечивают программам, доступ к файлам и процессам, к которым в обычных условиях, пользователь доступа не имеет. В случае установки бита SGID для директории, созданные в ней файлы, при запуске, будут принимать идентификатор группы каталога, а не группы в которую входит владелец файла.
Существует еще один бит с восьмеричным значением 1000, так называемый Stiky-bit (липучка). Если данный бит установлен на директорию, содержащиеся в ней файлы, разрешено удалять и переименовывать, только в случае, если пользователь является, владельцем каталога, владельцем файла или это пользователь root.
Символические выражения для установки прав доступа. В качестве аргументов команды chmod, вместо восьмеричных значений, используются буквенные эквиваленты.
Чтобы посмотреть права доступа и владельцев на файлы и директории в режиме листинга, можно использовать команду ls с флагом -l.
2 - права доступа для пользователя (744)
В данном листинге видно, что владельцем всех файлов является пользователь root и группа wheel. Первый символ слева в колонке прав доступа, означает тип объекта, объекты могут быть следующих типов:
- Обычный файл. b Специальный файл блочного устройства. c Файл символьного устройства. d Директория. l Символьная ссылка. p FIFO. s Сокет. w Whiteout (скрытый).
В вышеприведенном примере: file.txt и file.sh - являются файлами, test_dir - директория.
Начиная со второго бита, запись делится по 3 символа, для пользователя, для группы, для других, в нашем случае:
· Файл file.txt, доступен на чтение и запись - пользователя, только для чтения - группой и для чтения - другим;
· Файл file.sh, доступен на чтение, запись и выполнение - пользователем, только для чтения - группой, для чтения - другим;
· test_dir, является директорией и имеет следующие права доступа, для пользователя: чтение, запись, выполнение; для группы: чтение, выполнение; для других: чтение, выполнение;
Если установлен бит SUID, то в секции 2 (права доступа для пользователя), вместо значения "х", будет стоять "s", если установлен бит SGID, так-же будет поставлен символ "s", но уже в секции 3 (права доступа для группы), ну и если установлен Styky-bit, в последней позиции, секции 4 (права доступа для других), будет установлен символ "t".
В случае, если какой-либо из этих битов был установлен, и при этом не был установлен соответствующий бит выполнения, будут установлены символы "S" для SUID и SGID и "T" для Stiky-bit, что сигнализирует об ошибке и данные атрибуты будут проигнорированы.
Не лишним будет заметить, что в операционных системах Unix, значения прав доступа для файлов и директорий, несколько различаются.
· r (Read) - чтение. Соответствующий пользователь (процесс), имеет права на чтение содержимого данного файла, и копирования этого файла.
· w (Write) - запись. Соответствующий пользователь (процесс), имеет права редактировать, изменять, удалять содержимое файла, добавлять в него что-либо (например содержимое другого файла). Однако, это не дает прав на удаление или переименование самого файла, это определяется правами доступа на директорию, в которой этот файл находится.
· x (eXecute) - выполнение. Дает право, соответствующему пользователю (процессу), запускать данный файл, при условии что он является исполняемой программой или скриптом.
· r (Read) - чтение. Разрешает получение списка содержимого данной директории (файлов, поддиректорий), однако, это еще не означает, что можно получить доступ к содержимому данной директории, читать, изменять или запускать файлы, находящиеся в ней, даже при условии, что права на самих файлах это разрешают. Как правило, данный атрибут устанавливается совместно с правами доступа на запуск, "x" (eXecute).
· w (Write) - запись. Атрибут, позволяющий менять содержимое директории, то есть, создавать в ней новые файлы, копировать в нее файлы из других директорий, переименовывать и удалять файлы.
· x (eXecute) - выполнение. Данный атрибут, в контексте директории, означает, что соответствующий пользователь, может зайти в директорию, получив доступ к файлам и поддиректориям и выполнять с ними какие-либо действия, при условии что права на самих файлах, это позволяют.
Важно помнить, что система полностью проверяет путь до конкретной поддиректории или файла, на наличие прав доступа, к каждому участку данного пути, и если на кокой-либо участок пути, не установлен соответствующий бит прав доступа (x), пользователю будет отказано в доступе. Проще говоря, есть путь: /usr/home/vds-admin/public_html/, даже если пользователь имеет достаточные права на поддиректории public_html, но на вышестоящую директорию, home, бит x не установлен, при попытке зайти в поддиректорию, ему будет отказано в доступе.
Кроме вышеперечисленных атрибутов управления правами доступа к объектам, в операционных системах Unix, есть еще один, так сказать, более сильнодействующий инструмент - набор файловых флагов.
Флаги файлов, работают глобально, влияя одинаково на всех пользователей, в том числе, на владельца файла и на пользователя root. Правда владелец файла, как и пользователь root, могут снять флаги и делать с файлом все что угодно, но это уже зависит от того, какой и кем был установлен флаг и на каком уровне безопасности работает система в данный момент.
По правам доступа на установку, изменение, снятие, файловые флаги можно разделить на две категории.
· Пользовательские - флаги доступные для изменения владельцу фала и пользователю root.
· Суперпользовательские - флаги доступные для изменения, только пользователю root.
В операционных системах Unix, используются следующие флаги:
· arch (archived) - архивный файл.(только пользователь root)
· sappnd (sappend) - в данный файл можно только дописывать, то есть уже имеющуюся информацию изменить нельзя. Если флаг установлен на директорию, нельзя удалять или переименовывать файлы, но можно создавать или копировать (только пользователь root)
· schg (schange, simmutable) - неизменяемый файл, нельзя ни переименовывать, ни изменять, ни удалять. Если данный флаг установлен на директории, то вы не сможете добавлять или удалять файлы, но менять содержимое уже имеющихся, сможете.(только пользователь root)
· sunlnk (sunlink) - файл не может быть переименован или удален. Содержимое изменить можно при соответствующих правах доступа. (только пользователь root)
· nodump - не включать данный файл в дамп. (владелец файла и пользователь root)
· uappnd (uappend) - то-же что и для пользователя root, плюс для владельца файла.
· uchg (uchange, uimmutable) - то-же, что и для пользователя root, плюс для владельца файла.
· uunlnk (uunlink) - то-же, что и для пользователя root, плюс для владельца файла.
Например, чтобы установить на файл флаг schg (неизменяемый), нужно выполнить следующую команду:
vds-admin /test# chflags schg test_file
Посмотреть установленные флаги можно командой ls c опциями -lo.
-rw-r--r-- 1 root wheel schg 0 Jun 21 07:33 test_file
Кроме того, можно установить сразу несколько флагов, перечислив их через запятую:
vds-admin /test# chflags schg, arch, suppnd test_file
-rw-r--r-- 1 root wheel sappnd,arch,schg 0 Jun 21 07:33 test_file
Снять флаг можно, добавив к его названию, приставку "no":
-rw-r--r-- 1 root wheel schg 0 Jun 21 07:33 test_file
vds-admin /test# chflags noschg test_file
-rw-r--r-- 1 root wheel - 0 Jun 21 07:33 test_file
Так-же есть возможность сбросить все флаги, для этого вместо флага, достаточно просто поставить "0" (ноль).
-rw-r--r-- 1 root wheel sappnd,arch,schg 0 Jun 21 07:33 test_file
vds-admin /test# chflags 0 test_file
-rw-r--r-- 1 root wheel - 0 Jun 21 07:33 test_file
Основные команды для установки и изменения прав доступа и работы с флагами в операционных системах Unix
Основными утилитами для работы с правами доступа и флагами, в операционной системе Unix, являются следующие:
· ls -l, ls -lo Листинг каталога, без флагов и с флагами
· chown Изменение владельца объекта
· chmod Установка, удаление, изменения прав доступа к объекту
· chflags Установка, удаление, изменение файловых флагов
В UNIX (и большинстве современных операционных систем, как-то Microsoft® Windows®, Mac OS X, FreeBSD и Linux®) каждая задача представляется как процесс. UNIX способен выполнять много задач одновременно, потому что процессы поочередно выполняются на центральном процессоре в течение очень непродолжительного промежутка времени.
Процесс - это нечто вроде контейнера, объединяющего выполняемое приложение, его переменные среды, состояние потоков ввода/вывода приложения и параметры процесса, включающие в себя его приоритет и степень использования ресурсов системы. Рисунок 1 иллюстрирует понятие процесса.
Рисунок 1. Концептуальная модель процесса в UNIX
Можно представлять процесс как независимое государство со своими границами, ресурсами и валовым национальным продуктом.
Каждый процесс имеет своего владельца. Задачи, инициализируемые пользователем, например, его shell и командами, обычно принадлежат этому пользователю. Системные процессы могут принадлежать пользователям с особыми правами или системному администратору root. Например, для повышения безопасности Apache HTTP Server обычно принадлежит выделенному пользователю с именем www, который предоставляет Web-серверу только доступ к файлам, которые ему необходимы для работы.
Владелец процесса может меняться. У одного процесса не может быть одновременно двух владельцев.
Наконец, каждый процесс имеет привилегии. Обычно привилегии процесса соответствуют статусу его владельца в ОС. Например, если пользователь не может получить доступ к какому-либо файлу через команду shell, то программы, которые он запустит при помощи этой оболочки, наследуют то же ограничение на доступ к этому файлу. Правило наследования привилегий можно обойти, т.е. процесс может получить большие привилегии, чем его владелец, если запустить процесс командой, в которой помимо всех прочих действий активируется специальный бит setuid или setgid, как показано на примере ls.
Бит setuid можно задать при помощи chmod u+s. Права доступа, заданные при помощи setuid, выглядят так:
-rwsr-xr-x 1 root wheel 83088 Mar 20 2005 top
Бит setgid может быть задан при помощи chmod g+s:
-r-xr-sr-x 1 root tty 19388 Mar 20 2005 /usr/bin/wall
Процесс setuid-, например запускаемый процесс top, выполняется с привилегиями пользователя, которому принадлежит. Следовательно, если запустить top, то у пользователя будут привилегии администратора. Соответственно, процесс setgid выполняется с привилегиями группы владельцев файла.
Например, в Mac OS X, утилита wall, укороченное от "write all", сокращение от write all (отправляет сообщение на каждый физический или виртуальный терминал), задана с setgid tty (как показано выше). Когда пользователь зашел в систему и выбрал терминал, с которого будет вводить команды (терминал становится стандартным каналом ввода для shell), то он становится владельцем терминала, а tty становится группой владельцев. Ввиду того что wall выполняется с привилегиями группы tty, он может открывать и писать вывод на любой терминал.
Как и для других системных ресурсов, UNIX-система имеет достаточно большой пул процессов. Каждая новая задача, например, запуск vi или xclock, немедленно получает процесс из пула. На UNIX-системах можно получить информацию о процессах при помощи команды ps.
Например, если пользователю нужно вывести список процессов, которыми он владеет, то нужно ввести ps -w --user username :
Полностью список процессов можно увидеть при помощи команды ps -a -w -x. Флаги для команды ps отличаются в зависимости от версии UNIX. Для подробной информации по этой команде изучите документацию к своей системе. Флаг -a выбирает все процессы, выполняющиеся на терминале tty. Флаг -x выводит все процессы, не ассоциированные с tty, которые, обычно являются всевозможными системными службами, например, сервер Apache HTTP, утилита-планировщик cron и прочее. Флаг -w предоставляет расширенный набор информации, в который входит, в частности, полный путь к приложению, ассоциированному с каждым процессом.
Утилита ps имеет множество опций, а некоторые версии ps позволяют настраивать отображение результатов работы команды. Например, ниже представлен специальным образом настроенный список процессов:
$ ps --user mstreicher -o pid,uname,command,state,stime,time
14138 mstreic sshd: mstreicher S 09:57 00:00:00
14139 mstreic -bash S 09:57 00:00:00
14937 mstreic ps --user mstrei R 10:23 00:00:00
Флаг -o настраивает отображение результатов работы команды ps согласно названиям столбцов, переданных параметрами на вход. Параметры pid, uname и command соответствуют столбцам process ID, user name и command соответственно. Параметр state показывает состояние процесса, например, ждущий режим (S) или выполняемый процесс (R), про состояния процесса мы еще поговорим позже. Параметр stime показывает, когда процесс стартовал, и time показывает, как много времени процесс использовал центральный процессор.
В UNIX некоторые процессы выполняются с момента загрузки компьютера до его выключения, но большинство процессов имеет короткий жизненный цикл, ограничивающийся началом и окончанием выполнения задачи. Иногда процесс может быть принудительно завершен. Откуда берутся новые процессы?
Каждый новый процесс в UNIX является перевоплощением существующего процесса. Или, по другому, каждый новый процесс - давайте называть его дочерним - является клоном своего процесса-родителя хотя бы на мгновенье, пока дочерний процесс не начнет выполняться самостоятельно. (Если каждый новый процесс является потомком уже существующего процесса, появляется вопрос "Откуда появился первый процесс?" Посмотрите на врезке ниже ответ на этот вопрос.)
Некоторые споры бесконечны: быть или не быть? PC или Mac? Есть и более старый вопрос: что появилось первым, курица или яйцо?
Если каждый новый процесс в UNIX порождается уже существующим и выполняющимся процессом, откуда берется первый процесс? Ответ: ядро ОС UNIX порождает первый процесс по ходу процесса загрузки.
Имя первого процесса - init, он является "предком" всех других системных процессов. Номер процесса init - 1. Определить статус выполнения этого процесса можно при помощи команды ps -l 1:
Как можно увидеть, владельцем (UID) процесса init является системный администратор (0). В отличие от любого другого процесса init не имеет процесса-родителя, так как идентификатор родительного процесса (Parent Process ID (PPID)) соответствует 0.
На рисунках 1 - 4 детально описан механизм создания процесса:
1. На рисунках 2 и 3, процесс A (Process A) соответствует программе, представленной фиолетовым прямоугольником. Он выполняет инструкции, пронумерованные как 10, 11, 12 и так далее. Процесс A имеет свои собственные данные, свою собственную копию программы, набор открытых файлов, и свою собственную коллекцию переменных среды, которые были собраны, как только процесс А начал свое выполнение.
В UNIX системный вызов fork() (называется так потому, что является вызовом или запросом к операционной системе) используется для создания нового процесса. Когда процесс A выполнит вызов fork() в 13-й инструкции, система немедленно создаст точный клон процесса A - процесс Z. Процесс Z имеет те же переменные среды, что и A, то же содержимое памяти, то же состояние выполнения программы и те же самые открытые файлы. Состояние процессов A и Z сразу после того, как процесс А породил процесс Z, показано на рисунке 3.
2. В самом начале своего существования процесс Z начинает выполняться с того самого места, где прекратил свое выполнение процесс A. После этого процесс Z начинает выполнение инструкции 14. Процесс A продолжает выполнение той же самой инструкции.
3. Обычно программная логика инструкции 14 проверяет, является ли текущий процесс дочерним или родительским, таким образом, инструкция 14 для каждого из процессов A и Z выяснит, является ли он дочерним или родительским. Системный вызов fork() вернет 0 дочернему процессу и вернет идентификатор процесса (process ID) процесса Z родительскому процессу.
4. После предыдущего теста процесс A и процесс Z расходятся, и каждый начинает выполнять свою собственную задачу. Итак, системный вызов для создания процесса называется fork(), что в переводе означает "разветвление".
После разветвления процесс A может продолжить выполнять все то же приложение. Однако процесс Z может немедленно приступить к выполнению другого приложения. Последняя операция по изменению процесса программой называется исполнением (execution), но более подходит к ней название перевоплощение. Хотя ID процесса остается тем же, инструкции внутри процесса целиком заменяются на новую программу. Рисунок 4 показывает состояние процесса Z на этом этапе.
Рисунок 4. Процесс Z теперь полностью независим от своего предка, процесса A
Более подробно о разветвлении процессов
Процессы можно разветвлять прямо из командной строки. Для начала откроем xterm (мы знаем, что xterm - это наш собственный процесс и в пределах xterm оболочка shell является отдельным процессом, созданным xterm). Далее введем:
ps -o pid,ppid,uname,command,state,stime,time
Результат этой команды будет примерно таким:
16351 16350 mstreic -bash S 11:23 00:00:00
16364 16351 mstreic ps -o pid,ppid,u R 11:24 00:00:00
Согласно полю PPID в этом списке, команда ps является дочерней командой оболочки bash. (Дефис в -bash означает, что данная оболочка является оболочкой входа в систему.) Для выполнения команды ps bash путем разветвления создает новый процесс; новый процесс изменяет себя, превращаясь в новый экземпляр команды ps.
Ниже представлен другой пример. Введем:
sleep 10 & sleep 10 & sleep 10 & ps -o pid,ppid,uname,command,state,stime,time
Результат работы этой команды должен быть примерно таким:
Командная строка создает четыре новых процесса. Вставьте знак амперсанд (&) после каждой команды sleep, тогда эти команды будут работать в фоновом режиме (параллельно с оболочкой). Команда ps - это другой порожденный процесс, но он является высокоприоритетным, что не позволяет оболочке запустить другой процесс до тех пор, пока ps не закончит свое выполнение. Повторюсь, что все четыре процесса порождены оболочкой, о чем говорят значения в столбце PPID. Три процесса sleep имеют метку S и не потребляют ресурсов, пока находятся в спящем режиме.
Для удобства оболочка следит за всеми фоновыми процессами, которые порождает. Список задач можно вывести командой jobs:
Отобразились три процесса, пронумерованные 1, 2, и 3 для удобства. Числа 16843, 16844, и 16845 являются числовыми идентификаторами каждого процесса. Таким образом, идентификатор фонового процесса 1 является 16843.
Можно управлять фоновыми процессами из командной строки, используя их числовые псевдонимы. Например, для завершения команды введем kill %N , где N является числовым псевдонимом процесса (его меткой). Чтобы повысить приоритет команды, которая работает в фоновом режиме, нужно ввести fg %N :
Одновременный асинхронный запуск команд из командной строки является эффективным способом контролировать процессы. Задачи, которые работают долго, например, сложные вычисления или компиляцию большого объема кода, лучше всего делать фоновыми. Для получения результата работы фоновой команды надо перенаправить ее вывод в файл при помощи операторов переадресации >, >&, >> и >>&. Как только фоновая команда закончит свою работу, оболочка выведет результаты ее работы, а потом уже предоставит возможность ввода новой команды:
При работе с Linux вы, может быть, еще не скоро встретитесь с необходимостью работать с большинством консольных команд, поскольку имеются такие оболочки, как Midnight Commander или графические оболочки типа KDE. Но с командами архивирования (точнее, разархивирования) вам работать придется обязательно, хотя бы потому, что вы будете часто встречать архивированные файлы в Интернете.
Основным средством архивирования в UNIX (а, следовательно, и в Linux) является комплекс из двух программ -- tar и gzip. Хотя никто не запрещает пользоваться arj, pkzip, lha, rar и т. д. -- версии этих программ для Linux общедоступны. Просто уж исторически сложилось, что пользователи Unix чаще применяют именно tar и gzip, и именно в таком формате распространяется большая часть программного обеспечения для Unix. Поэтому овладеть работой с tar и gzip -- дело чести любого пользователя Linux.
У читателя, привыкшего к архиваторам типа arj, которые собирают файлы в единый архив и сразу "сжимают" их, может возникнуть вопрос "А зачем использовать две программы?” Все дело в том, что tar расшифровывается как Tape ARchiver, он не сжимает данные, а лишь объединяет их в единый файл с последовательным доступом для последующей записи на ленту. По умолчанию этот архивный файл создается на ленточном накопителе, точнее на устройстве /dev/rmt0. Если вы хотите создать архивный файл на диске, то необходимо использовать команду tar с опцией f, после которой указывается имя архивного файла.
У программы tar имеется 8 опций, отличающихся от остальных тем, что при вызове программы должна обязательно задаваться одна из этих опций. Эти опции определяют основные функции программы.
Добавляет файлы в существующий архив
Найти различия между архивом и файловой системой
Удалить из архива (не может использоваться с магнитной лентой!)
Добавляет только файлы, которые новее, чем имеющаяся в архиве копия
Если вы работаете с файлами архивов на дисках, а не с ленточным устройством, то, очевидно, обязательной будет и опция f. Другие опции не являются обязательными, они служат только для конкретизации задания программе. Например, опция v заставляет программу выводить список обрабатываемых файлов.
Однобуквенные опции программы tar могут перечисляться друг за другом (вы увидите это в приводимых ниже примерах).
Чтобы создать один tar-архив из нескольких файлов, используется команда:
[user]$ tar -cf имя_архива файл1 файл2 ...,
где опция -c сообщает программе, что необходимо создать (create) архив, а опция f говорит о том, что архив должен создаваться в виде файла (имя которого должно следовать сразу за этой опцией).
В именах файлов, которые сохраняются в архиве, можно использовать шаблоны имен файлов, в том числе просто символы-заместители * и ?. Благодаря этому можно очень короткой командой отправить в архив сразу много файлов. Например, для того, чтобы создать архив, содержащий все файлы одного из подкаталогов (пусть это будет sub_dir) текущего каталога, достаточно дать команду
[user]$ tar -cvf имя_архива ./sub_dir/*
[user]$ tar -cvf имя_архива sub_dir
По этой команде в архиве будут сохранены не только файлы, расположенные непосредственно в подкаталоге sub_dir, но и рекурсивно все файлы из подкаталогов каталога sub_dir. При этом в архиве сохраняется вся структура подкаталогов каталога sub_dir.
Заметим, что если в только что приведенном примере вместо * поставить *.*, то будут сохранены только те файлы, которые расположены непосредственно в подкаталоге sub_dir, а подкаталоги каталога sub_dir архивированы не будут. Если в том же примере не указать имя подкаталога, то будут архивироваться все файлы (и подкаталоги) текущего каталога. Но если вы дадите команду следующего вида
то в архиве будут сохранены не только все файлы (и подкаталоги) текущего каталога, но и файлы из родительского каталога, а хотели ли вы этого?
Теперь вы знаете как создать архив, а для того, чтобы распаковать (извлечь) файлы из архива, нужно дать команду:
Получить список файлов архива можно командой:
Программа tar является удобным средством для создания резервных копий файлов. Конечно, существуют специальные утилиты резервного архивирования, но даже если вы о них еще не знаете, то по меньшей мере, вы можете сделать следующее:
[user]$ tar -Mcvf /dev/fd0H1440 /каталог
Такая команда создаст на дискетах архив с содержимым каталога, разбивая его на тома. Монтировать дискеты перед запуском команды не нужно, программа просто пишет на устройство потоком (в данном случае на дискету по секторам). При этом никакой файловой системы на дискете не создается. После заполнения дискеты вам будет выдан запрос на смену дискеты. Только, прежде чем запускать такую команду на выполнение, приготовьте достаточное число свободных дискет (помните, что tar не сжимает файлы), которые лучше всего соответствующим образом пометить и обязательно пронумеровать. Кроме того, имейте в виду, что вся информация на дискетах будет молча уничтожена.
Чтобы восстановить сохраненные данные, воспользуйтесь командой:
В заключение заметим, что всегда можно получить подсказку по использованию программы tar, дав команду
При этом, если вы используете русифицированный дистрибутив Linux, например, Black Cat 6.02, то подсказка будет выдаваться по-русски.
Хотя программа tar создает архивы, она, как было сказано, не сжимает архивы, а просто соединяет отдельные файлы в единый архивный файл. Для сжатия этого файла часто применяют команду gzip. В простейшем случае она вызывается в следующем формате:
В командной строке можно указать сразу несколько имен файлов или шаблон имени файла. Но в этом случае каждый из указанных файлов будет заархивирован отдельно (общий архив не создается).
Для того, чтобы распаковать архив, используйте команду
Исходные файлы после сжатия удаляются, остается только архивный файл (файлы перемещаются в архив), а при разархивации удаляется архив.
Перечислим кратко другие полезные опции программы gzip.
Вызов краткой помощи по использованию программы
Выдает имя файла, содержащегося в архиве, его объем и степень сжатия
Отображает номер версии и лицензию на программу
Сохранять (или восстанавливать) исходное имя и время создания файла
Не сохранять (не восстанавливать) исходное имя и время создания файла
Подавляет выдачу на экран предупреждающих сообщений
Рекурсивно обрабатывать подкаталоги (используется в случае. когда задан шаблон имен обрабатываемых файлов)
Добавить суффикс .suf к имени сжатого файла (вместо добавляемого по умолчанию суффикса gz; но учтите, что при разархивации файлов с суффиксами, отличными от gz, программа вас не поймет)
Выдача дополнительных сообщений в процессе работы программы
Поскольку программа gzip не умеет сохранять в одном архиве несколько файлов, то обычно ее применяют для сжатия архивов, созданных программой tar. Более того, среди опций программы tar имеется специальная опция -z, позволяющая сразу после создания сжать его с помощью программы gzip. Для выполнения такого сжатия надо использовать команду tar примерно следующим образом:
[user]$ tar -czf имя_архива шаблон_имен_файлов (или имя_каталога)
Только имейте в виду, что в этом случае суффикс .gz не добавляется автоматически к имени создаваемого архива, поэтому лучше ср
Операционная система UNIX контрольная работа. Программирование, компьютеры и кибернетика.
Реферат: Амилоидоз почек
Доклад по теме Рыба с четырьмя глазами
Реферат: Литература - Социальная медицина (Заболеваемость населения, Виды и методы
Реферат по теме Анализ категории "материя"
Реферат по теме Организация коммерческой деятельности и пути ее совершенствования
Как Повысить Актуальность Дипломной Работы
Реферат: Поручительство как способ обеспечения исполнения обязательств
Реферат: Языческий культ. Скачать бесплатно и без регистрации
Доклад: Рентгенография черепа
Аттестационная Работа На Тему Базовое Хозяйство Для Практической Подготовки Студентов: Основные Задачи, Требования, Обязанности Исполнителей И Студентов
Дипломная работа по теме Отличительные признаки антикризисного управления
Тема 14. Ревизия операций с нематериальных активов
Сочинение На Английском Что Такое Дружба
Реферат по теме Религии народов Африки
Артериальная Гипертензия Актуальность Темы Курсовой
Долевая Собственность Реферат
Реферат: Роль инноваций в процессе перехода от рынка производителя к рынку покупателя и к рынку потребителя
Реферат Грузозахватные Устройства
Реферат по теме Тургенев Иван Сергеевич
Реферат по теме Увольнение работника в связи с отказом от продолжения работы из-за изменения существенных условий тр...
Культурные инновации - Культура и искусство реферат
Правильная осанка и ее функции - Биология и естествознание контрольная работа
Порядок формирования отчета об изменениях капитала - Бухгалтерский учет и аудит курсовая работа


Report Page