Eigentlich hatte ich gar keine großen Änderungen am Text selbst vorgenommen. Vielleicht kannst du oder jemand anderes die Formatierungen vornehmen.
Heinrich_Schwietering ist schon mal drüber gegangen... und ich jetzt auch noch mal 😉
Gruß
kaputtnik
Anmeldungsdatum: Beiträge: 9245 |
Heinrich_Schwietering ist schon mal drüber gegangen... und ich jetzt auch noch mal 😉 Gruß |
||||||
Anmeldungsdatum: Beiträge: 676 |
Hallo, ich habe meine Version des Skripts noch mal überarbeitet, weil rsync Probleme macht, wenn ein zu sicherndes Verzeichnis Leerzeichen enthält. Anbei die neue Version von mir. Die Funktionsweise ist ansonsten gleich geblieben: Tante Ruth kann dieses Skript täglich laufen lassen, und alle Benutzer, die etwas zu sichern haben, in die Variable BENUTZER eintragen. Dann kann jede(r) Benutzer(in) im eigenen Heimatverzeichnis eine Datei namens ".backup-list" anlegen, mit einem Verzeichnis oder einer Datei pro Zeile. Platzhalter sind erlaubt, also z.B. .thunderbird .fetchmailrc .gnome* .kde* .openoffice.org* Dokumente Desktop OpenOffice Meine* Alles, was darin erwähnt wird, wird dann von dem Skrip berücksichtigt, und root ist der einzige Benutzer, der Verweise auf Verzeichnisse außerhalb des eigenen Heimatverzeichnisses benutzen darf. Zeilen wie /etc /boot /usr/local/bin /usr/local/sbin funktionieren also nur für root. Nochmal danke an Uname für die Vorlage! ☺ |
||||||
Anmeldungsdatum: Beiträge: 6030 |
Ich habe einen kleinen Fehler korrigiert. Wenn man die Paketlisten sichern wollte (Option PACKAGES) so wurden diese per E-Mail zugestellt (Option MAILREC). Wenn man einen lokalen Benutzer (@localhost) genutzt hat, so wurden diese nicht wirklich extern gesichert, es sei denn man hat den Mailordner (z.B. /var/mail) auch gesichert. Die neue Version schreibt erst (falls PACKAGES gesetzt) die Paketliste in die Logdatei. Wenn der Ordner (z.B. /root) anschließend gesichert wird, so ist die Paketliste in der Sicherung bereits vorhanden. Nachteil ist vielleicht, dass nun in der E-Mail erst die Paketliste und dann die eigentlichen Synchronisationen vorkommen, ist mir aber persönlich egal. Natürlich kann man das auch in zwei Dateien schreiben. Ziel des Scriptes soll jedoch sein, dass es einfach ist. Durch die Änderung ist es im übrigen auch etwas kürzer geworden. |
||||||
Anmeldungsdatum: Beiträge: Zähle... |
Hallo, zuerst möchte ich euch, für das hervoragende Skript danken, dass es einem auch als relativ ungeübten Ubuntuanwender ermöglicht, ein versioniertes Backup zu erstellen. Ich habe lediglich ein Problem. Ordner, die aktuell angelegt bzw. verwendet werden: Quelle: /media/share/ Ziel: /media/usb1/rsync/share/ Ordner mit Backup: /media/usb1/rsync/share/110104/media/share/backupordner gewünschter Ordner mit Backup: /media/usb1/rsync/share/110104/backupordner Wie kann ich es einrichten, dass Rsync nur die relativen Pfade ab dem Quellornder kopiert und nicht die gesammte Ordnerstruktur abbildet? Ich möchte die Ordner für verschiedene Personen mit unterschiedlichen Berechtigungen für einzelne Freigaben mittels Samba freigeben und deshalb ist es mir wichtig, erst die Unterteilung in Shares und dann das Datum zu haben. Ich würde dann einfach pro Share jeweils ein Skript laufen lassen. Anbei mein Skript. Freundliche Grüße |
||||||
Anmeldungsdatum: Beiträge: 6030 |
Entscheidend sind die rsync-Einträge: $RSYNC -e "$S" -avR $FROMSSH:$SOURCE $RSYNCCONF $TARGET$TODAY $INC >> $LOG 2>> $LOG Im Prinzip musst du nur das "R" bei allen rsync-Befehlen entfernen und das "$TODAY" auf "$TODAY$SOURCE" verlängern. Leider läuft das Programm dann nicht mehr, da fehlende Ordnerstrukturen nicht automatisch angelegt werden. Das geht soweit ich weiß dann nur mit "mkdir". Schau dir mal die uralten Versionen des Backupscriptes an, wo "mkdir" noch vorkommt. So in der Art vielleicht. |
||||||
Anmeldungsdatum: Beiträge: 2 |
Ich danke Dir vielmals für den schnellen Hinweis. Nachdem ich den Parameter R aus den Aufrufen entfernt habe, wurden die Pfade im Datumsordner nur relativ von der Quelle abgebildet; alles wie gewünscht! Vielen Dank und Dir noch einen schönen Tag. |
||||||
Anmeldungsdatum: Beiträge: Zähle... |
Handelt es sich wirklich um die Version vom 01.02.2010 ??? Oder vielleicht eher 01.02.2011 ? Ersteres wäre irgendwie nicht mit den Diskussionen zusammen zu bringen. Die alte Version läuft bei mir zufriedenstellend. Einzig habe ich es bisher nicht hinbekommen einen Pfad, der Leerzeichen enthält, auszuschließen. Verschiedenste Kombinationen, die Leerzeichen zu escapen etc, haben leider nicht zum Erfolg geführt. Die Variante RSYNC="--exclude=\"No Backup/\" liefert im Logfile /usr/bin/rsync -n -e "" -av /home/user/Desktop/Backup-Test/source/ --exclude="No Backup/" /home/user/Desktop/Backup-Test/target/110221/home/user/Desktop/Backup-Test/source/ ... rsync: change_dir "/home/user/Desktop/Backup-Test/No" failed: No such file or directory (2) und das Verzeichnis "No Backup" wird trotzdem kopiert. (Meinen wahren Username habe nich natürlich hier überall durch 'user' ersetzt.) Irgendwelche Hinweise, wie es funtionieren könnte? Oder wird die Variable im Skript irgendwo nicht ganz korrekt interpretiert? Eine gewisse Erfahrung im Umgang mit Skripten habe ich, aber an dieser Stelle würde ich mir im Wiki einen Hinweis zur korrekten Syntax wünschen. Mit der neuen Skript-Version bekomme ich nur den Fehler ~/Desktop/Backup-Test$ ./backup-new.sh bash: ./backup-new.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden Auch hier habe ich leider keine Ahnung woran es liegen könnte. Das Skript in der getesteten Konfiguartion noch mal im Anhang. Vielleicht sollte man die neue Version auch wieder mit den Kommentaren aus der älteren Version versehen: # sources and target MUST end WITH slash ... # mountpoint must end WITHOUT slash ... |
||||||
Anmeldungsdatum: Beiträge: 6030 |
Natürlich von 2011. Habe ich geändert
Oh, das ist scheinbar ein Problem mit der Textdatei. Bitte versuch es noch einmal. |
||||||
Anmeldungsdatum: Beiträge: Zähle... |
Hallo, das Script bricht auch ab, wenn im Zielpfad ein Leerzeichen ist.
Wie muss ich das Leerzeichen escapen? Gruß, seb |
||||||
Anmeldungsdatum: Beiträge: Zähle... |
wäre es nicht hilfreich, das Script und ggf. README in ein git bzw. bzr repository zu schieben? Vielleicht wurde das schon diskutiert, ich habe nicht alle Kommentare gelesen. |
||||||
Anmeldungsdatum: Beiträge: 6030 |
Naja, so groß sind die Änderungen ja nun auch nicht und das Wiki hat ja auch eine Art Versionierung. Das mit den Leerzeichen weiß ich nicht. Pfade haben bei mir nie Leerzeichen. Da es jedoch eigentlich nur ein RSYNC-Befehl in einem Bash-Script ist würde ich mal in die Richtung suchen. |
||||||
Anmeldungsdatum: Beiträge: 2 |
Bezüglich des Posts http://forum.ubuntuusers.de/post/2790994/: Das Skript läuft nun durch. Nun gibt es jedoch folgende Probleme mit dem Skript: Trotz Option MONTHROTATE=0 (ich entscheide gerne selbst was wann gelöscht wird) wird bei mir ein Ordner "02" angelegt. (Da heute der 02.03. ist.) Also habe ich am 02.04. ein Problem. Das Logfile heißt des weiteren genauso wie das Skript +".log" also z.B. "backup.sh.log" und wird nicht mehr mit in den Zielordner kopiert und somit beim nächsten Lauf des Skriptes überschrieben. Zur Exclude-Option von Rsync: Verschiedene Varianten der Angabe funktionieren auf der Konsole einwandfrei. rsync -avp --exclude="No Backup/" source/ target/ funktioniert genauso wie rsync -avp --exclude='No Backup/' source/ target/ Im Skript jedoch weder noch. Ich habe desweiteren alle Varianten die unter http://samba.anu.edu.au/rsync/FAQ.html#9 aufgeführt sind erfolglos mit dem Skript getestet. Datei, Ordner oder Muster auszuschließen, funktioniert im Skript bei mir einzig und allein, wenn man die Option "--exclude-from=full_absolute_path_to_file" verwendet und in der Datei pro Zeile die Dateien oder Ordner angibt. Ich konnte in ein Zielpfad mit Leerzeichen rsyncen, z.B. "/home/user/Backup Ziel", wenn man in den Rsync-Befehlen $TARGET durch "$TARGET" ersetzt. Damit ist man das Problem für das Zielverzeichnis los. Analog sollte es für das Quellverzeichnis funktionieren. Edit: Dann muss man sich möglicherweise für die Angabe des Quellpfades etwas überlegen, falls man mehrere Verzeichnisse backupen möchte. /Edit Das selbe Vorgehen für $RSYNCCONF hat mich allerdings nur genauso weit gebracht, wie das Verwenden der oben verlinkten Escape-Varianten. Der Befehl erscheint korrekt im Logfile, wird aber nicht korrekt ausgeführt und alle Dateien kopiert. |
||||||
Anmeldungsdatum: Beiträge: 6030 |
Ich habe das Script aktualisiert. Nur bei
sowie
werden die Parameter nun wirklich genutzt. Das mit den Anführungszeichen für $RSYNCCONF konnte ich noch nicht realisieren, das Script läuft dann auf einen Fehler. Vielleicht kann ja sonst jemand das Problem mit den Leerzeichen in Pfaden sowohl bei $SOURCES, $TARGET als auch $RSYNCCONF lösen. Ich selbst nutze niemals Leerzeichen in Pfaden. Für das Speichern des Logfiles könntest du den Namen um das Datum erweitern. Bei mehreren Backups pro Tag musst du noch die Uhrzeit hinten dranhängen (man date).
Logfile wäre dann backup.110302.log. Gefällt mir jedoch nicht, da es sinnlosen Datenmüll produziert. Standardmäßig lass ich mir das Logfile per E-Mail schicken, so dass ich keine Sicherung brauche. |
||||||
Anmeldungsdatum: Beiträge: 241 |
Hallo, ganz herzlichen Dank erst einmal für die Erstsellung und Weiterentwicklung dieses Skriptes. Funktioniert jetzt wunderbar bei mir zu Hause. Ich hatte ein ähnliches Problem wie bereits hier erwähnt mit Verzeichnissen mit Leerzeichen. Dummerweise nennt Virtualbox zB seinen Ordner per Standard "Virtualbox VMs". Ich habe selbst keine Ahnung aber ein Freund hat für mich an dem Skript was verändert und nun kann ich Ordner mit Leerzeichen ausschließen. Ich habe das jetzt nur mit den einen Ordner (habe ihn zu Anschaulichkeit im Skript stehen gelassen) getestet und es läuft. Vielleicht kann ja jemand, der anders als ich Ahnung hat, das noch mal anschauen und evtl. in die Vorlage hier einbauen. Es muss irgendwas mit "Definition der Optionen als String ersetzt durch ein Array" verändert worden sein, was mir ungefähr so viel sagt wie Kants ursprüngliche synthetische Einheit der Apperzeption... 😉. Grüße, Timo |
||||||
Anmeldungsdatum: Beiträge: 6030 |
Wollte nur kurz mitteilen, dass ich das Skript mal ein wenig überarbeitet habe. Nun kann man sowohl in SOURCES, TARGET als auch RSYNCCONF Pfade mit Leerzeichen angeben. Auch muss man TARGET nicht mehr mit einem Slash abschließen. |