3plus4i
Anmeldungsdatum: 27. Dezember 2011
Beiträge: Zähle...
|
Nachdem ich fast 20 Jahre lang keine vernünftige Datensicherung hatte, habe ich mich jetzt mal drangesetzt, dafür ein Skript für rsync zu basteln. Die meisten Fragen konnte ich mittlerweile beantworten, ein paar sind aber noch offen. Zunächst zur Konstellation:
Ich habe hier einen Desktop-PC der Familie und meinen Laptop. In Ermangelung einer externen Festplatte (und weil ich sie nicht als notwendig erachte) würde ich das Backup des einen Rechners auf den jeweils anderen legen. Zumindest für den Anfang sollte das vollauf reichen (mittelfristig denke ich noch über eine zusätzliche, dezentrale Sicherung nach, das ist aber wieder ein ganz eigenes Thema). Dazu verbinde ich beide Geräte per Lan-Kabel und Direktverbindung. Damit sind wir auch schon bei der wichtigsten Frage:
Gehe ich richtig in der Annahme, dass ich nicht einfach so per Netzwerk Daten auf den anderen Rechner schreiben kann? Brauche ich dafür eine Netzwerkfreigabe für den Ordner, in den ich das Backup schreiben will? Ich habe versucht, im Wiki nachzulesen, werde aber nicht so ganz schlau daraus. Das Einrichten einer Freigabe könnte ein Problem werden, wenn ich dazu etwas nachinstallieren muss, da ich noch mit 12.10 arbeite und die Paketquellen nicht mehr zur Verfügung stehen. Da beißt sich dann die Katze in den Schwanz, da ich das Backup machen will, um endlich aufrüsten zu können (der USB-Boot-Stick liegt schon bereit). Mit den restlichen Fragen warte ich noch, bis ich dieses Problem gelöst habe. Dabei geht es dann auch nur noch um Rückversicherung bezüglich verwendeter Optionen, ausgenommene Ordner und der Syntax (um nicht am Ende aus bitteren Fehlern lernen zu müssen). Edit: Meine Version-Angabe für den Thread stimmt nicht, da 12.10 nicht mehr auswählbar ist. Kann das evtl. ein Mod ändern, damit es nicht zu Missverständnissen kommt?
|
redknight
Moderator & Supporter
Anmeldungsdatum: 30. Oktober 2008
Beiträge: 21725
Wohnort: Lorchhausen im schönen Rheingau
|
Ahoi. Irgendwas musst Du vermutlich nachinstallieren, damit du auf einen anderen Rechner übertragen kannst. rsync kann standardmässig auch per SSH übertragen, wenn Du bereits einen SSH-Server installiert hast, passt das. Wenn nicht, musst Du wohl die historischen Paketquellen nutzen oder doch eine externe Festplatte hernehmen (was ich persönlich als sinnvoller erachte). Denn dein Worstcase ist ja Rechner1 wird neuinstalliert, währenddessen stirb die Festplatte in Rechner2 und die einzig existierende Datenquelle ist kaputt
|
Reinarden
Anmeldungsdatum: 29. September 2014
Beiträge: 1044
|
3plus4i, Freigaben sind keine nötige, sondern SSH genügt. D.h. auf dem Zielrechner sollte das Paket "openssh-server" nachinstalliert sein (apt-get oder Software-Zentrum). Und auf beiden Rechnern sollte derselbe Benutzer vorhanden sein, oder genauer gesagt: dieselbe Benutzer-ID, damit rsync auf dem Zielrechner unter diesem Benutzer arbeiten kann. Initial einmal den "ssh"-Zugriff einrichten, damit man vom Quellrechner via ssh auf den Zielrechner komme ohne Paßwort. (Also auf der Quelle "ssh-keygen" eingeben, alle Fragen mit ENTER beantworten und dann mit "ssh-copy-id" den öffentlichen Schlüssel auf den Zielrechner kopieren.) Wenn danach auf dem Quellrechner der Zugang zum Zielrechner funktioniert: "ssh zielrechner" ... dann ist alles bereit für rsnyc. Beispiel für eine "Sicherung.sh" Scriptdatei:
#!/bin/bash
opt="--recursive --times --perms --compress --progress --human-readable"
rsync $opt ~/ordner zielrechnername:/home/benutzername/ordner - Wenn Du große Dateien übertragen willst, ohne sie bei einem rsync-Abbruch neu übertragen zu müssen, wäre der zusätzliche Parameter "--partial-dir=tempordner" praktisch. Sollen auf dem Ziel alte Dateien, die auf der Quelle nicht mehr vorhanden sind, auch gelöscht werden, ist wie üblich der Parameter "--delete" gut, doch diesen vorsichtig einsetzen und am Anfang erstmal mit "--dry-run" testen. ☺ http://manpages.ubuntu.com/manpages/trusty/en/man1/rsync.1.html
|
3plus4i
(Themenstarter)
Anmeldungsdatum: 27. Dezember 2011
Beiträge: 57
|
SSH habe ich noch nie verwendet, dementsprechend ist kein Server installiert und eingerichtet. Die Frage ist also, was ist weniger aufwändig: SSH oder net usershare? Beides müsste ich erst installieren und einrichten. redknight schrieb: [...] oder doch eine externe Festplatte hernehmen (was ich persönlich als sinnvoller erachte). Denn dein Worstcase ist ja Rechner1 wird neuinstalliert, währenddessen stirb die Festplatte in Rechner2 und die einzig existierende Datenquelle ist kaputt
Der Fall ist zwar möglich aber extrem unwahrscheinlich. Außerdem hätte ich bei einer eigenen, externen Platte doch das gleiche Risiko, oder? Da mein /home bereits auf einer eigenen Partition liegt, brauche ich das Backup eh nur im Falle eines Fehlers mit Datenverlust.
|
redknight
Moderator & Supporter
Anmeldungsdatum: 30. Oktober 2008
Beiträge: 21725
Wohnort: Lorchhausen im schönen Rheingau
|
3plus4i schrieb: Die Frage ist also, was ist weniger aufwändig: SSH oder net usershare? Beides müsste ich erst installieren und einrichten.
SSH. Installieren und fertig. die von Reinarden genannten Schritte sind nur für Passwortlose Nutzung nötig. Der Fall ist zwar möglich aber extrem unwahrscheinlich.
KOmmt auf das Alter der Platten an. Außerdem hätte ich bei einer eigenen, externen Platte doch das gleiche Risiko, oder?
Nö. Im Falle einer externen Platte nutzt Du diese Platte ja auch nur für das backup und nicht auch für den Betrieb des Rechners. Außerdem steigt die Ausfallwahrscheinlichkeit einer Platte mit zunehmendem Alter. Da mein /home bereits auf einer eigenen Partition liegt, brauche ich das Backup eh nur im Falle eines Fehlers mit Datenverlust.
Das ist ja mal völlig egal. Vor einer derartigen Änderung am System macht man ein vollständiges Backup. UNd zwar möglichst auf ein externes medium, das dann auch nicht am Strom hängt. Es geht ja auch darum, das System nach deinem Upgrade weiterzuführen.
|
3plus4i
(Themenstarter)
Anmeldungsdatum: 27. Dezember 2011
Beiträge: 57
|
So, endlich komme ich mal wieder dazu, hier weiter zu machen. Dann also ssh. Den Server habe ich bereits nachinstalliert, eine Frage konnte ich aber nicht klären: Zur Authentifizierung bzw. Schlüsselübertragung brauche ich ein Passwort - allerdings finde ich nirgends in der Anleitung eine Stelle, an der ich eines gesetzt hätte. Also woher kommt das Passwort? Mein Skript sieht momentan so aus:
| #!/bin/bash
rsync -aE -e ssh --numeric-ids --delete --exclude=.thumbnails/ --exclude=.cache/ /home/userA/ desktop.local/home/userB/Backup/
|
Bei --numeric-ids bin ich mir nicht sicher, ob es sinnvoll ist. Da ich von einem PC auf einen anderen sichere, mit unterschiedlichen Benutzern, habe ich ihn verwendet, damit das Backup problemlos wieder zurückgespielt werden kann. Habe ich sonst noch etwas vergessen? Was die Frage nach externer Platte oder nicht betrifft, darüber denke ich noch nach. Jetzt bin ich erst mal froh, wenn ich überhaupt voran komme und das Upgrade ist erst mal wichtiger. Da stehe ich eh noch vor einem massiven Problem.
|
redknight
Moderator & Supporter
Anmeldungsdatum: 30. Oktober 2008
Beiträge: 21725
Wohnort: Lorchhausen im schönen Rheingau
|
Eins nach dem anderen... gehen wir zunächst mal durch was du brauchst: rsync -au --partial QUELLE ZIEL
Sind die Optionen, die meines Erachtens nach unabdingbar sind. -a für den Archivmodus (hast Du ja auch), -u für Update newer (bestehende, gleich alte Dateien werden nicht übertragen) und --partial falls das Netzwerk zwischendrin hustet. Als Ziel über SSH musst Du rsync lediglich etwas wie username@ZielIP:/Pfad/zum/Backup eingeben, dass wird SSH benutzt. Mit --delete wäre ich vorsichtig. Ich habe lieber veraltete Daten im Ziel, die ich dann halt wegräumen muss als dass mir hinterher welche fehlen.
|
3plus4i
(Themenstarter)
Anmeldungsdatum: 27. Dezember 2011
Beiträge: 57
|
Okay, -u und --partial scheinen mir sinnvoll, die nehme ich auf. redknight schrieb: Als Ziel über SSH musst Du rsync lediglich etwas wie username@ZielIP:/Pfad/zum/Backup eingeben, dass wird SSH benutzt.
Ah, den Usernamen habe ich vergessen. Kann ich die IP auch über "Rechnername.local" auflösen, so wie ich es im Skript gemacht habe? Dann muss ich die nicht extra heraussuchen. Ich beziehe die IPs über DHCP, wenn ich das richtig beobachtet habe, ist die nicht immer gleich (auch wenn ich mich frage, warum).
Mit --delete wäre ich vorsichtig. Ich habe lieber veraltete Daten im Ziel, die ich dann halt wegräumen muss als dass mir hinterher welche fehlen.
Wenn ich gelöschte Dateien behalte, wird das halt schnell unübersichtlich, außerdem produziert es schnell eine Menge Datenmüll. Ich müsste dann von Hand vergleichen, was ich gelöscht habe. Ggf. würde ich wenn dann noch -b verwenden, dann muss ich mir zumindest nur den Ordner ansehen.
|
redknight
Moderator & Supporter
Anmeldungsdatum: 30. Oktober 2008
Beiträge: 21725
Wohnort: Lorchhausen im schönen Rheingau
|
Wenn rechnername.local in deinem Netz zuverlässig richtig auflöst, spricht nichts gegen den Namen. Zum ersten Testen und zum ausschließen von Fehlern würde ich zunächst die IP vernehmen.
|
3plus4i
(Themenstarter)
Anmeldungsdatum: 27. Dezember 2011
Beiträge: 57
|
Oh Gott, wenn ich in dem Tempo weiter mache, ist bereits die nächste LTS veröffentlicht, bevor ich das Backup gebacken kriege. Wird Zeit, dass ich das zu einem Abschluss bringe, nachdem ich immer noch mit einem veralteten (und unsicheren) System herumgurke 😕 . Zur IP-Adresse: Ich bin mir nicht sicher, ob ich sie zuverlässig herausfinden kann X) . Deswegen würde ich sie lieber über den Rechnername auflösen. Was könnte schlimmstenfalls passieren? Testen könnte ich die Auflösung auch durch ping. Ich werde ohnehin als erstes einen dry run machen, mal sehen, was ich dadurch an Informationen komme. Das Skript sieht jetzt so aus: | #!/bin/bash
rsync -auE -e ssh --numeric-ids --partial --delete --exclude=.thumbnails/ --exclude=.cache/ /home/userA/ desktop.local/home/userB/Backup/
|
Ist die Syntax soweit korrekt (vor allem bei den Pfaden)? -b fehlt noch, aber das brauche ich eh frühestens beim zweiten Backup.
|
MannMitHut
Anmeldungsdatum: 22. Juni 2010
Beiträge: 806
|
3plus4i schrieb: Oh Gott, wenn ich in dem Tempo weiter mache, ist bereits die nächste LTS veröffentlicht, bevor ich das Backup gebacken kriege. Wird Zeit, dass ich das zu einem Abschluss bringe, nachdem ich immer noch mit einem veralteten (und unsicheren) System herumgurke 😕 .
Daher scheint Dein grundsätzliches Setting mit dem Basteln eines rsync-Befehls auf der Kommandozeile nicht ganz das geeignete für Dich zu sein. Schau Dir doch einmal luckyBackup an. Es enthält für solche Zwecke vernünftige Features, um die ganzen Einstellungen durch die GUI geführt vorzunehmen und in Sicherungsprofilen festzuhalten. Du kannst Dir dann bei jedem sog. Task auch anschauen, welchen rsync-Befehl es generiert. (Folglich könntest Du ggf. das Programm auch einfach als Befehlszeilen-Generator verwenden, wenn Du doch letztlich ein Script schreiben willst.) Es gibt sogar die Möglichkeit, Optionen mauell in die Befehlszeilen zu ergänzen, die in den Dialogen nicht angeboten werden. Grüße!
|