Verwenden von rsync über sicheres SSH in einem Cron-Job

Verwenden von rsync über sicheres SSH in einem Cron-Job

Ich versuche, unter Debian GNU/Linux ein Shell-Skript einzurichten, um ein Verzeichnis und Unterverzeichnisse über SSH auf einem Remote-NAS mit Linux zu sichern. Diese Verbindung muss verschlüsselt sein.

Ich habe ein paar verschiedene Ansätze ausprobiert, die Folgendes beinhalten rsync rshund so, aber ohne Erfolg. Ich weiß, wie man das einrichtet crontab, aber ich brauche ein Skript, das unbeaufsichtigt ausgeführt wird (d. h. es fragt nicht nach einem Passwort).

Kann mir jemand helfen?

BEARBEITEN: Ich kann mich jetzt erfolgreich ohne Passwort anmelden.

Das Problem besteht nun darin, rsync dazu zu bringen, die Dateien zu kopieren /backups/in[remote system]:/backups/

Es kopiert nur einen Ordner von /backups/nach [remote system]:/backups/.

BEARBEITEN: Das lokale System scheint ein /backups und ein /backup zu haben … Ich habe es mit /backups versucht, obwohl ich /backup hätte verwenden sollen …

Letzter Befehl:rsync -avzr -e ssh /backup/ admin@[IP]:/backups/

Antwort1

Seit 2.6.x verwendet rsync standardmäßig SSH für Übertragungen. Das ist also bereits erledigt, sofern Ihr Remote-NAS rsync unterstützt.

Um unbeaufsichtigte Übertragungen ohne Passwort durchzuführen, richten Sie eine SSH-Schlüssel-basierte Authentifizierung für den Benutzer ein, mit dem Sie den Cron ausführen. Das sollte erledigt sein. So richten Sie es ein:http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html

Antwort2

Sie können dieses Flag auch an rsync übergeben, um eine Datei für das Passwort zu verwenden:

--password-file

Sie können die Datei problemlos mit CHMOD auf 400 ändern, sodass niemand außer Ihrem Benutzer (und natürlich auch Root) diese Datei lesen kann.

Antwort3

SSH-Schlüssel-Synchronisierung Sie sagten, Sie hätten dies am Laufen, aber ich dachte, ich würde die Schritte trotzdem posten

Melden Sie sich per SSH bei Ihrem NAS an.

Um den Schlüssel zu machen

ssh-keygen -t rsa on local machine 

Synchronisieren Sie dann mit dem Computer, von dem Sie das Backup durchführen möchten

cat ~/.ssh/id_rsa.pub | ssh user@hostname    ‘cat>>.ssh/authorized_keys’

Rync-Sicherungsskript – Dadurch wird ein Sicherungsordner für heute erstellt und dann werden die Dateien von gestern heute synchronisiert. Dadurch wird die Netzwerklast verringert. Anschließend werden die Dateien von heute per Rsync gesichert.

#!/bin/sh

mkdir -p /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username

rsync -avz /storage/backups/`date --date=yesterday +\%Y-\%m-\%d`-`date--date=yesterday    +\%A`/$host/$username/ /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username/

rsync -avz -e ssh  /home/username/ /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username/

Sie benötigen außerdem ein Skript, das die Backups bereinigt: Dadurch wird ein wöchentliches Backup gespeichert. Ich kann bestätigen, dass dies auf Netgears Ready-NAS funktioniert.

#!/bin/sh

# Definitions
sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A)

# Delete backups from 7 days ago
rm -rf /storage/backups/$sevendaysago

Sie müssen dies ausführen, um Skripte ausführbar zu machen

chmod u+x script.sh

in cron müssen Sie nur via crontab -e hinzufügen

@daily sh backupscript
1 17 * * * sh dailycleanup

verwandte Informationen