Аварии рано или поздно случаются. В этой главе мы обсудим, как сохранить данные в безопасном месте с помощью других компьютеров, дискет, компакт-дисков и лент. Мы также рассмотрим наиболее популярные команды для сжатия и архивирования. По завершении этой главы вы будете знать, как: Создавать и распаковывать файловые архивы, а также получать о них сведения Обходиться дискетой и создавать загрузочный диск для вашей системы Записывать CD-диски Создавать обновляемые резервные копии Создавать Java-архивы Находить документацию по использованию других устройств и программ резервного копирования Как шифровать ваши данные.
Хотя Linux является одной из самых безопасных операционных систем существующих на данный момент, и даже если он проектировался, чтобы быть еще более надежным, данные могут быть потеряны. К потере данных чаще всего приводят ошибки пользователей, но иногда причиной является неисправность системы, такая как сбой питания или выход из строя диска, так что неплохо всегда иметь дополнительные копии личных и/или важных данных.
Подготовка данных
Архивирование с помощью tar
В большинстве случаев, сначала принято собирать все данные для резервного копирования в один архивный файл, который затем сжимают. Сам процесс архивирования представляет собой объединение всех перечисленных файлов и устранение бесполезных пустот. В Linux для этого часто используют команду tar. Эта команда была первоначально создана для архивирования данных на ленты, но она также может создавать архивы, известные как тарболы (tarballs).У tar есть множество опций, наиболее важные из них приведены ниже:
-v: подробный вывод
-t: тест, показывающий содержимое архива
-x: извлечение архива
-c: создание архива
-f archivedevice: использование archivedevice в качестве источника/назначения для архива, устройство по умолчанию — первый накопитель на магнитной ленте (обычно /dev/st0 или что-то подобное)
-j: фильтр через bzip2, см. Раздел "Обновление бэкапов с помощью tar"
Перед опциями tar обычно пропускают штрих-префикс, что видно в примерах ниже.
Использование GNU tar для совместимости.
Архивы, созданные с помощью проприетарной версии tar в одной системе, могут быть несовместимы с tar на другой проприетарной системе. Это может доставить головную боль, например, если архив может быть восстановлен только в системе, которая больше не существует. Используйте GNU-версию tar на всех системах, чтобы ваш системный администратор не рыдал. Linux всегда использует GNU tar. При работе на других машинах UNIX, введите tar –help, чтобы выяснить, какую версию вы используете. Свяжитесь с системным администратором, если вы не заметите слова GNU.
В приведенном ниже примере архив создается и распаковывается.Архивы, созданные с помощью проприетарной версии tar в одной системе, могут быть несовместимы с tar на другой проприетарной системе. Это может доставить головную боль, например, если архив может быть восстановлен только в системе, которая больше не существует. Используйте GNU-версию tar на всех системах, чтобы ваш системный администратор не рыдал. Linux всегда использует GNU tar. При работе на других машинах UNIX, введите tar –help, чтобы выяснить, какую версию вы используете. Свяжитесь с системным администратором, если вы не заметите слова GNU.
gaby:~> ls images/ me+tux.jpg nimf.jpg gaby:~> tar cvf images-in-a-dir.tar images/ images/ images/nimf.jpg images/me+tux.jpg gaby:~> cd images gaby:~/images> tar cvf images-without-a-dir.tar *.jpg me+tux.jpg nimf.jpg gaby:~/images> cd gaby:~> ls */*.tar images/images-without-a-dir.tar gaby:~> ls *.tar images-in-a-dir.tar gaby:~> tar xvf images-in-a-dir.tar images/ images/nimf.jpg images/me+tux.jpg gaby:~> tar tvf images/images-without-dir.tar -rw-r--r-- gaby/gaby 42888 1999-06-30 20:52:25 me+tux.jpg -rw-r--r-- gaby/gaby 7578 2000-01-26 12:58:46 nimf.jpg gaby:~> tar xvf images/images-without-a-dir.tar me+tux.jpg nimf.jpg gaby:~> ls *.jpg me+tux.jpg nimf.jpgЭтот пример также иллюстрирует разницу между заархивированными каталогом и группой файлов. Желательно сжимать только каталоги, так как файлы могут не распаковаться вместе (архив может быть на другой системе, и вы можете не знать, какие файлы уже существовали, а какие те, которые из архива).
Если магнитный накопитель подключен к вашей машине и настроен системным администратором, имена файлов, оканчивающиеся на .tar заменяются именем устройства, например:
tar cvf /dev/tape mail/
Каталог почты и все файлы, которые он содержит, сжимаются в файл, который записывается сразу на носитель. Содержание листинга отображается, потому что мы использовали соответствующую опцию.
Обновление бэкапов с помощью tar
Программа tar поддерживает создание дополняющихся резервных копий, с помощью опции -N. С помощью этой опции можно указать дату, и tar будет проверять время изменения всех указанных файлов от этой даты. Если файлы будут изменены позже, они будут включены в бэкап. В приведенном ниже примере используется метка на предыдущий архив как значение даты. Сначала создается начальный архив и метка указывает на этот архивный файл. Затем создается новый файл, который принимает новую резервную копию, содержащую только этот новый файл:jimmy:~> tar cvpf /var/tmp/javaproggies.tar java/*.java java/btw.java java/error.java java/hello.java java/income2.java java/income.java java/inputdevice.java java/input.java java/master.java java/method1.java java/mood.java java/moodywaitress.java java/test3.java java/TestOne.java java/TestTwo.java java/Vehicle.java jimmy:~> ls -l /var/tmp/javaproggies.tar -rw-rw-r-- 1 jimmy jimmy 10240 Jan 21 11:58 /var/tmp/javaproggies.tar jimmy:~> touch java/newprog.java jimmy:~> tar -N /var/tmp/javaproggies.tar \ -cvp /var/tmp/incremental1-javaproggies.tar java/*.java 2> /dev/null java/newprog.java jimmy:~> cd /var/tmp/ jimmy:~> tar xvf incremental1-javaproggies.tar java/newprog.javaСтандартные ошибки перенаправляются в /dev/null. Если вы не сделаете этого, tar будет выводить сообщение для каждого неизмеренного файла, сообщая вам, что он не будет сбрасываться.
У такого способа работы есть неудобство, т.к. просматриваются метки на файлы. Скажем, вы загрузили архив в каталог, содержащий ваши бэкапы, и этот архив содержит файлы, которые были созданы два года назад. При сверке меток этих файлов с метками на начальный архив, новые файлы действительно окажутся старым для tar и не будут добавлены в резервную копию с помощью опции -N.
Лучшим выбором будет опция -g, которая создаст список файлов для резервного копирования. При обновлении резервной копии, файлы сверяются с этим списком. Вот как это работает:
jimmy:~> tar cvpf work-20030121.tar -g snapshot-20030121 work/ work/ work/file1 work/file2 work/file3 jimmy:~> file snapshot-20030121 snapshot-20030121: ASCII textНа следующий день, пользователь jimmy немного поработал с file3 и создал file4. В конце дня он создает новый бэкап:
jimmy:~> tar cvpf work-20030122.tar -g snapshot-20030121 work/ work/ work/file3 work/file4Это очень простые примеры, но вы также можете использовать этот вид команды в работе хрона (см. Раздел "Cron и crontab"), который указывает, например, снимок файла для еженедельного резервного копирования и один для ежедневного резервного копирования. Снимки файлов должны быть заменены, в случае, когда создается полная резервная копия.
Более подробную информацию можно найти в документации к tar.
Важно знать.
Как вы могли, вероятно, заметить, tar хорошо работает, когда речь идет о простом каталоге с набором лежащих вместе файлов. Однако есть инструменты, которые легче в управлении, когда вам нужен архив целых разделов, дисков или больших проектов. Мы же рассказываем про tar потому, что это очень популярный инструмент для распространения архивов. Довольно часто бывает ситуация, когда вам необходимо установить программное обеспечение, входящее в так называемый "сжатый тарбол". См. Раздел "Использование rsync", чтобы узнать более простой способ выполнять регулярное резервное копирование.
Как вы могли, вероятно, заметить, tar хорошо работает, когда речь идет о простом каталоге с набором лежащих вместе файлов. Однако есть инструменты, которые легче в управлении, когда вам нужен архив целых разделов, дисков или больших проектов. Мы же рассказываем про tar потому, что это очень популярный инструмент для распространения архивов. Довольно часто бывает ситуация, когда вам необходимо установить программное обеспечение, входящее в так называемый "сжатый тарбол". См. Раздел "Использование rsync", чтобы узнать более простой способ выполнять регулярное резервное копирование.
Сжатие и распаковка с помощью gzip и bzip2
Данные, в том числе архивы, могут быть сжаты с использованием инструментов zip. Команда gzip добавит суффикс .gz к имени файла и удаляет исходный файл.jimmy:~> ls -la | grep tar -rw-rw-r-- 1 jimmy jimmy 61440 Jun 6 14:08 images-without-dir.tar jimmy:~> gzip images-without-dir.tar jimmy:~> ls -la images-without-dir.tar.gz -rw-rw-r-- 1 jimmy jimmy 50562 Jun 6 14:08 images-without-dir.tar.gzРаспаковываются сжатые файлы с помощью опции -d.
bzip2 работает аналогично, но использует улучшенный алгоритм сжатия, поэтому файлы получаются меньшего размера. За дополнительной информацией обратитесь к info-страницам bzip2.
Пакеты софта для Linux часто распространяются как сжатые архивы. После распаковки такого архива разумно найти README и прочитать его. Он обычно содержат руководство для установки пакета.
Команда GNU tar понимает сжатые файлы. Используйте команду
tar zxvf file.tar.gz
для распаковки файлов tar.gz или .tgz. Используйте
tar jxvf file.tar.bz2
для распаковки tar-архивов, которые были сжаты c помощью bzip2.
Архивы Java
Проект GNU предоставляет также jar для создания Java-архивов. Это приложение Java, которая объединяет несколько файлов в один архивный файл JAR. Хотя он поддерживает обычное архивирование и сжатие, основанное на ZIP и ZLIB форматах сжатия, jar в основном предназначен для облегчения упаковки кода Java, апплетов и/или приложений в один файл. Скомбинированные в одном архиве, компоненты приложения Java, могут быть скачаны гораздо быстрее.В отличие от tar, jar сжимает по умолчанию, независимо от других инструментов - потому что это в основном java-версия zip. Кроме того, jar позволяет на отдельные записи в архиве ставить подпись автора, что дает возможность проверять происхождение.
Синтаксис практически идентичен команде tar. Чтобы найти различия обратитесь к info-страницам jar.
tar, jar и символические ссылки.
То, на что следует обратить внимание в упомянутой документации, jar следует по символьным ссылкам. Данные, к которым эти ссылки указывают, будут включены в архив. По умолчанию tar делает резервную копию самой символьной ссылки, но это поведение можно изменить с помощью опции -h для tar.
То, на что следует обратить внимание в упомянутой документации, jar следует по символьным ссылкам. Данные, к которым эти ссылки указывают, будут включены в архив. По умолчанию tar делает резервную копию самой символьной ссылки, но это поведение можно изменить с помощью опции -h для tar.
Транспортировка данных
Сохранение копии ваших данных на другом компьютере является наиболее надежным способом создания резервных копий. См. Главу 10, Сеть для дополнительной информации по scp, ftp и др.В следующем разделе мы обсудим иные устройства для резервного копирования.