Ликбез по Linux

Резервное копирование для начинающих

Резервное копирование - это, наверное, самая пренебрегаемая функция не только на домашних компьютерах, но даже на компьютерах некоторых организаций. В статье напомним о важности этой процедуры на примере консольной утилиты Rsync для Linux-систем. Рассмотрим основные принципы её работы на уровне домашнего использования.


Для бережёных

О необходимости регулярно делать резервные копии данных говорится часто. Компьютер - это ведь машинка, а все машинки рано или поздно ломаются. Но с поломками компьютерной техники могут пропасть и важные данные. Поэтому перестраховка в этом вопросе не помешает.

При работе в офисе организация резервного копирования данных - это головная боль системного администратора. В его обязанности входит создание механизмов сохранения рабочих файлов пользователей.

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

Для пользователей в системах Linux имеется много средств автоматизации резервного копирования. Самой распространённой специализированной утилитой для бэкапов данных является Rsync, которая обычно входит в любую систему GNU/Linux и даже в некоторые сборки мобильной системы Android. C Rsync ближе и познакомимся.


Тонкости бэкапа

Для начала несколько простых правил. Бэкап данных - это копирование важных данных с носителя A на носитель Б с целью дальнейшего восстановления в случае выхода из строя носителя А. Отсюда одно из требований к бэкапу - это чтобы второй архивный носитель был отдельным устройством. Как минимум, это должен быть отдельный диск. А ещё лучше носитель Б должен быть на другом компьютере, с доступом по сети. И чем дальше географически расположен компьютер с бэкапом, тем лучше.

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

Однако обычное копирование - слишком расточительное занятие, особенно если нужно копировать через Интернет. Так как при обычном копировании каждый раз происходит полная пересылка данных, хотя при этом не все данные могут нуждаться в обновлении.

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

Rsync использует свои хитроумные алгоритмы синхронизации данных. Эти алгоритмы позволяют передавать только изменения в данных, а не каждый раз заново всё переписывать. То есть Rsync отслеживает, как изменился файл, и скопирует только необходимые части, чем может значительно сэкономить трафик, если бэкап делается через Интернет.

Само собой, Rsync работает не только локально, но и через сеть. Причём при сетевой передаче данных он может сжимать данные. Что, опять-таки, экономит трафик. Копирование может происходить как через собственный транспорт, так и через транспорт ssh, что в последнем случае даёт возможность организовать шифрование бэкапа.

Rsync является консольной классической Unix-программой, которую легко использовать в различных скриптах. И ещё, наша утилита резервного копирования может работать в режиме демона, а не только в клиентском режиме.


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

Приведём несколько примеров использования Rsync. Самый простой пример бэкапа:

rsync -av work backup

Эта команда забэкапит папку work в папку backup в архивном режиме, то есть с сохранением прав доступа и информации о владельцах. Опция "v" выведет в консоли всю нужную информацию архивирования, что хорошо и наглядно демонстрирует работу Rsync.

Важное значение здесь имеет слэш после названия папки. Например, в вышеприведённой команде в папку backup будет скопирована сама папка work и её содержимое. Но можно скопировать в папку backup только само содержимое папки work:

rsync -av work/ backup

Кроме "-av", в качестве параметра rsync можно добавить опцию "--exclude", при помощи которой можно исключить из архивирования отдельные файлы, например:

--exclude=Thumbs.db

В результате при бэкапе не будут учитываться и передаваться файлы с названием Thumbs.db. Для того чтобы исключить несколько файлов, нужно просто повторить несколько раз "--exclude" в командной строке. А еще лучше записать исключения в файл и передать в качестве аргумента опции --exclude-from, например:

--exclude-from exclude.file

Теперь приведём пример бэкапа через сеть. Для этого на машине в сети, на которую будет происходить бэкап, нужно запустить Rsync в режиме демона.

Но для этого сначала придётся немножко поредактировать конфигурационные файлы в системе этой машины. Приведу последовательность редактирования для Ubuntu 10.10.

Сначала редактируем файл /etc/default/rsync, где переменной RSYNC_ENABLE задаём значение true. Затем в каталоге etc создаём файл rsyncd.conf приблизительно такого содержания:

[backup]
comment = My Backup
path = /var/backup
use chroot = false
uid = username
read only = false
write only = false
transfer logging = false

То есть здесь мы создали модуль backup, в котором определили расположение каталога для бэкапа, пользователя, от имени которого будет происходить работа rsync, а также правила записи к файлам.

Теперь запускаем rsync командой

sudo service rsync start

После этого можно проверить работу демона прямо на запущенной машине:

rsync rsync://localhost

Должно появиться название модуля архива и значение переменной comment из файла rsyncd.conf:

backup My Backup

Если всё "OK", то можно практически проверить работу демона, опять-таки, прямо на этой же машине:

rsync -av work rsync://localhost/backup

В данном случае Rsync скопирует файлы в каталог, который мы указали в файле rsyncd.conf в модуле backup.

Теперь у нас имеется машина, которая может принимать бэкапы по запросу с других машин в сети и синхронизировать их в каталоге, который мы указали в файле rsyncd.conf в модуле [backup].

Общая команда для бэкапа на удалённый компьютер через сеть выглядит следующим образом, где HOST - это имя машины в сети:

rsync -avz work rsync://HOST/backup

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

rsync -avz rsync://HOST/backup work

В последней команде появилась ещё опция z. С этой опцией rsync будет ещё и сжимать файлы при передаче через сеть.

Также нужно обратить внимание, что в командной строке после имени машины в сети мы задаём имя модуля файла rsyncd.conf, в котором определён путь к бэкапу. Так как в файле rsyncd.conf можно задать несколько модулей с разными именами и со своими каталогами для разных бэкапов на разные случаи жизни.

На этом знакомство с консольной версией rsync завершим, хотя возможности утилиты для бэкапа неисчерпаемы, как атом. Например, есть возможность передачи данных через транспорт ssh.

Кстати, Rsync имеет и графический интерфейс для тех, кто любит елозить с мышкой. Называется он Grsync и находится в стандартном репозитории Ubuntu.

Интерфейс программы очень простой. В нём имеются поля для ввода каталогов и закладки, в которых галочками нужно пометить нужные опции при резервном копировании. Большинство подписей на русском языке. Grsync не заменит по мощи и возможностям оригинальную утилиту. Но этот графический интерфейс может стать ещё одним источником изучения и простейшего использования обычными пользователями Rsync.

Михаил АСТАПЧИК

Версия для печатиВерсия для печати

Номер: 

11 за 2011 год

Рубрика: 

На заметку
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!