Backup Linux desktop data using rsync

From wiki
Revision as of 17:36, 31 January 2015 by imported>Johayek
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Linux servers and desktops can be backed up using the rsync protocol which is a core component of every Linux system. For and introduction check the rsync article on Wikipedia. The official documentation can be found on the Samba website. Rsync is an efficient protocol only sending changes. rsync does not encrypt transmissions, so a remote shell like SSH or RSH should be used in public network. There are a number of Tutorials available (here, here or here). This page describes the steps to setup rsync backup from a Linux machine to a Synology DiskStation.

ToDo:Currently the article is a stub which needs extension.

What to choose: native rsync or rsync via SSH/RSH?[edit]

Depending on your needs these are the decision criteria:

  • Speed
  • Security
  • Access control

ToDo: Elaborate

Setting up Synology for rsync[edit]

To enable backup via rsync the rsync deamon on the Synology needs to be activated and Sync targets need to be defined.

Activating rsync
Start your Synology DiskStation Manager. Go to Backup - Network Backup Service and check the box "Enable network backup service". Click OK - that's all.

Creating rsync targets
You need to edit the file /etc/rsyncd.conf. You can do that either by opening an SSH session into the DiskStation or using the Config File Editor Third party application. To use it you need to first edit the config File editor config itself and add the line /etc/rsyncd.conf (It seems you have to create the file before the Config File Editor will pick it up). You also might need a file /etc/rsyncd.secrets for users to use rsync connections

Sample file content (see also the full documentation)
ToDo: Add file content here and add explanations to the various entries

Setting up Synology for rsync via SSH/RSH[edit]

When using ssh no rsync deamon is used on the DiskStation. However you need to have a valid public / private key pair, so the DiskStation can recognize the Linux machine. Follow the following steps (adopted from here)

Generate they key pair

mkdir ~/.sshkeys
cd ~/.sshkeys
ssh-keygen -t dsa -b 1024 -f ~/.sshkeys/diskstation-rsync-key

Generating public/private dsa key pair. Enter passphrase (empty for no passphrase): [press enter here]
Enter same passphrase again: [press enter here]
Your identification has been saved in ... diskstation-rsync-key.
Your public key has been saved in ... diskstation-rsync-key.
( where ... stands for your directory )
chmod 600 diskstation-rsync-key

If you want to connect without using a passphrase, you must not enter any passphrase when ask (just it the "Enter" key)

Transfer the keys
First, you will have to enable the "homes" directory" through your Synology web interface. (all "homes" are created under directory /volume1/homes/) Use your file manager (e.g. Nautilus) to navigate to [YourUserName]@smb://diskstation/home/
Create a directory .ssh and copy diskstation-rsync-key.pub there.
Now open a SSH connection to the diskstation to continue:
ssh user@diskstation [Enter password here]
cd /volume1/homes/[YourUserName]/.ssh
ls -l

If there is already a "authorized_keys" file you skip the first line of the following code:

touch authorized_keys
cat diskstation-rsync-key.pub >> authorized_keys
rm diskstation-rsync-key.pub
chmod 600 authorized_keys
You can restrict the use of this key for specific commands or IP addresses (see here).
Exit from the SSH session. Now you are ready to test the keys with the following command:
ssh -i ~/.sshkeys/diskstation-rsync-key [YourUserName]@diskstation
If you get a ssh session without a password prompt the ssh connection using your new keys works.

Sample backup command
rsync --recursive --copy-links --times --verbose --progress -e "ssh -i ~/.sshkeys/diskstation-rsync-key" \
/home/[localusername] [YourUserName]@diskstation:/volume1/homes/[YourUserName]/backup

This will:

  • Connect through SSH to your Synology, using the set of key you previously created
  • Copy recursively all from /home/[localusername] to your Synology, within /volume1/homes/[YourUserName]/backup directory (no need to create "backup")
  • Copy referents to symbolic links
  • Preserve ties from your files
  • Show you the progress from copy (not useful if you are running it with a cron)

TODO: Explain a little more

Backing up your Linux workstation using rsync[edit]

ToDo: Elaborate

GUI Tools using rsync for backup[edit]

Flyback rSync tool modeled after TimeMachine (Flyback on Google code)
QTDSync
GAdmin tool for rsync
DeltaCopy (Windows rsync GUI)
ToDo: complete the list of Linux GUI applications using rsync.

Synchronize Sabnzbd and Synology[edit]

If you have a server somewhere with Sabnzbd on it and you want to move what you downloaded from the server to your Synology, please have a look to blog entry