Правильное резервное копирование в Linux
На Либератуме планируется опубликовать цикл статей «Из новичков в гуру», в рамках которого предполагается познакомить новичков в Linux читателей с самыми полезными командами, которые способны раскрыть всю мощь этой замечательной операционной системы. Начнем с резервного копирования.
1. Архивация директории с максимальным сжатием bzip2
Следующая команда архивирует директорию 'scripts' и сожмет ее с максимальной степенью компрессии:
tar -c scripts/ | bzip2 -9 > scripts.tar.bz2
2. Архивация целого раздела с одновременным сжатием gzip
Команда снимет точную копию всего раздела, одновременно упаковывая данные программой сжатия gzip:
dd if=/dev/sda1 | gzip -c9 > /media/usb/sda1.dd.gz
Восстановить данные можно следующей командой:
cat /media/usb/sda1.dd.gz | gzip -d | dd of=/dev/sda1
Создание сжатой копии раздела с параллельным копированием на удаленный компьютер через безопасное соединение ssh:
dd bs=1M if=/dev/sda | gzip -c9 | ssh user@host 'dd of=sda.dd.gz'
3. Архивация с компрессией конфигурационных файлов из /etc
Из директории /etc выбираются только файлы .conf и архивируются в tar.bz2:
find /etc/ -name '*.conf' | tar -c --files-from=- | bzip2 -9 > system_confs.tar.bz2
4. Создание резервной копии MBR
MBR — Master Boot Record. Критическая область на жестком диске, утрата которой ведет к потере доступа ко всем данным на диске. Поэтому, неплохо было бы создать резервную копию:
dd if=/dev/sdb of=my.mbr bs=466 count=1
Восстановить можно следующим образом:
dd if=my.mbr of=/dev/sdb bs=466 count=1
5. Создание полной копии сайта
Команда выкачивает сайт целиком. Следует отметить, что за такое легко могут забанить. На некоторых сайтах бан будет выдан автоматически. Практическая польза от такой команды сомнительная, т.к. администратор сайта делает резервную копию совсем другими методами, а пользователю целый сайт, как правило, не нужен, достаточно сохранить нужные страницы или поставить на них закладки.
wget --mirror http://kernel.org
6. Автоматическая нумерация резервных копий
Следующая команда создаст сжатую копию содержимого директории /etc, причем в имени результирующего файла будет стоять дата архивирования. Удобно для использования при автоматическом архивировании по расписанию.
tar cvjf etc_$(date +%Y%m%d).tar.bz2 /etc/
Полученный архив можно распаковать следующей командой:
tar xvjf etc.tar.bz2
7. Копирование всех файлов заданного типа
Следующая команда найдет все файлы в формате gif в директории /var/www и скопирует их в директорию /tmp/gifs:
find /var/www/ -name '*.gif' | xargs cp -va --target-directory=/tmp/gifs
8. Удаленное создание резервной копии базы данных MySQL
База данных пользователя user на удаленном компьютере host будет скопирована в простой текстовой файл data.sql.
ssh user@host '( mysqldump --password='pass' data > data.sql )'
9. Нарезка архива на части заданного размера
Команда разделяет файл на части, размером не превышающие 1 Гб. Команда может быть полезна тогда, когда используются файловые системы с жесткими ограничениями на размер одного файла (например, FAT32).
split -b 1000m linux-commands.iso
Восстановить фрагменты обратно в единый файл можно так:
cat xa* > linux-commands.iso
Комментарии
pomodor
6 февраля, 2011 - 03:38
Эх, сразу вспоминается админская юность: самопальный скриптик в crontab, пробегающий в 4 ночи по пользовательским директориям :)
Чингачгук
25 декабря, 2015 - 17:55
Я в Линуксе новичок, и никак не смог разобраться, как сделать элементарный бэкап Убунту. В интернете предлагают десятка два разных способов, в большинстве из них — список команд для терминала на полторы страницы. Дело осложняется тем, что системные файлы Убунту раскиданы по двум директориям — корневой и home (скрытые). В конце концов плюнул и решил, что легче её в случае сбоя переустановить заново. В Семёрке, кстати, бэкап делается парой щелчков мыши.
pomodor
25 декабря, 2015 - 17:59
Я тоже рассматриваю системные файлы как уже имеющие резервную копию в виде дистрибутива и никогда их не архивирую. Из системного сохраняю только конфиги:
tar cf etc.tar /etc
bzip2 -9 etc.tar
Еще архивирую логи, дампы баз данных и очень немногое из /home.
Чингачгук
23 ноября, 2016 - 12:14
Кстати /etc и конфиги очень даже может иметь смысл хранить в гите. И скриптуется просто, и изменения легче отсмотреть да и места сожреть таки меньше — пустячок, а приятно.
dk
Texnoline
25 декабря, 2015 - 19:23
в Убунту с версии 12.04, есть встроенная утилита для бекапа!?;) Зачем терминал для рядового юзера? 4 клика мыши и емкий внешний накопитель, и усе;)
pomodor
25 декабря, 2015 - 19:26
Зачем 4 клика мыши, если есть cron?
Texnoline
25 декабря, 2015 - 19:33
Согласен с Вами, но рядовому пользователю проще работать с GUI и через ярлычок!?:)
pomodor
25 декабря, 2015 - 19:43
Плевать на то, что проще. Делать нужно правильно.
Чингачгук
23 ноября, 2016 - 12:12
> В Семёрке, кстати, бэкап делается парой щелчков мыши.
За 7ку сказать не могу, но:
1. Родные средства бэкапа версий до 7 (ХP и ранее) подводили — прецеденты имели место быть.
2. Альтернативные средства бэкапа не подводили.
Вопрос — а стоит ли рисковать своими данными, чтобы проверить — подведут ли родные средства бэкапа в новой версии или просто пользовать проверенные решения?
Бонус: альтернативные средства обычно занимали меньше времени на архивацию/восстановление.
dk
Чингачгук
31 октября, 2016 - 16:05
Спасибо! Отличный материал! Однозначно в закладки!
gundenaf
17 января, 2018 - 08:43
Прошлый админ на работе использовал rsync для этого и добавил в cron. Корректно ли это?
Чингачгук
18 января, 2018 - 01:22
Может немного не в тему
При установке системы делю диск
на четыре раздела т.е. свап, корневой,
домашний. и четвертый который форматиуем
при первоначально установке в ext4.
и никак его не обозначаем.
Это будет у вас основная часть диска где вы будете
хранить "награбленное".
Преимущества которые вы получаете.
Во время работы ОС раздел не подключен.
Чтобы его подключить нужны рутовские права.
При переустановке системы просто не трогаем этот раздел.
и у нас все сохраняется все на этом разделе.
Чингачгук
28 августа, 2018 - 18:18
Не стоит забывать и про утилиту par2, позволяющую добавить избыточность в данные и при помощи восстановительной информации исправлять повреждения.
Комментировать