При копировании материала ссылка обязательна!
Для того чтобы иметь возможность восстановить Linux - систему после сбоя, важно иметь ее резервную копию. Резервную копию можно сделать несколькими способами. Степень восстановления разных способов также разная.
Эта утилита как раз и предназначена для создания резервных копий, поэтому и используем её для бэкапа корневого ./ раздела. Ключи czf означает: с - создание архива, z - архив будет сжат зипом, f - архив пишем в файл. Также предварительно исключив некоторые каталоги. Для этого используем опцию -exclude. Не будем бэкапить папки /home, /dev, /mnt, /media, /proc, /tmp, /sys и собственно сам файл бэкапа. Выполняем команду от имени рута или через команду sudo.
# tar czf /backup.tar.gz --exclude=/backup.tar.gz --exclude=/home --exclude=/media --exclude=/dev --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/tmp
--exclude=/run
/--exclude=/lost+found
Бэкап системы будет производится достаточно долго. В результате вы получите файл backup.tar.gz
с полной копией вашей системы (разумеется без исключенных каталогов).
В процессе использования этого способа я столкнулся с тем, что утилита tar вылетает с ошибкой на некоторых файлах, которые она (утилита) вероятно не может прочитать. Чтобы избежать остановки процесса, можно использовать ключ --ignore-failed-read, который заставит tar игнорировать ошибки чтения и не вылетать. В этом случае команда будет выглядеть так
# tar czf /backup.tar.gz --ignore-failed-read --exclude=/backup.tar.gz --exclude=/home --exclude=/media --exclude=/dev --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/tmp
/--exclude=/run
--exclude=/lost+found
Правда в этом случае все таки стоит разобраться, почему tar не может прочитать некоторые файлы. Вполне может случится что файлы важны и полученный бэкап системы может оказаться нерабочим.
Далее, если Ваша система будет повреждена, то вам нужно загрузиться с LiveCD/USB, и примонтировать корневой каталог в /mnt/. Затем подключите носитель с резервной копией и выполните команду для распаковки:
# tar xf /run/media/имя_носителя/backup.tar.gz -C /mnt
Команда быстро распакует все, что было сохранено и вам останется только перезагрузить компьютер. Если не поврежден загрузчик, то система должна будет загрузится в своем исходном состоянии. Если же загрузчик поврежден, то его нужно восстановить отдельно.
Утилита RSYNC предназначена для резервного копирования информации через зеркалирование, т.е. создается полная копия данных. Этот способ похож на архивирование, но здесь архив не создается, а данные просто копируются в другую папку. Также исключаем ненужные каталоги. Выполняем команду от имени рута или через команду sudo.
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found/*"} / /путь к папке бэкапа
Ключи -aAX означают передачу данных в режиме архива, что гарантирует полное копирование символических ссылок, устройств, разрешений и расширенных атрибутов, при условии, что их поддерживает целевая файловая система. Опция --exclude исключает из копии ненужные каталоги. Формат записи шаблона параметра --exclude "/имя папки/*" говорит о том, что не будут копироваться только файлы из папки, а сами папки скопируются.
Используя этот способ, мы сможем быстро восстановить программы на свежеустановленную систему. Для сохранения списка пакетов в файл backup.txt выполняем команду:
# dpkg --get-selections | grep -v deinstall > backup.txt
Сохраняем файл backup.txt
в надежном месте. В случае сбоя ставим систему как обычно и на свежеустановленной системе выполняем команды:
# dpkg --set-selections < backup.txt
# apt-get -y update
# apt-get dselect-upgrade
Как понятно из способа, он восстанавливает только исходное состояние по установленным пакетам, что иногда бывает очень полезно.
Делаем скрипт где используется копирование с помощью tar. Все пути оформляем через переменные. Создаем новый файл, вносим следующее содержимое:
#!/bin/bash
###############################################################################
# Скрипт резервного копирования linux сервера с помощью утилиты tar #
###############################################################################
# Каталог хранения архива
BACKUP_PATH="/mnt/BACKUP/SERVER/"
# Имя бэкапа (имя временного каталога, который будет создан в папке хранения бэкапа и в который будет записана копия системы). Автоматом добавляется дата создания)
BACKUP_FILE="backup_server_"`date +%Y.%m.%d`".tar.gz"
# Сохраняем в текстовый файл спиок всех установленных пакетов
dpkg --get-selections | grep -v deinstall > /Список_установленных_приложений_на_`date +%Y.%m.%d`.txt
# Делаем бэкап системы, некоторые каталоги бэкапить не будем
FULL_PATH=$BACKUP_PATH$BACKUP_FILE
tar czf $FULL_PATH --ignore-failed-read --exclude=/home --exclude=/media --exclude=/dev --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/run --exclude=/lost+found /
#tar czvf $FULL_PATH --exclude=/home --exclude=/media --exclude=/dev --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/run --exclude=/lost+found /
Сохраняем файл с именем backup1_server.sh и даем права на выполнение.
Делаем скрипт где используется копирование с помощью rsync с дальнейшей архивацией через tar.
Создаем новый файл, вносим следующее содержимое:
#!/bin/bash
###################################################################################################
# Скрипт резервного копирования linux сервера #
###################################################################################################
# Каталог хранения архива
BACKUP_PATH="/mnt/md2_8Tb/SHARE-SAMBA-BACKUP/CENT/"
# Имя бэкапа (имя временного каталога, который будет создан в папке хранения бэкапа и в который будет записана копия системы). Автоматом добавляется дата создания)
BACKUP_NAME="backup_cent_v2_"`date +%Y.%m.%d`
#echo "Путь "$BACKUP_FILE
# Сохраняем в текстовый файл спиок всех установленных пакетов
dpkg --get-selections | grep -v deinstall > /Список_установленных_приложений_на_`date +%Y.%m.%d`.txt
# Делаем бэкап системы в папку хранения через rsync.
# Исключаем некторые временные и ненужные папки из копии
FULL_PATH=$BACKUP_PATH$BACKUP_NAME
rsync -aAX --exclude={"/home/*","/media/*","/dev/*","/mnt/*","/proc/*","/sys/*","/tmp/*","/run/*","/lost+found/*"} / $FULL_PATH
# Архивируем скопированные в каталог файлы системы
BACKUP_FILE=$FULL_PATH'.tar.gz'
tar czf $BACKUP_FILE $FULL_PATH
# Удалаем исходный каталог бэкапа
rm -R $FULL_PATH
Сохраняем файл с именем backup2_server.sh и даем права на выполнение.