User:Nomaster/Backup

Jesus saves. Buddha does incremental backups.

In celebration of World Backup Day, I hereby release my backup strategy.

Features

 * daily backup, fully accessible
 * compressed storage
 * block device encryption
 * speed

Requirements

 * external harddrive
 * modern linux kernel (use Arch Linux!)
 * current version of btrfs-progs (I have 0.19.20120110-2)
 * a strong password (you may follow this guide or similar)

Daily Routine

 * 1) Wake up
 * 2) Drink tea
 * 3) Go shit
 * 4) Exercise Yoga
 * 5) Eat breakfast
 * 6) Backup ALL the files (during hygiene)
 * 7) Leave home

My external harddrive is totally occupied by a LUKS container. After connecting the drive to my laptop, I start like this:

cryptsetup luksOpen /dev/sdb backup

If not happened yet, format the drive with a btrfs filesystem

mkfs.btrfs -L backup /dev/mapper/backup

Then, mount it and use compression

mount -o compress=lzo -t btrfs LABEL=backup /media/backup

If not happened yet, create a subvolume

btrfs subvolume create /media/backup/nomaster

For may backups, I use rsync (with delete) to copy my files to an external hard drive. Vanished files will be deleted. rsync -aPv --delete --exclude downloads --exclude music --exclude .cache /home/nomaster/ /media/backup/nomaster/

After each sync, I make a snapshot of this state of my files.

sudo btrfs subvolume snapshot -r /media/backup/nomaster /media/backup/nomaster-$(date +%F)

Lastly, I unmount the filesystem and close the container.

sudo umount /media sudo cryptsetup luksClose backup

Then, I disconnect the drive.

When my drive will be full at some point in the future, I’m going to remove old snapshots to free space occupied by large files deleted a long time ago.

Initial Setup
'''I assume the external drive is /dev/sdb. If you have no idea about this, stop right now and come back when you know.'''

First, make sure, the external drive is clear to use. So mount it and have a look at the files if present.

Overwrite everything with zeroes.

sudo dd if=/dev/zero of=/dev/sdb bs=1024

Format the drive

sudo cryptsetup luksFormat /dev/sdb

(follow the instructions)

Open the crypto container

sudo cryptsetup luksOpen /dev/sdb backup

Create a BTRFS file system

sudo mkfs.btrfs /dev/mapper/backup

Mount it (with compression)

sudo mount -o compress /dev/mapper/backup /mnt

Create a subvolume

sudo btrfs subvolume create /mnt/nomaster # <- insert username here

Unmount, close and continue with daily routine.

sudo umount /mnt sudo cryptsetup luksClose backup