web2 logo

Backups maken met rsync en SSH

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.
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:~$

verder:

De volgende stap is het kopieren van de publieke sleutel naar de andere computer:
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.2.4

wat je nu te zien krijgt:

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:~$

Wat je zelf nog invult:

"yes" beantwoorden op de vraag "Are you sure you want to continue connecting (yes/no)?"
en 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'

wat je dan te zien krijgt:

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:~$

weer verder:

type exit om ssh weer te verlaten:

nu krijg je dit:

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 mappen rsynct.
Als je ssh-keygen geinstalleerd hebt op beide computers, dan kan dit alles zonder dat er om een wachtwoord gevraagd wordt.
Als de bestemmingsmap nog niet bestaat, dan wordt deze automatisch aangemaakt.
Voorbeeld van een commandline om de map 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 mappen Archief en Afbeeldingen gebackupped, extra mappen 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
#

Toegevoegd door: Kees de Keijzer
Twitter: @kdkq

~ linux ~

~ Onderwerpen ~

Dit is een website zonder pop-ups

~ Links ~

Design & Development by Cyberwebdesign.nl for web2.nl © 2020.