Привет!
Сделал простой скрипт для резервного копирования и восстановления системы.
Работает через бесконечный цикл и меню выбора работы скрипта:
1. Посмотреть список разделов жесткого диска с помощью blkid
2. Посмотреть список разделов жесткого диска с помощью fdisk -l
3. Создать резервную копию раздела
4. Восстановить резервную копию раздела
5. Последний созданный архив - дата и название
6. Вручную вписать нужное название файла архива для восстановления
7. Выход из скрипта
Работает так:
1) загружаемся с Live CD (или USB)
2) запускаем в консоли через
sudo или
su скрипт (сохранив его в любое_название.sh) например так:
# bash 001_backup.sh
3) выбираем нужный пункт меню и работаем
Перед работой скрипта разделы не стоит открывать в файловом менеджере или отмонтировать если они использовались (раздел откуда делать копию и раздел куда делать копию)
При резервном копировании скрипт спрашивает раздел откуда копировать и куда. потом показывает результатирующую информацию и начинает работать. (создает в разделе куда пишется архив скрытую папку и в нее делает архив, а также пишет в файлик название последнего архива)
пункт 6 нужен если архивов сделано несколько и нужно восстановить не последний созданный архив а любой другой (тогда смотрим список всех архивов и вручную вписываем название архива следуя инструкции скрипта) и далее уже восстанавливаем через пункт 4 меню
Особенность2: при восстановлении
скрипт форматирует раздел куда восстанавливает в ФС=ext4 и сохраняет UUID раздела. если нужно иное то следует подправить работу скрипта.
Скрипт тестировал и восстанавливал отдельный раздел для boot (когда он у меня был) - все работает
Если что - проверяйте перед запуском скрипт :-) :-) :-)
Привел просто для примера для этой темы (а тема важная поидее). раньше в Linux Mint когда он у меня был пытался пользоваться встроенной утилитой для резервного копирования... но она чето зависала... и я написал этот скрипт, которым сам пользуюсь. Очень люблю Акронис, но она архив сделать - сделала и записала на раздел ext4, а вот восстановить не смогла сказав что то типа "плохие файлы архива tib"... печалька
#!/bin/bash
clear
while [ 0 = 0 ]
do
echo
echo -------------------------------------------------------------------------
echo -------------------------------------------------------------------------
echo скрипт для создания и восстановления резервной копии раздела диска Linux
echo -------------------------------------------------------------------------
echo требуется запуск с правами root
echo
echo Выберите режим работы скрипта и нажмите Enter:
echo
echo 1. Посмотреть список разделов жесткого диска с помощью blkid
echo 2. Посмотреть список разделов жесткого диска с помощью fdisk -l
echo 3. Создать резервную копию раздела
echo 4. Восстановить резервную копию раздела
echo 5. Последний созданный архив - дата и название
echo 6. Вручную вписать нужное название файла архива для восстановления
echo 7. Выход из скрипта
echo
read MENU
clear
if [ $MENU = "1" ]
then
sudo blkid
else
if [ $MENU = "2" ]
then
sudo fdisk -l
else
if [ $MENU = "3" ]
then
sudo mkdir /mnt/{root,backup}
clear
echo Скрипт для архивации разделов.
echo ---------------------------------------
echo
echo введите название архива, например root или MyBackup. Время будет добавлено автоматически
read NAME1
clear
echo введите раздел, который архивировать
echo например sda2 и нажмите Enter
read P1
clear
echo введите раздел для сохранения резервной копии
echo например sda6 и нажмите Enter
read P2
clear
echo проверьте введенные данные
echo ---------------------------------------
TIM=$(echo [`date +%F--%H-%M`])
ARC="Linux-"$NAME1"-"$TIM".tar.gz"
# ARC="Linux-"$NAME1"-"$TIM".tar.lzma"
echo "раздел, который архивировать $P1 "
echo "раздел, куда архивировать $P2 "
echo "Название архива "$ARC""
echo ---------------------------------------
echo для продолжения работы скрипта нажмите ENTER
read T
clear
echo ---------------------------------------
T1=$(sudo date)
sudo mount /dev/$P1 /mnt/root -o ro
sudo mount /dev/$P2 /mnt/backup
sudo mkdir /mnt/backup/.backup_system
sudo tar -cvzpf /mnt/backup/.backup_system/$ARC /mnt/root
# sudo tar --lzma -cvpf /mnt/backup/.backup_system/$ARC /mnt/root
BF="/mnt/backup/.backup_system/.last_backup.txt"
echo "$ARC" > "$BF";
echo ---------------------------------------
echo ---------------------------------------
echo Дата и время начала работы скрипта:
echo $T1
echo ---------------------------------------
echo дата и время завершения работы скрипта
date
sudo umount /mnt/root
sudo umount /mnt/backup
echo ---------------------------------------
sudo rm -r -f /mnt/{root,backup}
else
if [ $MENU = "4" ]
then
sudo mkdir /mnt/{root,backup}
clear
echo Скрипт для восстановления раздела из архива
echo -------------------------------------------
echo
echo введите раздел, где лежит архив
echo например sda6 и нажмите Enter
read V1
clear
echo введите раздел, куда восстанавливать систему, например sda2
echo и нажмите Enter
read V3
clear
sudo mount /dev/$V1 /mnt/backup -o ro
BF="/mnt/backup/.backup_system/.last_backup.txt"
read ARC2 < "$BF";
clear
echo ---------------------------------------
echo проверьте введенные данные
echo ---------------------------------------
echo "раздел, где архив: $V1 "
echo "Название архива: $ARC2 "
echo "раздел, куда восстанавливать систему: $V3"
echo "Проверьте UUID нового раздела в etc-fstab после работы скрипта"
echo "UUID=$(sudo blkid -o value -s UUID /dev/$V3)"
echo ---------------------------------------
echo ВНИМАНИЕ, восстанавливаемый раздел будет полностью отформатирован в EXT4!
echo ВНИМАНИЕ !!! будет восстановлен последний образ, созданный данным скриптом,
echo БУДЬТЕ ВНИМАТЕЛЬНЫ !!!
echo для продолжения работы скрипта нажмите ENTER
read T
clear
echo ---------------------------------------
T777=$(date)
VAL=$(sudo blkid -o value -s UUID /dev/$V3)
NAME=$(sudo blkid -o value -s LABEL /dev/$V3)
sudo mkfs.ext4 -L "$NAME" -U "$VAL" /dev/$V3
sudo mount /dev/$V3 /mnt/root
sudo tar --same-owner -xvpf /mnt/backup/.backup_system/$ARC2 -C /
# sudo tar --same-owner -xvpf /mnt/backup/.backup_system/$ARC2 -C /
sudo umount /mnt/{root,backup}
echo ---------------------------------------
echo время начала работы скрипта:
echo $T777
echo ---------------------------------------
echo время окончания работы скрипта:
date
echo ---------------------------------------
echo ---------------------------------------
sudo rm -r -f /mnt/{root,backup}
else
if [ $MENU = "5" ]
then
sudo mkdir /mnt/{root,backup}
echo введите раздел, где лежит архив
echo например sda5 и нажмите Enter
read V1
clear
sudo mount /dev/$V1 /mnt/backup -o ro
# cd /mnt/backup/.backup_system
BF="/mnt/backup/.backup_system/.last_backup.txt"
read A1 < "$BF";
echo название архива: "$A1"
echo
echo --------------------------------------
echo Список всех созданных архивов:
ls /mnt/backup/.backup_system
echo --------------------------------------
echo Нажмите Enter для продолжения
read T
cd /
sudo umount /mnt/backup
sudo rm -r -f /mnt/{root,backup}
else
if [ $MENU = "6" ]
then
sudo mkdir /mnt/{root,backup}
echo введите раздел, где лежит архив
echo например sda5 и нажмите Enter
read V1
clear
sudo mount /dev/$V1 /mnt/backup
cd /
ls -a /mnt/backup/.backup_system
echo
echo Вставьте или напишите новое название архива с расширением и нажмите Enter
echo например: Linux-boot777-[2015-04-21--00-28].tar.gz
read NEW
BF="/mnt/backup/.backup_system/.last_backup.txt"
echo "$NEW" > "$BF"
read A1 < "$BF";
echo новое название архива: "$A1"
sudo umount /mnt/backup
sudo rm -r -f /mnt/{root,backup}
else
if [ $MENU = "7" ]
then
break
else
echo "Неверный выбор пункта меню"
fi
fi
fi
fi
fi
fi
fi
done