- Резевное копирование с помощью tar
- Осторожно со сжатыми копиями!
- Внешние диски для архивирования резервных копий
- Резервное копирование по расписанию
- Восстановление из резервных копий
- Поиск нужных файлов в архиве
- Восстановление конкретных файлов
- Пропуск файлов при восстановлении из tar архива
- Резервное копирование в Linux – команда tar
- Особенности использования утилиты tar
- Синтаксис и опции команды tar
- tar примеры
- Похожие записи:
Резевное копирование с помощью tar
Количество информации, которую вы сможете восстановить, во многом зависит от того, как часто вы ее сохраняете и насколько надежно храните.
Для начала определитесь с тем, где вы будите хранить backup-копии. Наилучшим решением для домашнего компьютера является использование отдельного жесткого диска, но, к сожалению, не у всех есть такая возможность. Поэтому, скорее всего, вы будете сохранять копии в отдельной директории или на отдельном разделе жесткого диска и периодически переписывать их на CD-R(W) или DVD-R(W).
Вне зависимости от того, где физически будет располагаться директория для сохранения копий, далее будем предполагать, что это директория /backup.
В простейшем случае скрипт для сохранение backup-копии будет выглядеть следующим образом:
#!/bin/sh tar -zcf /backup/home.tar.gz /home tar -zcf /backup/etc.tar.gz /etc
В этом скрипте нет ничего особенного, но основные принципы он демонстрирует:
- Сохранение и сжатие директории /home (домашние директории пользователей) в отдельный файл;
- Сохранение и сжатие директории /etc (общие системные настройки) в отдельный файл.
Рассмотрим использованные опции команды tar:
Следующий скрипт реализует более широкие возможности для сохранения backup-копии:
#!/bin/sh tar -zcvpf /backup/backup-`date '+%F'`.tar.gz --directory / \ --exclude=proc --exclude=var --exclude=mnt --exclude=usr --exclude=backup .
В данном примере сохраняются не отдельные директории, а корневая директория /, исключая /proc, /var, /mnt, /usr и, конечно, /backup. Также к имени файла добавляется дата создания резервной копии.
Дополнительно к уже рассмотренным были задействованы следующие опции команды tar:
-v Выводить список обработанных файлов -p Сохранять информацию о правах доступа —directory Директория для сохранения в архив —exclude Исключить директорию при сохранении в архив
Вы можете комбинировать оба предложенных варианта. Например, использовать первый скрипт ежедневно для ручного резервного копирования, а второй запускать по расписанию раз в неделю для полного сохранения.
Другой вариант исключить примонтированные файловые системы — использовать параметр —one-file-system
Осторожно со сжатыми копиями!
В случае порчи хотя бы нескольких байт сжатого резервного архива исключается возможность восстановления файлов из этого архива, даже если восстанавливаемый файл не находится в поврежденной области. Поэтому, на такие носители как магнитная лента резервные копии предпочтительнее записывать в не сжатом виде. Для этого не нужно указывать опцию -z команды tar.
Внешние диски для архивирования резервных копий
Если вы решили использовать отдельный HDD для резервных копий, то вам подойдет следующее решение.
Для начала подключите предварительно отформатированный HDD. Далее подразумевается, что это /dev/hdb1, т. е. первый раздел на втором диске канала IDE1. Создайте точку монтирования:
Дополните ваши скрипты для резервного копирования следующими строками:
#!/bin/sh mount /dev/hdb1 /backup ####################### # ваш скрипт # ####################### umount /backup
Со временем вы сами разработаете наиболее удобный и эффективный для вас способ проведения регулярного резервного копирования. Например, вы можете исключить директории (опция--exclude) с музыкой и фильмами из списка резервируемых директории.
Резервное копирование по расписанию
Далее вам предстоит настроить запуск скрипта по расписанию. На самом деле нет ничего проще. Со времен ОС UNIX существует программа cron, предназначенная для выполнения действий по расписанию. Пускай она и выполняет всю работу за вас. Откройте файл /etc/crontab и запишите новое правило:
#мин час число месяц день недели команда 0 1 * * 5 /usr/bin/full-backup
Это правило будет выполняться каждую пятницу в 1 час ночи. Для указания удобного для вас времени запишите нужные значения в соответствующих колонках. В примере предполагается, что командой резервного копирования является /usr/bin/full-backup. Замените эту команду на имя вашего скрипта.
Результат работы будет отправлен пользователю root по почте (при условии, что у вас настроен SMTP-сервер).
Восстановление из резервных копий
Ниже приведены основные команды для восстановления файлов из архива резервной копии. Перед замещением существующего файла убедитесь, что замена действительно необходима!
Перед извлечением файлов из резервной копии бывает необходимым просмотреть содержимое архива. Для этого укажите опцию -t команды tar. Например, следующая команда позволит просмотреть содержимое архива /backup/backup-07-March-2005.tar.gz:
tar -ztvpf /backup/backup-07-March-2005.tar.gz
Поиск нужных файлов в архиве
Не забывайте о конвейерах. Для поиска файла в архиве вы можете использовать программу GNU grep:
tar -ztvpf /backup/backup-07-March-2005.tar.gz | grep smb.conf
Для извлечения файлов из архива предназначена опция -x команды tar. Например, следующая команда восстановит все файлы из архива /backup/backup-12-March-2005.tar.gz:
tar -zxvpf /backup/backup-12-March-2005.tar.gz
Восстановление конкретных файлов
Для восстановления определенных файлов из архива укажите их имена после имени архива. Например, следующая команда восстановит файлы home/alenitchev/adt/backup.xml иetc/sendmail.cf из архива /backup/backup-17-March-2005.tar.gz:
tar -zxvpf /backup/backup-17-March-2005.tar.gz home/alenitchev/adt/backup.xml \ etc/sendmail.cf
Перед восстановлением файла из резервной копии убедитесь, что восстанавливаемый файл не заменит более новый экземпляр.
Пропуск файлов при восстановлении из tar архива
Если вы не хотите перезаписывать файлы, которые уже есть в системе, используйте параметр
-k, —keep-old-files
Чтобы начать восстановление с какого-то определенного файла в архиве, пропустив предыдущие, используйте
-K, —starting-file F
Резервное копирование в Linux – команда tar
Утилита tar в Linux предназначена для объединения (упаковки) нескольких файлов в один, т. е. для создания архивов. Она обладает хорошим функционалом для работы с архивами, умеет эффективно перемещать файлы (архивы или tar-файлы) с одного устройства на другое (включая ленточные устройства), сохраняя при этом атрибуты файлов и структуру файловой системы. Всё это позволяет использовать утилиту в качестве полноценного инструмента для организации резервного копирования. Конечно, для этих целей существуют и другие, специализированные утилиты. Как например dump, однако системным администраторам полезно уметь обращаться также и с tar.
Особенности использования утилиты tar
Как уже отмечалось, утилита объединяет несколько каталогов и файлов в один tar-файл, который потом можно сжать при помощи, например gzip, compress или bzip2. Это очень удобно, когда необходимо и данные зарезервировать и дополнительное место освободить на диске. Утилита часто применяется, когда нужно создать кратковременные резервные копии данных.
Среди версий tar, которые не относятся к GNU, подавляющее большинство таких, которые не поддерживают длину имён файлов больше, чем 100 символов, а также не умеют работать с несколькими лентами, поэтому перед использованием конкретной имеющейся в распоряжении версии утилиты необходимо внимательно ознакомиться с официальной технической документацией (команда man tar) для выяснения подобных деталей. Также, не все версии tar по-умолчанию обрабатывают символьные ссылки — от версии к версии для этого используются различные ключи, о чём можно также узнать из документации. Утилита очень хорошо подходит для быстрого копирования дерева каталогов.
Синтаксис и опции команды tar
У утилиты tar следующий синтаксис:
tar [опции] название_архива файлы_для_архива
Например, с помощью команды:
можно сделать копию каталога /etc в архив etc.tar. Приведённый пример демонстрирует распространённый случай резервного копирования с помощью команды tar. Здесь опция -c означает создание (create) архива, -f – вывод результатов в файл. Во второй части команды, которая принимает на свой вход выходной поток от tar -cf опция -x (extract) указывает tar, что нужно извлекать содержимое архива, -p – сохранять информацию о режимах доступа к файлам. Есть ещё опция -b, позволяющая задавать коэффициент объединения блоков, который полезен при записи на ленточные устройства. Это в некоторых случаях позволяет добиться большей производительности. Оптимальным считается значение 20, однако, поэкспериментировав, можно найти и лучший вариант для конкретных условий. Опция -v позволяет выводить подробную информацию о ходе работы команды.
tar [опции] архив
Распакует archive.tar в текущую директорию, что бы задать директорию куда нужно распаковать архив используйте ключ -с. Например
Ниже представлен основной список ключей команды tar
-A, —catenate, —concatenate присоединение tar-файловк архиву
-c, —create создание нового архива
-d, —diff, —compare поиск различий между архивом и файловой системой
—delete удаление из архива (не на магнитных лентах!)
-r, —append добавление файлов в конец архива
-t, —list вывод списка содержимого архива
—test-label проверка метки тома архива и выход
-u, —update добавление в архив только более новых файлов
-x, —extract, —get извлечение файлов из архива
Обратите внимание, что при запуске команды, перед ключами не обязательно ставить знак дефиса
tar примеры
Как уже упоминалось, для создания сжатых архивов сначала создаётся сам архив командой tar, а затем этот архив сжимается с помощью gzip. Но можно всё это сделать и одной командой tar:
В результате будет создан сжатый архив gzip archive.tgz, сжатие которого будет выполнено с помощью gzip и благодаря опции z. Символ «*» указывает, что в архив попадёт всё, что находится в текущем каталоге. Здесь же будет создан и целевой архив archive.tgz. Вместо опции z можно указывать и другие — Z, J, j, которые задают соответствующие алгоритмы сжатия — LZV, xz и bzip2.
На всякий случай, перед созданием резервных копий лучше перейти в корневой каталог «/» — утилита убирает начальный символ «/» из имён/путей файлов, из-за чего в последствии информация из архивов может быть восстановлена не совсем правильно.
В случае с резервным копированием (на ленточный носитель) можно использовать следующие команды:
$ cd / $ tar -cpf /dev/st0 --label="Backup at `date '+%d-%B-%Y'`." -C /home
Как видно, здесь в качестве имени архива используется /dev/st0 – ленточное устройство. Поэтому для идентификации архивов полезно воспользоваться опцией —label, задающей описание конкретного архива. В обратных кавычках подставляется маска для даты/времени создания архива. Опцией -C (или —directory) задаётся директория, подлежащая резервированию. Для выполнения добавочного архивирования, т. е. когда необходимо зарезервировать только изменившиеся с момента предыдущей архивации файлов, следует воспользоваться опцией -N:
$ cd / $ tar -cpNf /dev/st0 --label="Backup at `date '+%d-%B-%Y'`." -C /home
После создания резервной копии не лишним будет проверить с помощью опции -d, что архив цел:
Для резервирования всей системы можно использовать такую команду:
$ cd / $ tar -cpf /sysarchive/system-at-`date '+%d-%B-%Y'`.tar -C / --exclude=proc --exclude=mnt --exclude=archive --exclude=cache --exclude=*/lost+found .
Здесь с помощью опций —exclude указывается, какие каталоги необходимо исключить из процедуры архивирования, а символ точки «.» в конце команды говорит о том, что нужно обрабатывать все каталоги и файлы, находящиеся в директории, указанной опцией -C. Следует заметить, что в данном примере, в отличие от предыдущих, в качестве целевого архива задан непосредственно tar-файл, а не ленточное устройство.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.