Backup einer Linux-VM unter Windows

Aus ConfigWiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: Unter Windows wurde in VirtualBox ein Linux installiert. Aus dieser VM heraus sollen die wichtigen Daten per rsync auf einen externen Backup-Server gesichert werden. De...)
 
 
(3 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
[[Category:Linux]]
 
Unter Windows wurde in VirtualBox ein Linux installiert. Aus dieser VM heraus sollen die wichtigen Daten per rsync auf einen externen Backup-Server gesichert werden. Der Vorgang soll einfach über eine Verknüpfung auf dem Windows-Desktop gestartet werden. Hierzu wird PLink aus dem PuTTY-Paket verwendet.
 
Unter Windows wurde in VirtualBox ein Linux installiert. Aus dieser VM heraus sollen die wichtigen Daten per rsync auf einen externen Backup-Server gesichert werden. Der Vorgang soll einfach über eine Verknüpfung auf dem Windows-Desktop gestartet werden. Hierzu wird PLink aus dem PuTTY-Paket verwendet.
  
Zeile 4: Zeile 5:
  
 
Der Windows-Host bekommt für das Host-only-Netzwerk im Beispiel die IP 192.168.88.101, die VM bekommt die 192.168.88.102.
 
Der Windows-Host bekommt für das Host-only-Netzwerk im Beispiel die IP 192.168.88.101, die VM bekommt die 192.168.88.102.
 
==Backupserver==
 
Der Backupserver hat den Namen backup.server.de.
 
  
 
==Linux-VM==
 
==Linux-VM==
Zeile 14: Zeile 12:
 
Der erste ist für den Zugriff vom Windows-Host auf die VM, der 2. für den Zugriff der VM auf den Backupserver.
 
Der erste ist für den Zugriff vom Windows-Host auf die VM, der 2. für den Zugriff der VM auf den Backupserver.
  
Lokal werden das Backup mit backupninja vorbereitet. Darin werden die Systeminformationen gesammelt und ein MySQL-Backup kofiguriert. Das Backup landet unter /var/backups.
+
Für den Zugriff durch PuTTY mit diesem Key fügen wir ihn an:
 +
cat vm_id.pub >> .ssh/authorized_keys
  
Für das Remote-Backup wird der
+
Der Key kann noch auf den Host eingeschränkt werden:
 +
.ssh/authorized_keys
 +
from="192.168.88.101" ssh-rsa AAAA...
  
 +
Für das Remote-Backup wird der Backup-Key zum Backupserver kopiert
 +
ssh-copy-id -i backup_id.pub backup-user@backup.server.de
 +
Dort wird der Key ebenfalls entsprechend eingeschränkt.
  
 +
Lokal wird das Backup mit backupninja vorbereitet. Darin werden die Systeminformationen gesammelt und ein MySQL-Backup konfiguriert. Das Backup landet unter /var/backups.
 +
 +
Für das Backup legen wir ein Skript an:
 +
 +
/root/backup.sh
 +
#!/bin/bash
 +
/usr/sbin/backupninja -n
 +
rsync -avz --delete --delete-excluded --exclude-from=rsync-exclude.list --relative \
 +
-e "ssh -i /root/.ssh/backup_id" /home /etc /var/backups backup-user@backup.server.de:vm-backup/
 +
echo
 +
echo "Backup beendet."
 +
sleep 5
 +
 +
Da die VM nicht permanent läüft, wird backupninja angewiesen, es jetzt zu tun.
 +
Rsync überträgt die Daten aus /home, /etc und /var/backups an den Server, außer den in rsync-exclude.list
 +
definierten Ausnahmen.
 +
 +
rsync-exclude.list
 +
*/tmp/*
 +
*/sess_*
 +
*.tmp
 +
*.bak
 +
*.log
 +
*.log.1
 +
 +
==Backupserver==
 +
Der Backupserver hat den Namen '''backup.server.de'''. Auf dem Backupserver gibt es einen Benutzer '''backup-user''', in seinem Homeverzeichnis befindet sich das Verzeichnis '''vm-backup''' in dem die aktuelle Sicherung hinterlegt wird. '''/home''' wird mittels '''rsnapshot''' in ein versioniertes Backup überführt.
 +
 +
Jetzt rufen wir in der Linux-VM das Backup-Skript zum Test auf und kontrollieren gleichzeitig den ankommenden rsync-Prozeß.
 +
ps aux | grep [r]sync
 +
Die Ausgabe wird entsprechend im '''command'''-Parameter zur Einschränkung des Keys verwendet.
 +
 +
/backup-user/.ssh/authorized_keys:
 +
no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="rsync --server -vlogDtprRze.iLsf --delete-excluded . vm-backup/" ssh-rsa AAAA
 +
 +
Danach sollte das Backup erneut in der Linux-VM aufgerufen werden. Nachdem das fehlerfrei funktioniert muß nur noch der Aufruf unter Windows eingerichtet werden.
  
 
==Windows-Host==
 
==Windows-Host==
 +
 
In PuTTY konfigurieren wir eine Session "vm-backup" für die VM.
 
In PuTTY konfigurieren wir eine Session "vm-backup" für die VM.
 
  Session->IP: 192.168.88.102
 
  Session->IP: 192.168.88.102

Aktuelle Version vom 1. Februar 2012, 10:41 Uhr

Unter Windows wurde in VirtualBox ein Linux installiert. Aus dieser VM heraus sollen die wichtigen Daten per rsync auf einen externen Backup-Server gesichert werden. Der Vorgang soll einfach über eine Verknüpfung auf dem Windows-Desktop gestartet werden. Hierzu wird PLink aus dem PuTTY-Paket verwendet.

VirtualBox stellt der VM 2 Netzwerkadapter zur Verfügung, einmal NAT - damit das Linux Kontakt zur Außenwelt hat und ein Host-only Adapter - mit dem vom Host auf die VM zugegriffen wird.

Der Windows-Host bekommt für das Host-only-Netzwerk im Beispiel die IP 192.168.88.101, die VM bekommt die 192.168.88.102.

[Bearbeiten] Linux-VM

In der VM werden 2 passwortlose SSH-Keys erzeugt:

ssh-keygen -b 4096 -t rsa -C root@vm -f vm_id
ssh-keygen -b 4096 -t rsa -C backup@vm -f backup_id

Der erste ist für den Zugriff vom Windows-Host auf die VM, der 2. für den Zugriff der VM auf den Backupserver.

Für den Zugriff durch PuTTY mit diesem Key fügen wir ihn an:

cat vm_id.pub >> .ssh/authorized_keys

Der Key kann noch auf den Host eingeschränkt werden: .ssh/authorized_keys

from="192.168.88.101" ssh-rsa AAAA...

Für das Remote-Backup wird der Backup-Key zum Backupserver kopiert

ssh-copy-id -i backup_id.pub backup-user@backup.server.de

Dort wird der Key ebenfalls entsprechend eingeschränkt.

Lokal wird das Backup mit backupninja vorbereitet. Darin werden die Systeminformationen gesammelt und ein MySQL-Backup konfiguriert. Das Backup landet unter /var/backups.

Für das Backup legen wir ein Skript an:

/root/backup.sh

#!/bin/bash
/usr/sbin/backupninja -n
rsync -avz --delete --delete-excluded --exclude-from=rsync-exclude.list --relative \
-e "ssh -i /root/.ssh/backup_id" /home /etc /var/backups backup-user@backup.server.de:vm-backup/
echo
echo "Backup beendet."
sleep 5

Da die VM nicht permanent läüft, wird backupninja angewiesen, es jetzt zu tun. Rsync überträgt die Daten aus /home, /etc und /var/backups an den Server, außer den in rsync-exclude.list definierten Ausnahmen.

rsync-exclude.list

*/tmp/*
*/sess_*
*.tmp
*.bak
*.log
*.log.1

[Bearbeiten] Backupserver

Der Backupserver hat den Namen backup.server.de. Auf dem Backupserver gibt es einen Benutzer backup-user, in seinem Homeverzeichnis befindet sich das Verzeichnis vm-backup in dem die aktuelle Sicherung hinterlegt wird. /home wird mittels rsnapshot in ein versioniertes Backup überführt.

Jetzt rufen wir in der Linux-VM das Backup-Skript zum Test auf und kontrollieren gleichzeitig den ankommenden rsync-Prozeß.

ps aux | grep [r]sync

Die Ausgabe wird entsprechend im command-Parameter zur Einschränkung des Keys verwendet.

/backup-user/.ssh/authorized_keys:

no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="rsync --server -vlogDtprRze.iLsf --delete-excluded . vm-backup/" ssh-rsa AAAA

Danach sollte das Backup erneut in der Linux-VM aufgerufen werden. Nachdem das fehlerfrei funktioniert muß nur noch der Aufruf unter Windows eingerichtet werden.

[Bearbeiten] Windows-Host

In PuTTY konfigurieren wir eine Session "vm-backup" für die VM.

Session->IP: 192.168.88.102
Session->Saved Sessions: vm-backup
Window->Translation->Charset: UTF-8
Connection->Data->Auto-loginusername: root
Session->Save

Jetzt holen wir uns den Key von der VM. (Start->ausführen->cmd)

$PUTTY_PATH\pscp.exe vm-backup:.ssh/vm_id .
$PUTTY_PATH\puttygen.exe
Conversations->Import key: vm_id
Save private key: vm_id.ppk

Die Warnung bzgl. leerer Passphrase bestätigen.

Jetzt wieder in Putty:

Session: vm-backup -> Load
Connection->SSH->Remote command: /root/backup.sh
Connection->SSH->Auth->Private key file: vm_id.ppk

Verknüpfung zu PLink auf dem Desktop erzeugen und beim Ziel hinter plink.exe die Session hinzufügen.

Ziel: "...\PuTTY\plink.exe" vm-backup
Meine Werkzeuge