It’s very important to back up data, and yet I haven’t done it in a while.
My plan is to create an encrypted partition and just
rsync everything to it.
I took this approach before and successfully recovered from it after doing something akin to
rm -fr /.
This article uses a nonexistent disk named
/dev/sdbbq instead of
/dev/sdb to prevent you, dear reader, from copy-pasting these commands and hosing your system.
Be confident about what your actual disk is named before proceeding.
sudo fdisk /dev/sdbbq
It has a menu that takes letter commands. I did the following:
gto create GPT partition table. Skip this if the disk already has partitions on it.
nto create new partition.
1(default) is the partition number.
2048(default) is the first sector.
+460Gto allocate 460 GiB for the partition.
wto write it.
sudo cryptsetup -q --cipher aes-xts-plain64 --key-size 512 --label backup-trinidad luksFormat /dev/sdbbq1
sudo cryptsetup luksOpen /dev/sdbbq1 backupdev sudo mkfs.ext4 /dev/mapper/backupdev sudo cryptsetup luksClose backupdev
The actual copying is done with
rsync -a --delete /path/to/mounted/root/ /path/to/mounted/backup/.
I use a
/path/to/mounted/root/ instead of just
/ to avoid copying
The steps to mount everything are somewhat tedious, so I wrap them in a backup.sh script that just needs to be told what the backup device is:
sudo sh ~/s/backup.sh /dev/sdbbq1
/dev/sdbbq1, mounts it as
/root/backmnt/, mounts the root directory (and the
/boot/ partition) in
/dev/rootmnt/, then backs up the data.
It actually backs up to a directory called
trinidad (this computer’s hostname) to avoid conflicts with other backups (if there were others).
Explicitly, the commands it runs (as root) are:
mkdir -p /root/backmnt /root/rootmnt cryptsetup luksOpen /dev/sdbbq1 backupimage mount /dev/mapper/backupimage /root/backmnt mount /dev/sda3 /root/rootmnt mount /dev/sda1 /root/rootmnt/boot mkdir -p /root/backmnt/trinidad rsync -a --delete /root/rootmnt/ /root/backmnt/trinidad/ umount /root/rootmnt/boot /root/rootmnt /root/backmnt cryptsetup luksClose backupimage rmdir /root/rootmnt /root/backmnt
Sometimes you actually need data from your backup. Be sure to mount it read-only to avoid changing anything!
sudo cryptsetup luksOpen /dev/sdbbq robackup mkdir -p ~/Desktop/robackup sudo mount -o ro /dev/mapper/robackup ~/Desktop/robackup
And unmount later:
sudo umount ~/Desktop/robackup sudo cryptsetup luksClose robackup