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 rsh
und 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