In 2012 and 2014 I've blogged
about my FreeBSD based backup system. Lucky me didn't need it until
now. But this month I've got a new computer and took this as a
chance of testing the full restoring of all data. I've learned
two lessons I've want to share here.
1) rsync doesn't like --delete and --exclude together. In fact
if used both it won't delete old files. Thus after restoring all my
data I had a lot of already delete files making the backup somehow
unusable to work right with it (but still better than having no data
at all).
In order to get around this bug I had to call rsync for all the
wanted directories. So instead of one rsync call I had to do 13.
Putting 13 calls in a script is easy but entering 13 passwords is
awful. After some searching I've found that you can use the
environment variable RSYNC_PASSWORD and read the password via read.
This is the resulting script:
#!/bin/bash
stty -echo
read -p "Password: " passw; echo
stty echo
export RSYNC_PASSWORD=$passw
cd /home/user/data
backup_dir() {
dir=$1
echo $dir
rsync -ax
--delete $dir/ user@10.1.1.X::archive/working_backup/machine/$dir
}
backup_dir dir1
backup_dir dir2
2) The splitting of the pool into subdirectories isn't necessary.
You can clone a snapshot. The clone is direct accessible and costs
no additional disc space. I've read that you can access snapshots
via /mnt/zfs/.zfs but I couldn't find ith on my FreeBSD machine but
I can confirm the clone method.