Backups maken met rsync en SSH

Op deze pagina:

Backups maken zonder steeds een wachtwoord te hoeven invullen kan via rsync als je SSH gebruikt.

Inloggen met SSH zonder wachtwoord

Het gebruik van SSH kan ook zonder steeds een wachtwoord te hoeven geven. Dit kan via het genereren van publieke en private sleutels voor SSH.

SSH sleutels genereren

Eerst de sleutels genereren via ssh-keygen:


ssh-keygen

Vervolgens moet je 3x op Enter drukken om de defaults te accepteren (de eerste keer voor de bestandsnaam en dan 2x voor geen passphrase), wat je te zien krijgt:


kees@PCvanKees:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kees/.ssh/id_rsa):
Created directory '/home/kees/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/kees/.ssh/id_rsa.
Your public key has been saved in /home/kees/.ssh/id_rsa.pub.
The key fingerprint is:
bb:8b:60:f9:23:00:07:b9:a1:f7:92:89:65:7e:cf:e4 kees@PCvanKees
The key's randomart image is:
+--[ RSA 2048]----+
| .               |
|+                |
|.+               |
|+ =              |
| O +    S        |
|. * o..  .       |
|   ++=  .        |
|   ..oE. .       |
|     .o.o.       |
+-----------------+
kees@PCvanKees:~$

De publieke ssh sleutels kopiëren naar de server

De volgende stap is het kopiëren van de publieke sleutel naar de andere computer:


ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.2.4

Dan volgt dit:


kees@PCvanKees:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.2.4
The authenticity of host '192.168.2.4 (192.168.2.4)' can't be established.
ECDSA key fingerprint is 89:5e:c9:58:97:12:30:e6:49:76:a9:a3:8d:9e:29:02.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), 
 to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- 
 if you are prompted now it is to install the new keys
kees@192.168.2.4's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.2.4'"
and check to make sure that only the key(s) you wanted were added.

kees@PCvanKees:~$ 

Geef "yes" als antwoord op de vraag "Are you sure you want to continue connecting (yes/no)?".

Als er om het wachtwoord wordt gevraagd, dan je wachtwoord ingeven.

Inloggen op de andere computer kan nu zonder wachtwoord:


ssh '192.168.2.4'

Vervolgens:


kees@PCvanKees:~$ ssh '192.168.2.4'
Welcome to Ubuntu 14.10 (GNU/Linux 3.16.0-34-generic x86_64)

* Documentation:  https://help.ubuntu.com/

kees@RedDragon2015:~$ 

type


exit

om ssh weer te verlaten, dan volgt:


kees@RedDragon2015:~$ exit
uitgelogd
Connection to 192.168.2.4 closed.
kees@PCvanKees:~$ 

Rsync gebruiken om bestanden te syncen naar een andere computer

Als je rsync geinstalleerd hebt kun je bestanden syncen met een andere computer via:


rsync opties bron bestemming

bijvoorbeeld:


\$ rsync -avz --delete /home/kees/Afbeeldingen/ kees@192.168.2.4:/home/kees/backup_rsync/Afbeeldingen/

De --delete optie zorgt ervoor dat als een bestand niet meer bestaat in de bron, deze dan ook gewist wordt in het doel, deze optie werkt alleen als je hele directories rsynct.

Als je ssh-keygen geinstalleerd hebt op beide computers, dan kan dit alles zonder dat er om een wachtwoord gevraagd wordt.

Als de bestemmingsdirectory nog niet bestaat, dan wordt deze automatisch aangemaakt.

Voorbeeld van een commandline om de directory Archief te rsyncen:


rsync -avz --delete /home/kees/Archief/ kees@192.168.2.4:/home/kees/backup_rsync/Archief/

Een script maken om via rsync (met SSH) te syncen, in dit geval worden de directories Archief en Afbeeldingen gebackupped, extra directories kunnen eenvoudig worden toegevoegd aan dit script:


#!/bin/sh
# script wordt aangeroepen met het IP-adres van 
# de andere computer als argument
# $1 is dan het IP-adres van de commandline 
# ( bijvoorbeeld: 192.168.2.4 )
# als je het IP-adres vergeet toe te voegen bij het 
# aanroepen van dit script krijg je een foutmelding:
#
# ssh: Could not resolve hostname : Name or service not known
# rsync: connection unexpectedly closed (0 bytes received so far) [sender]
# rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]
#

IP=$1

sink(){
BRON='/home/kees/'$1/
DOEL='kees@'$2':/home/kees/backup_rsync/'$1/

rsync -avz --delete ${BRON} ${DOEL}
}

sink Archief $IP
sink Afbeeldingen $IP

# einde van het script
#

 

Verwante artikelen