Чтение онлайн

ЖАНРЫ

Linux глазами хакера

Флёнов Михаил Евгеньевич

Шрифт:

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

13.5. Резервирование в Linux

Мы будем рассматривать только те возможности, которые уже реализованы в Linux. Я не буду рекламировать сторонние разработки. Я вообще не люблю кого-то выделять, потому что могу недооценить другие продукты, с которыми я не работал или не знаком в достаточной степени.

А что есть встроенного

в Linux? Это простые команды копирования и архивирования, которые можно автоматизировать, прописав в планировщике задач. Если резервирование требует выполнения нескольких директив, то из них можно создать файл сценария для ОС, который будет выполнять все необходимое.

13.5.1. Копирование

Самый простой вариант создания резервной копии — использование команды

cp
(копирование файлов). Только в этом случае необходимо обязательно сохранять права доступа к файлу. Вот как может выглядеть команда, дублирующая директорию /home на примонтированном к системе диске /mnt/resdisk:

cp -a /home /mnt/resdisk

В данном случае я использовал ключ

– а
, который равносилен указанию сразу трех ключей (
– dpR
):

□ 

– d
— не следовать по символьным ссылкам. Мы копируем каталог в таком виде, как он есть;

□ 

– р
— сохранять права доступа к файлу;

□ 

– R
— копировать каталоги рекурсивно, чтобы на архивный диск попали все файлы и подкаталоги.

Получается, что команда, показанная выше, идентична следующей:

cp -dpR /home /mnt/resdisk

С помощью этой директивы мы создаем полную копию каталога. А как можно сохранить изменения? Для этого необходимо произвести копирование на тот же диск, только с указанием ключа

– u
:

cp -au /home /mnt/resdisk

Таким образом будут скопированы все файлы из директории /home, дата изменения которых позже документов из директории /mnt/resdisk.

13.5.2. tar

Копирование по одному файлу не очень удобно. Лучше, когда все находится под одной крышей. В Linux есть утилита, которая собирает все файлы в один. Этот процесс называют архивированием, но вы должны учитывать, что tar не сжимает файлы. Если вы объединяете файлы общим размером в 2 Мбайта, то архив будет иметь размер чуть больше (размер всех файлов плюс заголовок tar).

Преимущество сборки целой директории в один файл состоит в том, что им проще потом управлять и сжимать специализированными программами.

Для архивирования, как минимум, нужно выполнить команду:

tar cf архив.tar директория

Здесь у нас два параметра:

□ 

c
— указывает на необходимость создания архива;

□ 

f
— назначает архивный файл или устройство (по умолчанию используется /dev/rmt0).

Итак, для архивирования директории /home выполняем следующую команду:

tar cf backup.tar /home

При использовании параметров

cf
файлы в архив попадают с сохранением пути. Если распаковать созданный
нами чуть выше архив, то в результате в текущем каталоге будет создана папка /home, а в ней уже будут располагаться все пользовательские директории. Например, если разархивировать из директории /home, то папки пользователей окажутся в /home/home, а если находится в /etc, то пользователи увидят свои директории в /etc/home.

Чтобы добиться правильного результата, нужно перейти в корень диска и выполнять команду там:

cd /

tar xf /home/backup.tar

В данном случае мы из корневого каталога разархивируем резервную копию, которая находится в файле /home/backup.tar.

Помимо этого, для архивных операций могут пригодиться следующие ключи утилиты tar:

□ 

v
— вывести на экран информацию об архивируемом (или распаковываемом) в данный момент файле;

□ 

z
— найти и обработать при распаковке gzip-архивы;

□ 

p
— разархивировать всю информацию о безопасности;

□ 

d
— найти отличия между архивом и файлом в системе;

□ 

t
— просмотреть содержимое архива;

□ 

u
— обновить файлы в архиве, которые были изменены;

□ 

n date
— добавить в архив только те файлы, которые изменены позже даты, указанной в параметре date.

□ 

P
— не удалять первый символ "/". В этом случае, откуда бы вы не распаковывали, файлы попадут на свое родное место.

С помощью утилиты tar можно архивировать сразу несколько директорий. Следующая команда помещает в архив /home и /etc:

tar cf backup.tar /home /etc

Чтобы просмотреть содержимое архива, можно выполнить команду:

tar tvf backup.tar

В ответ на это, на экране будут показаны все файлы и директории архива, их права доступа и владельцы. Результат можно увидеть в листинге 13.1.

Листинг 13.1. Результат просмотра содержимого архива

drwx------ 504/504 0 2004-11-27 20:24:05 home/adr/

drwxr-xr-x 504/504 0 2004-11-27 20:24:05 home/adr/.kde/

drwxr-xr-x 504/504 0 2004-11-27 20:24:05 home/adr/.kde/share/

– rw-r--r-- 504/504 118 2004-11-27 20:24:05 home/adr/.gtkrc

– rw-r--r-- 504/504 24 2004-11-27 20:24:05 home/adr/.bash_logout

– rw-r--r-- 504/504 191 2004-11-27 20:24:05 home/adr/.bash_profile

– rw-r--r-- 504/504 124 2004-11-27 20:24:05 home/adr/.bashrc

– rw-r--r-- 504/504 5 2004-11-27 20:24:05 home/adr/text

– rw-r--r-- 504/504 2247 2004-11-27 20:24:05 home/adr/.emacs

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

Поделиться с друзьями: