Posts Tagged ‘Synology’

Mittwoch, 18. September 2013

Den Raspberry Pi mit rsync über SSH auf die Synology DiskStation sichern

Als Gedankenstütze nachfolgend einige Lösungen für Probleme, die sich mir in den Weg stellten:

Mac OS X

$ ssh-keygen -t rsa -b 2048 -f id_rsa_dashboard_vault

Die Aufforderung, ein Passwort für den Private Key zu generieren, bestätigt man mit ENTER — der Private Key wird so nicht zusätzlich mit einem Passwort geschützt, weil dies den automatisierten Login von Raspberry Pi auf die DiskStation verhindern würde.

Der Befehl erstellt zwei Dateien:

  • id_rsa_dashboard_vault
  • id_rsa_dashboard_vault.pub

Synology DiskStation

Als erstes richtet man sich über die Web-Oberfläche einen normalen Benutzer dashboard ein, in dessen Home-Verzeichnis die Backup-Daten geschrieben werden.

Hierzu müssen dem Benutzer Schreibrechte auf /homes gegeben werden. Ansonsten sieht man sich beim Starten des Backup-Scripts (s. unten) mit folgender Fehlermeldung gegenüber:

ERROR: module is read only

Quelle: Rsync over ssh: “ERROR: module is read only” suddenly appeared

Wichtig ist weiter, dass der SSH-Zugang über die Web-Oberfläche aktiviert wurde.

/etc/passwd

Dem neu erstellten Benutzer müssen wir nun eine gültige Login-Shell zuweisen:

...
dashboard:x:1029:100::/var/services/homes/dashboard:/bin/ash

Erfasst man hier ein nicht existierendes Login-Shell, kriegt man beim Debugging des publickey SSH-Logins folgende komische Infos ans Gesicht geworfen:

...
Authentication succeeded
...
Permission denied
...

Um sicher zu gehen, dass die Login-Shell richtig konfiguriert ist, macht man als auf der DiskStation eingeloggter User root folgendes:

# su dashboard

Wechselt man in ein neues Shell, ist /etc/passwd korrekt konfiguriert.

/var/services/homes/dashboard/.ssh/authorized_keys

In dieser Datei legen wir den Public Key ab (id_rsa_dashboard_vault.pub).

/etc/ssh/sshd_config

Wahrscheinlich müsste man hier gar nichts anpassen, beim Debugging habe ich es dann doch getan (wohl unnötigerweise):

$ cat sshd_config | grep -v "^#" | sort
AllowTcpForwarding no
AuthorizedKeysFile	.ssh/authorized_keys
ChallengeResponseAuthentication no
ChrootDirectory none
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_rsa_key
LogLevel INFO
Match User root
    AllowTcpForwarding yes
Protocol 2
PubkeyAuthentication yes
Subsystem       sftp    internal-sftp -f DAEMON -u 000
SyslogFacility AUTH
UseDNS no
UsePAM yes

Raspberry Pi

/root/.ssh/config

Host vault
   Hostname 10.0.44.44
   User dashboard
   IdentityFile ~/.ssh/id_rsa_dashboard_vault

In der Datei ~/.ssh/id_rsa_dashboard_vault legt man den Private Key ab.

Login überprüfen

Dies sollte nun ohne Eingabe eines Passwortes möglich sein:

$ ssh vault

Bei einer Fehlermeldung helfen die Optionen -v, -vv und -vvv weiter:

$ ssh -v vault

/usr/local/bin/backup.sh

Folgendes Script sichert / (root) des Raspberry Pis auf den Host vault in den Pfad /volume1/homes/dashboard/backups/. Auf dem Raspberry Pi nicht mehr vorhandene Dateien werden auf der DiskStation gelöscht.

#!/bin/sh

RSYNC=`which rsync`

if [ ! -e "$RSYNC" ]
then
	echo "rsync binary not found: '$RSYNC'"
	exit 1
fi

TODAY=`date +"%F_%T"`
SNAPSHOTFILE="/var/log/rsync/$TODAY.snapshot.txt"
#touch "$SNAPSHOTFILE"
echo "$TODAY" > "$SNAPSHOTFILE"

if [ ! -f "$SNAPSHOTFILE" ]
then
	echo "Could not create snapshotfile '$SNAPSHOTFILE'"
else
	echo "Snapshotfile created at:"
	ls -l "$SNAPSHOTFILE"
fi

LOGFILE="/var/log/rsync/$TODAY.log.txt"
EXCLUDEFILE="/usr/local/bin/backup-exclude.txt"

SOURCE="/"
DEST="vault:/volume1/homes/dashboard/backups/"

echo "Running rsync ..."
$RSYNC -avz --log-file="$LOGFILE" --exclude-from="$EXCLUDEFILE" --delete -e ssh "$SOURCE" "$DEST" 
echo "Backup complete."

exit 0

/usr/local/bin/backup-exclude.txt

proc/*
sys/*
dev/*
tmp/*
run/*
mnt/*

Quelle: Can a Raspberry Pi be used to create a backup of itself?

/etc/crontab

...
4 0 * * *	root	/usr/local/bin/backup.sh

Hiermit wird das Backup-Script täglich um 4 Uhr morgens ausgeführt.

Links

Tags: , , , ,
Labels: Linux

1 Kommentar | neuen Kommentar verfassen