Nehmen wir mal folgende Situation an.
- einen Server im Internet Server1
- einen Server im LAN Server2
Auf dem Server1 liegt eine Datei, die ich gerne einmal am Tag sichern würde. Server2 dient als Ziel zur Datensicherung.
Wir brauchen
- Script auf dem Server1
- Script auf dem Server2
Für beide Scripte legen wir einen Cronjob an, damit das Ganze vollautomatisch abläuft. Für die Datenübertragung benutzen wir das Programm scp
scp ermöglicht die verschlüsselte Übertragung zwischen zwei Computern im Netz.
Script 1
#!/bin/bash
###############################################################################$
# Autor: Frank Mankel
# Redis Backup-Script
#
# Kontakt:
#
###############################################################################$
echo "Start Redis Backup-Script"
echo "Daten sichern"
# Daten kopieren
cp /var/lib/redis/dump.rdb /home/frank/redis_backup
# Ins Arbeitsverzeichnis wechseln
cd /home/frank/redis_backup
# Der Datei das aktuelle Datum anhängen
cp dump.rdb dump.rdb_`date +%d_%b_%Y`
# Den Namen der Datei einer Variablen zuordnen
file=`find /home/frank/redis_backup -type f -name "*.rdb_*" -printf "%f\n"`
# Den Benutzer ändern
chown frank:frank dump.rdb*
# Paar Textausgaben falls man das File mal von Hand ausführt
echo "File kopiert"
echo "Sie können jetzt die Daten per SCP sichern"
echo "scp user@google.com:/home/frank/redis_backup/$file ."
# Aus Sicherheitsgründen, lösche ich die Files nach einer bestimmten Zeit.
# In dieser Zeit wird per Cron das File runter geladen!
sleep 10m
rm dump.rdb*
# Fertig ;)
echo "Scipt beendet"
Script2
#!/bin/bash
###############################################################################$
# Autor: Frank Mankel
# Redis Backup-Script
#
# Kontakt:
#
###############################################################################$
scp frank@google.com:/home/frank/redis_backup/dump.rdb_* .
echo "Datei gesichert"
# Alle Dateien löschen, die älter als 5 Tage sind.
find /Datei_Pfad/ -name "*.rdb*" -mtime 5 -exec rm {} \;
Bitte den find Befehl erst ohne die Löschfunktion testen!
-exec rm {} \;
Eine fehlerhafte Eingabe löscht gnadenlos, ohne Rückfrage!
Für beide Scripte legen wir jeweils einen Crontab an. Da gehe ich hier nicht weiter drauf ein.
crontab -e
Bleibt noch ein Problem. scp verlangt das Passwort beim Aufruf, nicht gut. Aber auch dafür gibt es eine Lösung.
Server2
[user@server2]# ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): # Hit Enter
Enter passphrase (empty for no passphrase): # Hit Enter
Enter same passphrase again: # Hit Enter
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
Danach den Key auf Server1 kopieren
ssh-copy-id user1@server1
Quelle: unix.stackechange.com
Danach kann man sich ohne Passwort auf dem Server1 anmelden, somit kann das Programm jetzt auch vollautomatisch gestartet werden.