User:Nomaster/Backup

From Chaosdorf Wiki
< User:Nomaster
Revision as of 19:04, 31 March 2012 by Nomaster (talk | contribs) (nomaster’s backup strategy)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

Inside, there is btrfs filesystem, I mount using compression.

 mount -o compress -t btrfs /dev/sdb /mnt/backup

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/ /mnt/backup/nomaster/

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

 sudo btrfs subvolume snapshot /mnt/backup/nomaster /mnt/backup/nomaster120331

Lastly, I unmount the filesystem and close the container.

 sudo umount /mnt
 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/sdb

Mount it (with compression)

 sudo mount -o compress /dev/sdb /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