Резервное копирование

Timeshift

Отличная программа для создания backup-ов и восстановления системы: Timeshift. Данная утилита создает мгновенны снимки btrfs, а со стандартами ext работает через rsync. Установка.

Timeshift

yay -S timeshift

Интерфейс очень простой, главное правильно настроить исключения.

Это нужно для того, чтобы вы не дампили большие и не нужные каталоги вашей системы, т.к. это экономит время и место на диске, а работоспособность сохраняется. В пример могу привести каталог virtualbox, мне например он в копии системы не нужен, в том числе и смонтированный диск /home/st/files, думаю вы поняли.

Вот мой список правил. Правила исключений должны быть выше домашней директории, измените путем перетаскивания.

Timeshift exclude

Существует и консольный вариант timeshift, вы можете сделать chroot в вашу систему, смонтировать разделы и откатить версию. В help есть примеры, все просто timeshift -h.

Rsync

Terminal

Монтируем раздел для резервной копии, предварительно создайте каталог.

mount /dev/sdb1 /dump

Копируем / в /dump с исключением, но с созданием нужных директорий.

rsync -cauvP --delete --delete-excluded --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/var/lib/pacman/sync/*","/var/cache/*","/var/tmp/*","/boot/*","/home/*"} /* /dump/

Скопировать систему полностью.

rsync -cauvP --delete --delete-excluded --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/var/lib/pacman/sync/*","/var/cache/*","/var/tmp/*","/home/lost+found","/boot/lost+found"} /* /dump/
rsync -cauvP --delete --delete-excluded --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/var/lib/pacman/sync/*","/var/cache/*","/var/tmp/*","/boot/lost+found","/home/lost+found","/home/*/.thumbnails/*","/home/*/.cache/*","/home/*/.local","/home/*/.gvfs/*","/home/*/files/*","/home/*/.var","/home/*/.npm","/home/*/.node-gyp","/home/*/.electron"} /* /run/media/st/dump/myarch/

Стоит заметить и исключить из /home, как пример ниже.

--exclude={"/home/lost+found","/home/*/.thumbnails/*","/home/*/.cache/mozilla/*","/home/*/.local/share/Trash/*","/home/*/.gvfs/*"}
rsync -cauvP --delete --delete-excluded --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/var/lib/pacman/sync/*","/var/cache/*","/var/tmp/*","/boot/lost+found","/home/lost+found","/home/*/.thumbnails/*","/home/*/.cache/mozilla/*","/home/*/.local/share/Trash/*","/home/*/.gvfs/*"} /* /dump/

Исключите каталоги в которых смонтированы диски/разделы, если нужно.

/home/st/files

Далее создаем архив.

cd /dump
tar -caf "/mnt/myarch.tar.xz" /dump/*

Или gz он быстрее.

cd /dump
tar -caf "/mnt/myarch.tar" /dump/*
gzip -9 "/mnt/myarch.tar"

Восстановление

Форматируем нужные разделы, с помощью gparted или руками.

mkfs.ext4 -L "root" /dev/sda5
mkfs.ext2 -L "boot" /dev/sda2
mkfs.ext4 -L "home" /dev/sda7
mkswap /dev/sda3

Загружаемся с live usb(или из этой системы), монтируем раздел root(dev/sda5), boot и др., если нужно.

mount /dev/sda5 /mnt
mount /dev/sda2 /mnt/boot
mount /dev/sda7 /mnt/home
swapon /dev/sda3

Создаем каталог и Монтируем раздел с архивом резервной копии.

mkdir /mnt/dump
mount /dev/sdb1 /mnt/dump

Переходим на смонтированный диск(куда восстанавливаем), распаковываем архив.

cd /mnt
tar xvJf /mnt/dump/myarch.tar.xz -С /mnt
# или
tar xvzf /mnt/dump/myarch.tar.gz -С /mnt

Делаем chroot в новую систему.

arch-chroot /mnt /bin/zsh

Редактируем если нужно /etc/fstab, /etc/mkinitcpio.conf, создаем initramfs-образы.

mv /mnt/etc/fstab /mnt/etc/fstab.bak
genfstab -pU /mnt > /mnt/etc/fstab
mkinitcpio -p linux

Настройка ключей pacman.

pacman-key --init
pacman-key --populate

Обновляем меню загрузчика груб, os-prober (для поиска других ОС).

pacman -S os-prober
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

Выходим из chroot, размонтируем разделы и перезагружаемся уже в восстановленную систему.

exit
umount /mnt/boot
umount /mnt/home
umount /mnt/dump
rmdir /mnt/dump
umount /mnt

# Или.

exit
umount -R /mnt
reboot

Отредактировать на GitHub