User Tools

Site Tools


linux:backups

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

linux:backups [2019/01/21 11:28] (current)
seanburns created
Line 1: Line 1:
 +<​markdown>​
 +# Backing Up
 +## Date: Thu 29 Nov 2018 
  
 +## Create a new disk in VirtualBox
 +
 +Let's create a second hard drive in VirtualBox first.
 +
 +1. Go to Settings
 +2. Click on Storage
 +3. Highlight **Controller:​ SATA**
 +4. Click on the Plus-Floppy icon
 +5. Click on **Add Hard Disk**
 +6. Click on **Create new disk**
 +7. Create a **VDI** disk (this is just like the initial install process)
 +    - Feel free to name your disk and allocate a maximum size
 +    - Since this will be used for backing up, the size of the disk should be
 +      equal or larger than the size of the main disk
 +
 +## Prepare disk
 +
 +1. Start your machine and log in
 +2. Check to see that your new drive exists:
 +    - run `lsblk` or `fdisk -l | less` to find your drive
 +    - should be located at `/dev/sdb`
 +
 +Now we need to partition the disk and make a file system. Recall that we need
 +to use `parted` for this. However, this time when we run the `print` command in
 +`parted`, we'll get a notification that we're missing a disk label. This is the
 +same thing as a [partition table or partition map][1], and for our purposes,
 +we'll use the *gpt* or [GUID Partition Table][2]. ​
 +
 +After we use parted to create the disk label, we'll then exit out and from the
 +root command prompt, we'll make the file system, and mount the *external* hard
 +drive to the `/mnt` directory:
 +
 +```
 +# parted /dev/sdb
 +(parted) print
 +...
 +(parted) mklabel
 +New disk label type? gpt
 +(parted) print
 +...
 +(parted) mkpart
 +Partition name? []? backup
 +Filesystem type? [ext2]? ext4
 +Start? 0%
 +End? 100%
 +(parted) print
 +...
 +(parted) quit
 +# lsblk
 +# mkfs.ext4 /dev/sdb1
 +# mount /dev/sdb1 /mnt
 +```
 +
 +*Note 1*: We can skip using `parted` and proceed to `mkfs.ext4` if we want to
 +use the whole disk, but `parted` allows us to create multiple partitions on a
 +storage device, which are useful with large disks. Remember that multiple
 +partitions also allow us to have multiple file systems on a single physical
 +device.
 +
 +*Note 2*: We can add the partition to `/​etc/​fstab` for auto mounting, but it's
 +not entirely necessary for backup drives -- of course, it depends on the
 +context. I avoid it here.
 +
 +## Backing up
 +
 +### Backup and sync
 +
 +There are many backup options, and the book does a nice job covering some of
 +the big ones. Therefore, in this demo, I'll cover `rsync`, but I'd also
 +encourage you to read this article on [`duplicity`][3].
 +
 +`rsync` is:
 +
 +```
 +man -k rsync
 +rsync (1)     - a fast, versatile, remote (and local) file-copying tool
 +```
 +
 +See the **SYNOPSIS** in the `rsync` man page, but the basic syntax is:
 +
 +```
 +$ rsync [OPTION...] SRC... [DST]
 +```
 +
 +Let's use `rsync` to back up my `home/` directory to our new drive:
 +
 +```
 +# mount /dev/sdb1 /mnt
 +rsync -ahv --delete /home/sean /mnt
 +```
 +
 +Where the following options mean:
 +
 +* -a, --archive
 +    - archive mode
 +* -h, --human-readable
 +    - output numbers in a human-readable format
 +* -v, --verbose
 +    - increase verbosity
 +* --delete
 +    - delete extraneous files from dest dirs
 +
 +### Backup, sync, and exclude
 +
 +Let's say there are certain directories in the source location that we do not
 +want to back up. To exclude those, we can create a file and list those sources
 +in that file, and then tell `rsync` to skip them during the backup. E.g., let's
 +say I have a directory (regular files work too) called **Documents/​** and a
 +file called **hello-world.txt** in my home directory, and I don't want those
 +backed up in this process:
 +
 +```
 +$ nano /​home/​sean/​.exclude-rsync
 +Documents/
 +hello-world.txt
 +$ rsync -ahv --delete --exclude-from '/​home/​sean/​.exclude-rsync'​ /home/sean \
 +  /mnt
 +```
 +
 +### Remote backups
 +
 +We can backup over the internet using `ssh`. Let's backup a test
 +**/​home/​sean/​tmp** directory to a remote **tmp/** directory. We'll also play
 +around with creating and removing files:
 +
 +```
 +$ mkdir test ; cd test ; touch a.txt
 +$ rsync -ahv . csbu225@sweb.uky.edu:/​home/​csbu225/​tmp
 +$ mv a.txt b.txt
 +$ rsync -ahv . csbu225@sweb.uky.edu:/​home/​csbu225/​tmp
 +$ ssh sweb ls tmp/
 +$ rsync -ahv --delete . csbu225@sweb.uky.edu:/​home/​csbu225/​tmp
 +$ ssh sweb ls tmp/
 +```
 +
 +### Restore
 +
 +To restore, we just work in reverse since the SRC directory is now the backup
 +location and the DST directory is now the restore location:
 +
 +```
 +$ cd /mnt
 +$ rsync -ahv --delete /mnt /home/sean
 +```
 +
 +[1]:​https://​www.gnu.org/​software/​parted/​manual/​html_node/​mklabel.html
 +[2]:​https://​en.wikipedia.org/​wiki/​GUID_Partition_Table
 +[3]:​https://​fedoramagazine.org/​taking-smart-backups-duplicity/​
 +</​markdown>​
linux/backups.txt ยท Last modified: 2019/01/21 11:28 by seanburns