Anfängerfragen zu Backupskript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Ozelot
Beiträge: 1515
Registriert: 18.11.2007 09:52:58

Anfängerfragen zu Backupskript

Beitrag von Ozelot » 04.06.2010 01:28:14

Moin,

Ich würde gerne die Dateien, die mir

Code: Alles auswählen

find -mtime $tage
ausgibt, unter Beibehaltung der Verzeichnisstruktur kopieren.

1. Ich versuche, das mit einer for-Schleife und cp zu lösen (es gibt sicher elegantere Wege?), habe dann aber das Problem, daß Dateinamen mit Leerzeichen als mehrere Strings expandiert werden und deswegen zu mehreren Schleifendurchläufen führen. Wenn ich den find-befehl aber quotiere, dann ergibt das ja nur einen einzigen großen String. Wie kriege ich das richtig hin?

2. Gibt es eine Möglichkeit, cp dazu zu kriegen, daß es als Ziel angegebene, nichtvorhandene Verzeichnisse automatisch erstellt (die Manpage sagt dazu leider nichts)? Oder wie macht man das?

3. Mit rsync wäre der ganze Spaß sicher nur eine Zeile, oder?

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Anfängerfragen zu Backupskript

Beitrag von lemak » 04.06.2010 12:51:15

Hallo,

prüfe mal ob folgendes eine Lösung ist:

Code: Alles auswählen

find -mtime $tage -exec cp -v --parents "{}" /tmp \;
Hier wird allerdings das Quell- ans Zielverzeichnis angehängt.

Ändert sich das Zielverzeichnis denn bei jedem Backup?

MfG i
Zuletzt geändert von lemak am 04.06.2010 13:39:24, insgesamt 1-mal geändert.

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Anfängerfragen zu Backupskript

Beitrag von lemak » 04.06.2010 13:11:21

Sonst vielleicht so etwas als Skript:

Code: Alles auswählen

#!/bin/sh
backup="/tmp/`date +%Y-%m-%d_%H-%M-%S`"
mkdir -v --parents "$backup"
find -mtime $tage -exec cp -v --parents "{}" "$backup" \;
PS: Das mit dem Datum liegt ja auf der Hand.

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Anfängerfragen zu Backupskript

Beitrag von lemak » 04.06.2010 13:47:29

Sonst schau dir auch mal das Skript aus dem ubuntuusers.de-Wiki Backup mit RSYNC an, und meine PN :wink:

Ozelot
Beiträge: 1515
Registriert: 18.11.2007 09:52:58

Re: Anfängerfragen zu Backupskript

Beitrag von Ozelot » 04.06.2010 17:35:03

Super, danke! Die Variante mit -exec funktioniert, und auch die Option --parents bei mkdir war genau, was mir fehlte.

Allerdings..

..stelle ich fest, daß find -mtime x mir nur Dateien gibt, die vor GENAU x*24 Stunden verändert wurden, ich will aber alle Dateien SEITHER erfassen.

Ich könnte zwar einfach eine Datei mit entsprechendem Zeitstempel erstellen und die Option -newer verwenden, aber wenn es noch andere Möglichkeiten gibt, bin ich ganz Ohr.

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Anfängerfragen zu Backupskript

Beitrag von lemak » 04.06.2010 18:39:43

Welche Wert hat denn $tage? -mtime +n sollte richtig sein.

Ozelot
Beiträge: 1515
Registriert: 18.11.2007 09:52:58

Re: Anfängerfragen zu Backupskript

Beitrag von Ozelot » 04.06.2010 18:54:22

Der Wert variiert ;-). Normalerweise sind es einstellige Zahlen.

Aber

Code: Alles auswählen

find -mtime +4 
gibt mir alle Dateien im Verzeichnis aus, auch wenn sie älter sind als 4 Tage.

(Ich hab mir jetzt den Umweg über find -newer und touch gebaut.)

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Anfängerfragen zu Backupskript

Beitrag von lemak » 04.06.2010 19:00:23

Achso, also meinst du es genau anders rum. Alles was neuer ist, dann -mtime -n.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Anfängerfragen zu Backupskript

Beitrag von Duff » 04.06.2010 19:38:07

Ja, ja diese Optionen. Muss ich mir auch jedes Mal aufs neue anschauen, wenn ich sie brauche.

Aber für ein Backup würde ich auch auf rsync zurück greifen. Man muss dort zwar auch aufpassen, aber wenn man rsync richtig anwendet, werden nur die Dateien gebackupt, die geändert wurden.
Oh, yeah!

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Anfängerfragen zu Backupskript

Beitrag von lemak » 04.06.2010 20:32:52

Duff hat geschrieben: Aber für ein Backup würde ich auch auf rsync zurück greifen. Man muss dort zwar auch aufpassen, aber wenn man rsync richtig anwendet, werden nur die Dateien gebackupt, die geändert wurden.
Dann so :D

Code: Alles auswählen

find ./ -mtime -4 |rsync -av ./ /tmp --files-from=/dev/stdin

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Anfängerfragen zu Backupskript

Beitrag von suno » 05.06.2010 18:29:44

Duff hat recht, ich glaube das der Ansatz total falsch ist. cp und ein selbstgestricktes script fuer ein Backup zu verwenden ist imo nicht gut. Dafuer nimmt man fertige Loesungen. Entweder reine Backuptools (Bacula) oder sonst evtl. rsync oder noch besser Unison (bidirekionales rsync) http://sunoano.name/ws/unison.html

Ozelot
Beiträge: 1515
Registriert: 18.11.2007 09:52:58

Re: Anfängerfragen zu Backupskript

Beitrag von Ozelot » 05.06.2010 21:43:14

Darf ich fragen warum? Und warum so pauschal? Nichts gegen rsync und andere fertige Lösungen, die in vielen Fällen besser sind, aber es geht hier ja um meinem Fall..

Zweck meines Skripts ist, wenn ich unterwegs bin nur die in den letzten Tagen (seit dem letzten Heimatbackup) veränderten Dateien auf einem Stick zu sichern. Dabei geht es nicht um Systemdateien, nur um Userdaten. Ein inkrementelles/vollständiges Backup von /home/user nutze ich dabei deswegen nicht, weil es a.) länger dauert b.) unnötig Platz auf dem Stick verschwendt und vor allem c.) will ich nicht, daß alle meine Daten auf dem Stick sind, wenn er mal verloren gehen sollte.

Was genau mache ich jetzt "total falsch"? Was können andere Programme besser, gemessen an meinem Zweck, als mein primitives Skript? (abgesehen davon, daß es Spaß gemacht hat und beim Lernen hilft). Zugegeben (schon im ersten Post), daß das mit einer rsync-Zeile wohl auch zu haben ist. Aber am Ende sind doch so oder so die richtigen Dateien im richtigen Ordner, oder?

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Anfängerfragen zu Backupskript

Beitrag von suno » 05.06.2010 23:21:06

- cp kopiert immer das ganze file; rsync & Co nur bloecke
- selfmade skaliert nicht; rsync & Co schon weil teilweise seit Jahrzenten gewachsen und skalieren perfekt
- wenn du etwas lernen willst mach etwas das wirklich was bringt ... lerne Python oder sonst was sinnvolles
- wir hattet gerade vor drei Tagen einen Fall wo auf einem Server content ins file geschrieben wurde sich die mtime aber nicht geaendert hat
-- third party tools usw. (datenbanken die Ihr eigenes "filesystem" schreiben) scheren sich teilweise nicht um POSIX standards ergo
-- man kann sich auf die mtime nicht verlassen daher braucht man checksummen
- kein vorhandenes ecosystem d.h. integration mit anderen tools/loesungen
- bacula, rsync & Co kannst du ganz genau sagen welches file/directory du haben willst oder auch nicht (must nicht den ganzen $HOME nehmen)
- etc. etc.

Es ist vollkommen ok wenn du deinen one-liner verwenden willst. Es ist halt aber so das man mit 14+ Jahren Erfahrung sagen kann was Unsinn ist und was nicht. Das ist rein fachlich und nicht persoenlich zu nehmen.

Ozelot
Beiträge: 1515
Registriert: 18.11.2007 09:52:58

Re: Anfängerfragen zu Backupskript

Beitrag von Ozelot » 06.06.2010 00:45:45

Auch von mir nix für ungut. Und Du hast sehr recht, was Server und professionelle Größenordnungen angeht. Aber den Unterschied zwischen fachlich und persönlich verstehe ich hier gar nicht: Entweder ist das Unsinn, was ich hier mache um mein Problem zu lösen, oder es ist ok. (Ich sag ja nix gegen Einwände wie "Aber sei Dir darüber klar, daß sowas in komplexeren Zusammenhängen nicht mehr taugt").

Ich habe hier eine simple Workstation. Für meinen Zweck ist Skalierung, und Block-kopieren völlig überflüssig - es geht um Textdateien bis allenfalls im einstelligen Megabyte-Bereich und das wird so bleiben. Demgegenüber klingt Bacula Installieren unnötig. Euer mtime-Fall wird bei mir auch nicht auftreten, es gibt keinerlei Datenbanken, 3rd Party Produkte etc., keinerlei denkbare Integration.

Es geht hier um ein bißchen Arbeitskomfort. Und das mag ich an Computern, an Linux, an Debian - daß ich sie auf Skriptebene für meine Zwecke zurechtkonfigurieren kann. Und wozu ist Skripting da, wenn nicht, um kleine tägliche Aufgaben spontan zu lösen (solange man sich klar ist, zu was die Lösung taugt und was nicht) ? Und schriebe ich das gleiche Ding mit Python, wäre das ja auch nicht besser, oder? Und sicher sind höhere Sprachen toll, aber warum sollte ich deswegen darauf verzichten, Shellskripting zu lernen?

Wenn ich mit einem Spaten einen kleinen Teich aushebe, und mir das Muskeltraining (als Begleiterscheinung) willkommen ist, ist es nicht sinnvoller einen Bagger zu verwenden. Obwohl ja - Bagger sind generell besser sind zum Graben. Oder würde man dann sagen, es sei gut, immer gleich einen Bagger zu verwenden, daß man dann auch bei größeren Projekten an das richtige gewöhnt ist?

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Anfängerfragen zu Backupskript

Beitrag von suno » 06.06.2010 01:16:58

Ozelot hat geschrieben: Wenn ich mit einem Spaten einen kleinen Teich aushebe, und mir das Muskeltraining (als Begleiterscheinung) willkommen ist, ist es nicht sinnvoller einen Bagger zu verwenden. Obwohl ja - Bagger sind generell besser sind zum Graben. Oder würde man dann sagen, es sei gut, immer gleich einen Bagger zu verwenden, daß man dann auch bei größeren Projekten an das richtige gewöhnt ist?
Ich bin fuer sprengen, dass ist dann so ca. ein sehr leistungsfaehiger, sehr schneller Bagger :D

Benutzeravatar
bmario
Beiträge: 1257
Registriert: 05.09.2007 12:15:47
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dresden

Re: Anfängerfragen zu Backupskript

Beitrag von bmario » 06.06.2010 10:19:59

Cooler vergleich, aber nur der Vollständigkeit halber:

Ich rate JEDEM, der einen Teich ausheben will, zu einem Bagger. Wir haben hier einmal selbst gegraben und die Erfahrung wünsche ich keinem :)

Wie wäre es mit dem Vergleich: Beet umgraben <--> Traktor mit Pflug?

mario
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Anfängerfragen zu Backupskript

Beitrag von suno » 06.06.2010 11:26:28

Spass beiseite, ich rate zu Unison vorallem weil ich damit sehr gut in der Lage bin mehrere Maschinen (workstation, notebook, smartphone, ...) im sync zu halten (ganz besonders wenn man die sterntopologie verwendet http://sunoano.name/ws/unison.html#star)

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: Anfängerfragen zu Backupskript

Beitrag von peschmae » 06.06.2010 13:29:57

Ozelot hat geschrieben:Zweck meines Skripts ist, wenn ich unterwegs bin nur die in den letzten Tagen (seit dem letzten Heimatbackup) veränderten Dateien auf einem Stick zu sichern. Dabei geht es nicht um Systemdateien, nur um Userdaten. Ein inkrementelles/vollständiges Backup von /home/user nutze ich dabei deswegen nicht, weil es a.) länger dauert b.) unnötig Platz auf dem Stick verschwendt und vor allem c.) will ich nicht, daß alle meine Daten auf dem Stick sind, wenn er mal verloren gehen sollte.
a) ok, wobei mit rsync basierten Lösungen oder so nicht wirklich ein Problem, das muss zwar immer den ganzen Verzeichnisbaum durchrödeln, ist aber da es nur auf Zeit und Dateigrösse guckt recht schnell
b) unbestreitbar; mein Homeverzeichnis hätte auch gar nicht erst auf einem USB Stick platz...
c) verschlüsseln ist sowieso immer eine gute Idee ;)
Ozelot hat geschrieben:Was genau mache ich jetzt "total falsch"? Was können andere Programme besser, gemessen an meinem Zweck, als mein primitives Skript?
Was die Variante von "i" besser kann als dein Ansatz mit cp ist vor allem dann relevant, wenn du unterwegs mehrere Backups machen willst. Dann guckt rsync nämlich selber auf die Timestamps und Dateigrössen der zu kopierenden Dateien um herauszufinden, ob es die denn jetzt wirklich kopieren muss (oder ob das nicht eh schon beim letzten Backup vor zwei Tagen geschah).

Ansonsten machst das so imo durchaus Sinn. Ich denke, dass einige Missverständnisse hier vermieden worden wären, wenn du schon von Anfang an gesagt hättest wozu du das ganze willst.
Für ein regelmässiges Backup zuhause macht sowas nämlich keinen Sinn; sehr wohl aber für dein konkretes Problem.

Von den fixfertigen Backuplösungen (und da zähle ich jetzt rsync nicht dazu; das ist ja keine Backuplösung ansich sondern nur ein etwas raffinierteres "cp") bin ich im Übrigen wieder weggekommen; oft sind da die Daten so gut in einem Backupsoftwareeigenen Format verwurstelt, dass es ein Abenteuer ist herauszufinden, welche Backups denn jetzt existieren und wie ich jetzt diese vier Dateien aus etwa dem und dem Zeitraum wiederkriege.
Deshalb gibts bei mir nur noch Storebackup (lokal, kopiert komplette Verzeichnisstrukturen, komprimiert Dateien *einzeln* mit gzip/bzip2 und verwendet Hardlinks um Speicherplatz zu sparen) und ein selbstgebasteltes Scriptmonster was dasselbe auch mittels rsync auf entfernte Server machen kann. Das geänderte-Dateien-auf-USB-Stick Problem habe ich so nicht, weil ich auch von unterwegs remote Backups mache mit rsync über ssh.

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Anfängerfragen zu Backupskript

Beitrag von lemak » 06.06.2010 13:43:29

Ozelot hat geschrieben: 3. Mit rsync wäre der ganze Spaß sicher nur eine Zeile, oder?
peschmae hat geschrieben: Was die Variante von "i" besser kann als dein Ansatz mit cp ist vor allem dann relevant, wenn du unterwegs mehrere Backups machen willst.
Also rsync stand ja schon von Beginn an im Raum :-)
Ansonsten machst das so imo durchaus Sinn. Ich denke, dass einige Missverständnisse hier vermieden worden wären, wenn du schon von Anfang an gesagt hättest wozu du das ganze willst.
Genau...

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Anfängerfragen zu Backupskript

Beitrag von suno » 06.06.2010 14:03:28

peschmae hat geschrieben:Das geänderte-Dateien-auf-USB-Stick Problem habe ich so nicht, weil ich auch von unterwegs remote Backups mache mit rsync über ssh.
Ja und mit meiner Unison Variante hast du dann auch noch den Vorteil das du das umdrehen kannst d.h. fahre in ein Land deiner Wahl, kaufe einen nackten PC, gib in ans Internet, zieh dir dein ganzes ueber die Jahre gewachsene und massgeschneiderte system herunter, reboot, fertig.

@OP
wenn du das alles nur mit rsync haben willst guck mal hier http://sunoano.name/ws/bash.html#some_b ... tion_i_did und zwar nach dem alias syncsec (C+f mit iceweasel hilft beim suchen).

Ozelot
Beiträge: 1515
Registriert: 18.11.2007 09:52:58

Re: Anfängerfragen zu Backupskript

Beitrag von Ozelot » 06.06.2010 15:55:13

Ok, meine Herren -

Entschuldigt bitte die Mißverständnisse. Ich dachte anfangs eigentlich, ich stelle nur mal kurz ein paar leicht beantwortbare Syntaxfragen zu cp und rsync. Aber stimmt - ist ja oft sehr nützlich, daß die Forumsleute mitdenken und auch den Lösungsansatz in Frage stellen. Und daß da gerade beim Thema Backups gestandene Admins hellhörig werden, hätte ich mir denken sollen.. (das kommt vielleicht gleich nach "Ich will mir voll gern einen Rootserver einrichten, kennt jemand ein howto?")

Eines schönen Tages werde ich auch einen Homeserver 24h lang rennen lassen, und all diese Dinge sauber zentralisieren (das mit der Ferninstallation klingt schon sehr toll, auch wenns für meine Zwecke wohl Spielerei bleiben würde). Momentan schaufle ich halt meine paar Kilobyte mit meinem Einzeiler durch die Gegend, das paßt so. Danke für all Eure Tips.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: Anfängerfragen zu Backupskript

Beitrag von peschmae » 06.06.2010 17:26:38

suno hat geschrieben: Ja und mit meiner Unison Variante hast du dann auch noch den Vorteil das du das umdrehen kannst d.h. fahre in ein Land deiner Wahl, kaufe einen nackten PC, gib in ans Internet, zieh dir dein ganzes ueber die Jahre gewachsene und massgeschneiderte system herunter, reboot, fertig.
Für das von dir hier angeführte Beispiel bringt unison irgendwie nichts. Rsync/scp funktioniert genauso gut in die andere Richtung; sonst wäre mein Backup ja kein wirklich wiederherstellbares Backup. ;)
Aber für solche Spielereien ist mir meine Internetleitung dann doch etwas zu langsam, für ein Restore würde ich darüber gut zwei Monate brauchen. :|

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

suno
Beiträge: 354
Registriert: 25.07.2008 17:33:40

Re: Anfängerfragen zu Backupskript

Beitrag von suno » 06.06.2010 17:47:45

peschmae hat geschrieben: Für das von dir hier angeführte Beispiel bringt unison irgendwie nichts. Rsync/scp funktioniert genauso gut in die andere Richtung; sonst wäre mein Backup ja kein wirklich wiederherstellbares Backup. ;)
Ich denke schon da ich mich mit Unison nicht darum kuemmern muss "wo" (welche maschine) ich gerade bin. scp und rsync wollen immer quelle und ziel als Ausgangspunkt haben.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: Anfängerfragen zu Backupskript

Beitrag von peschmae » 06.06.2010 22:39:24

Und unison errät die Datenquelle aus was nochmal? ;)

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: Anfängerfragen zu Backupskript

Beitrag von Liffi » 07.06.2010 00:21:32

peschmae hat geschrieben:Und unison errät die Datenquelle aus was nochmal? ;)
Aus einer Glaskugel. Gerade das macht die Magie von Unison aus.

Antworten