Um dies in den meisten Linux-Distributionen täglich zu tun, sollten Sie in der Lage sein, den rsync
Befehl (gemäß der Antwort von @ guido ) in ein Skript zu schreiben und das Skript in das /etc/cron.daily
Verzeichnis zu schreiben . Solange anacron
installiert (möglicherweise nicht standardmäßig), werden verpasste cron.daily
Jobs beim nächsten Start der Maschine abgefangen (und um Mitternacht ausgeführt, wenn die Maschine umgeschaltet wird).
Für das Skript würden Sie einfach Folgendes tun:
#!/bin/sh
rsync -a user@serverB:/source/folder/ /destination_folder
Sie können die -z
(Komprimierungs-) Option hinzufügen, wenn das Backup über eine langsame (ish-) Verbindung erfolgt oder wenn Sie Bandbreite sparen möchten. Meiner Erfahrung nach beeinträchtigt dies jedoch die Leistung moderner Computer / Netzwerke.
Wenn Sie von jeder Sicherung ein Protokoll führen möchten, können Sie Folgendes tun:
#!/bin/sh
rsync -av user@serverB:/source/folder/ /destination_folder \
>/var/log/backup_log 2>&1
Damit dies als Cron-Job funktioniert, muss für root auf serverA ein passwortloses SSH eingerichtet sein , damit Sie sich bei serverB anmelden können. Dies muss das Root-Konto sein (dh es muss eingegeben werden ), da Jobs als Root ausgeführt werden./root/.ssh
cron.daily
anacron
nimmt keinecron
Aufträge pro Benutzer auf . Sie können jedoch jederzeitsu
/sudo
aus dem Skript verwenden, um rsync als bestimmten Benutzer auszuführen. Beachten Sie jedoch, dass die Schlüssel sicherer unter aufbewahrt werden/root
.user
nur ein normaler Benutzer von machineB sein, je nachdem, was Sie sichern .ls -l
Ihrer Frage ein Beispiel der aufgetretenen Fehler und die Ausgabe einiger Dateien hinzufügen , können die Mitarbeiter weitere Hinweise geben.Ich würde vorschlagen, rdiff-backup zu verwenden . Ich verwende es jetzt, um jede Nacht automatische inkrementelle Backups meiner eigenen Daten zu erstellen (zwei Workstations, zwei Server und ein Konto auf dem Server einer anderen Person).
Ich habe zuvor rsync verwendet, bin jedoch auf rdiff-backup umgestiegen, da dies praktischer ist und inkrementelle Sicherungen großer Dateien wie z. B. Festplattenimages von virtuellen Maschinen durchführen kann. rdiff-backup ist sehr ähnlich zu meinen vorherigen rsync-backup-scrips, aber richtig gemacht .
Ich habe eine Skriptdatei in /etc/cron.daily auf dem Computer abgelegt, auf dem die Sicherung gespeichert ist. Diese startet rdiff-backup jeden Tag in den frühen Morgenstunden und ruft die Daten vom Remote-Computer ab.
quelle
Zusätzlich zu all den vorherigen Antworten, hier eine, die sich auf SSH-Schlüssel stützt, mit Einschränkungen, was getan werden kann, wenn man sich mit diesem Schlüssel anmeldet.
Auf Server A
In diesem Fall ist es weniger wichtig, wenn Sie einen separaten Benutzer erstellen oder einen Ihrer vorhandenen Benutzernamen verwenden. Wenn ich es wäre, würde ich jedoch einen separaten Benutzer erstellen. In den folgenden Beispielen verwende ich den Benutzernamen
bkpuser
für beide Server.Wenn Sie angemeldet sind
bkpuser
, erstellen Sie einen SSH-Schlüssel ohne Passwort.Auf Server B
Aktivieren Sie
PubkeyAuthentication
insshd_config
.Erstellen Sie den Benutzer
bkpuser
. Legen Sie ein sehr kompliziertes Kennwort fest oder deaktivieren Sie die Kennwortanmeldung für diesen Benutzer (genau wie Sie dies tun, hängt davon ab, welches Unix und welche Distribution Sie ausführen). Der Benutzer sollte sich nur mit einem SSH-Schlüssel anmelden. Stellen Sie sicher, dassbkpuser
Lesezugriff auf alle Verzeichnisse und Dateien besteht, die Sie sichern möchten.Kopieren Sie den öffentlichen Teil des Schlüssels, der von A nach
~bkpuser/.ssh/authorized_keys
B erstellt wurde. Bearbeiten Sie das Kontrollkästchen, um einen Befehl beim Herstellen einer Verbindung automatisch auszuführen. Dieser Befehl sollte kein Zeiger auf ein Shell-Skript sein. Fügen Sie stattdessen das Shell-Skript direkt in den Schlüssel ein. Schließen Sie auch eine Einschränkung ein, damit der Schlüssel nur von Server A und keinem anderen Server verwendet werden kann. Im folgenden Beispiel gebe ich Server A die IP-Adresse10.1.2.3
und gehe davon aus, dass sich alle zu sichernden Dateien darunter befinden/data
.Auf Server A
Wenn Sie eine der Cron-Registerkarten verwenden, die
@reboot
Einträge unterstützt , fügen Sie einen solchen Eintragbkpuser
mit dem Befehl zu s crontab hinzussh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz
. Wenn dies nicht möglich ist, können Sie es jederzeit einstellen. Wenn es meine Daten wären, würde ich es wahrscheinlich täglich tun.quelle
Hier finden Sie eine vollständige Lösung für die tägliche Sicherung von Server B auf Server A um 4 Uhr morgens mithilfe von SSH.
Erstellen Sie eine automatische SSH-Verbindung von Server B zu Server A
Erstellen Sie ein Sicherungsskript auf Server B
nano / root / backup
chmod 744 / root / backup
Automatisieren Sie die Sicherung auf Server B
crontab -e
Weitere Informationen finden Sie auf den Seiten Herstellen einer Verbindung zu SSH ohne Eingabe eines Kennworts unter Linux und Sichern eines Servers unter Debian oder Ubuntu Linux .
quelle
Sie können dafür rsync verwenden (auf eine Art umgekehrte Weise):
wo:
quelle
-a
impliziert-r
.Der springende Punkt ist, wie es automatisch gemacht wird (keine Eingabe von Passwörtern erforderlich):
screen
odertmux
Sitzungeval $(ssh-agent)
ssh-add
export RSYNC_RSH="ssh -i ~/.ssh/id_rsa ..."
while :; do rsync -av u@h:/p /local; sleep $[24*60*60]; done
quelle
ssh
.RSYNC_SSH
SSH-Schlüssel zur Suche nach Standardpositionen hinzuzufügen ....
Punkte überwacht, an denen Sie nützliche Argumente hinzufügen können. Sie haben auch meinen letzten Kommentar nicht gelesen, in dem ich die "wirklich wichtige Frage" erwähne, daher würde ich das niemals mit passwortlosen Schlüsseln tun. Sie müssen auch aktivierenPubkeyAuthentication
und niemand hat es gesagt.