Thread zur Backup-FAQ

maceis schrieb:
Wärs da nicht einfacher die System crontab für alle Backups zu benutzen?
Dann braucht man sich um solche Detailfragen nicht zu kümmern.
Da hast du natürlich Recht. Allerdings muss man Standard-Users ohne Admin-Rechte zu den sudoers hinzufügen, damit sie mit sudo-Befehle ausführen dürfen.

Das würde dann irgendwie langsam anfangen, den Rahmen meiner Anleitung zu sprengen, aber ich beschreibe mal hier, wie das geht (für Lofgard, ich bin sicher, DU weisst, wie das geht ;)):

1. als Admin anmelden
2. Terminal starten
3. eingeben:
Code:
sudo vi /etc/sudoers
4. Taste "i" drücken
5. Unter dem Eintrag des Users "root" folgenden Eintrag einfügen:
Code:
<benutzer> ALL=(ALL) ALL
6. ESC drücken
7. :wq eingeben und mit Enter bestätigen

Danach darf der Benutzer <benutzer> (durch Kurznamen ersetzen) sudo-Befehle ausführen.

@Lofgard
Kann es sein, dass du versuchst, eine Datei auszuführen, die es gar nicht gibt? Du sagst, dass dein Script backup_Ordner heisst (zumindest hast du das mit chmod +x ausführbar machen können, denn keine Rückmeldung heisst, dass alles in Ordnung ist) -- also solltest du doch das ausführen:

./backup_Ordner

und nicht

./backup
 
Ja, ich habe die Schreibweise der Dateien überprüft. Die gleiche Datei, die ich ausführbar gemacht habe wird drei Sekunden später nicht mehr gefunden. Habe spaßeshalber auch neugestartet.

Habe es auch mittlerweile öfters probiert, immer das gleiche…

Die .txt Erwieterung nehme ich immer weg, sonst klappt auch chmod nicht.
Liegt es vielleicht an der Codierung des Textes? Muß dass Unicode sein?
 

Anhänge

  • Bild 1.png
    Bild 1.png
    2,4 KB · Aufrufe: 225
Zuletzt bearbeitet:
Backup auf Linux Server

Hallo,
erstmal vielen Dank für das ausführliche FAQ. Hier noch ein paar Fragen:

Ich habe auf einem alten PC (Athlon 600 MHz) mit Linux (SuSE 9.0) noch viel Platz und will ihnn als Backup Server für mein ibook nutzen.
rsync oder scp mit linux zu linux oder auch von linux zu mac ist für mich kein Problem, das Mac Filesystem handhabt alle unter Linux angelegten Dateien korrekt, aber von mac zu linux sehe ich Schwierigkeiten:

- nicht alle auf HSF+ erzeugten Dateien passen auf das Reiser FS der Linux Kiste (zu lange Dateinamen, zu große Dateien).
- was passiert mit den "resource forks" der "reinen" mac dateien (pdf und bilder können problemfrei kopiert werden)?

Ich habe folgendes probiert, um das Problem als nicht rsync-bezogen zu überprüfen:

1) direktes Kopieren von Verzeichnissen mit ssh / scp: Probleme bei Umlauten und Abbruch bei zu langen Dateinamen und zu großen Dateien (hatte ein riesiges tar gebaut mit 1,8 GB oder so).

2) mounten einer Samba Freigabe auf dem ibook als Volume: taugt gar nix, Umlautprobleme, erkennt Groß- / Kleinschreibung nicht und Abbruch bei zu langen Dateinamen ...

3) mounten einer Netatalk Freigabe als Volume: Kopieren klappt eigentlich super (Umlaute korrekt erkannt), aber Abbruch bei zu langen Dateinamen und zu großen Dateien ... Von früheren Versuchen (lange her, mit Mac OS 7 und 8 als Client am Linux Netatalk fileserver) weiss ich, dass auch die so kopierten Mac Dateien mit resource fork konsistent bleiben, solange man sie nicht mit Linux Werkzeugen anfasst.

Muss ich eine HFS+ formatierte Partition auf dem Linux Server einrichten? Geht das überhaupt ohne weiteres?
Oder muss ich aus der Linux Kiste eine Open-Darwin-x86-Kiste mit entsprechendem Filesystem machen (Hardwarevoraussetzungen?)?

Oder habt ihr andere Ideen?

 
Lofgard schrieb:
Ja, ich habe die Schreibweise der Dateien überprüft. Die gleiche Datei, die ich ausführbar gemacht habe wird drei Sekunden später nicht mehr gefunden. Habe spaßeshalber auch neugestartet.

Habe es auch mittlerweile öfters probiert, immer das gleiche…

Die .txt Erwieterung nehme ich immer weg, sonst klappt auch chmod nicht.
Liegt es vielleicht an der Codierung des Textes? Muß dass Unicode sein?
Also das ist mehr als dubios kopfkratz. Ich habe gerade mal deine Situation nachgestellt (normalerweise benutze ich VI für Scripts, an TextEdit bin ich nicht so gewohnt) und sogar das .txt dran gelassen (Codierung ist "Westeuropäisch - Mac OS Lateinisch"), also absolut Standard, aber da passiert rein gar nichts auffälliges. Das Script verschwindet beim chmod-en nicht (das geht auch mit .txt) und lässt sich problemlos ausführen.

Könntest du bitte mal folgendes ausführen und die Ausgabe posten (nachdem du dein Script auf dem Desktop gespeichert hast):

Code:
cd Desktop
ls -al
chmod +x backup_Ordner (oder wie dein Script auch heissen mag)
ls -al

Das wird zeigen, ob das Script tatsächlich gelöscht wird, oder der Hund woanders begraben ist.
 
Zuletzt bearbeitet:
sheep schrieb:
Kopiere einmal dein komplettes Script, so wie du es jetzt verwendest, hier hinein, da scheint mir etwas an den Pfaden nicht zu stimmen. Bei dir steht "Desktop/Support/AddressBook", das ist so aber nicht richtig, wenn du nicht selber an den System-Pfaden herumgeschraubt hast.

Danke für Deine Antwort. Hier das Skript, dass bei anderen Pfadennamen fast ohne Fehler läuft (s.o.):



#!/bin/sh

#Variablen
declare quelle="/Library/Application\ Support/AddressBook"
declare ziel="/Volumes/iMac/Library/Application\ Support/AddressBook"

#Synchronisation ausführen
/usr/bin/rsync -avE $quelle/ $ziel/
/usr/bin/rsync -avE $ziel/ $quelle/




Die Ordnernamen/Pfadangaben aus dem Skript werden offenbar falsch interpretiert, ausgeführt und dann in der Fehlermeldung auch entsprechend anders (falsch) als im Skript dargestellt. Ich hab aber keine Ahnung, wie dieses Problem mit den Ordnernamen & Leerzeichen zu beheben ist...
 
Zuletzt bearbeitet:
sheep schrieb:
Da hast du natürlich Recht. Allerdings muss man Standard-Users ohne Admin-Rechte zu den sudoers hinzufügen, damit sie mit sudo-Befehle ausführen dürfen.
...
Wenn man das macht, kann man den Benutzer gleich in die admin Gruppe stecken, denn dan darf er *alles*.
Ich würde es eher so machen, dass der admin Benutzer die Einträge in der crontab macht.

Wenn der Benutzer sudo-Rechte bekommen soll, würde ich diese auf das Kommando rsync einschränken, das wirft aber das Problem auf, dass der Benutzer die Skripte manuell mit sudo starten müsste.
 
@ruerueka

Du könntest einen Ordner auf deiner Linux Kiste freigeben (z.B. mit Samba oder NFS).
Dort könntest auf ein SPARSE Image (also ein mitwachsendes Image) anlegen.
Am iBook mountest Du das Image und schreibst da hinein die Daten (Eigentümer ignorieren darf im Info Fenster nicht aktiviert sein).

Das sollte eigentlich klappen.

---------------------

@TGY
versuchs mal so:

#Variablen
declare quelle="/Library/Application Support/AddressBook"
declare ziel="/Volumes/iMac/Library/Application Support/AddressBook"

#Synchronisation ausführen
/usr/bin/rsync -avE "$quelle"/ "$ziel"/
/usr/bin/rsync -avE "$ziel"/ "$quelle"/


Du kannst den Slash am Ende auch gleich in die Variable mit reinschreiben - dann wirds vielleicht etwas übersichtlicher.

HTH
 
Super FAQ!

Hallo!
Das ist ein Super FAQ! Einfach Klasse!
Nun ich habe noch eine Frage. Kannst du das evtl im Zusammenhang mit SSH beschreiben?

Greets balu
 
Zuletzt bearbeitet:
maceis schrieb:
Wenn man das macht, kann man den Benutzer gleich in die admin Gruppe stecken, denn dan darf er *alles*.
Ich würde es eher so machen, dass der admin Benutzer die Einträge in der crontab macht.

Wenn der Benutzer sudo-Rechte bekommen soll, würde ich diese auf das Kommando rsync einschränken, das wirft aber das Problem auf, dass der Benutzer die Skripte manuell mit sudo starten müsste.
Er darf doch aber nur dann alles, wenn er Befehle explizit mit sudo aufruft. Im Terminal braucht er also sein eigenes Passwort, um etwas zu machen, für das er keine Berechtigung besitzt. Und im Finder muss man sich als Benutzer mit Admin-Rechten identifizieren, um Änderungen am System, dem Programm-Verzeichnis etc. vorzunehmen. Ich dachte eigentlich, dass das sicherheitstechnisch kein Problem darstellt, weil z.B. ein Schädling ja das Passwort des Benutzers nicht kennt. Korrigiere mich bitte, wenn ich falsch liege.
 
Zuletzt bearbeitet:
balufreak schrieb:
Hallo!
Das ist ein Super FAQ! Einfach Klasse!
Nun ich habe noch eine Frage. Kannst du das evtl im Zusammenhang mit SSH beschreiben?

Greets balu
Danke :).

Mit SSH kenne ich mich leider nicht aus, da müsste ich zuerst selber recherchieren, um das noch einzubauen.

Ich weiss nur, dass rsync mittels der Option -e per SSH auf entfernte Rechner zugreifen kann, das sollte also grundsätzlich kein Problem sein. Vielleicht kann dich ja jemand anders beraten ;).
 
sheep schrieb:
Danke :).

Mit SSH kenne ich mich leider nicht aus, da müsste ich zuerst selber recherchieren, um das noch einzubauen.

Ich weiss nur, dass rsync mittels der Option -e per SSH auf entfernte Rechner zugreifen kann, das sollte also grundsätzlich kein Problem sein. Vielleicht kann dich ja jemand anders beraten ;).

Habe mal kurz nachgeforscht und etwas ganz einfaches gefunden.
Code:
rsync -navE -e ssh source user@host:target
-n steht für einen Trockenlauf.

werde es heute Abend mal ausprobieren. Mal schauen obs funktioniert.

Habe noch ein Punkt.
Mit dem Parameter -u kann man nur die neuen oder geänderten Daten kopieren. Ich weiss nicht ob du es auch erwähnt hast.
 
Zuletzt bearbeitet:
Der Parameter -E fasst meiner meinung nach die Parameter -p -o -g zusammen.
diese bedeuten:
Code:
 -p, --perms                 preserve permissions
 -o, --owner                 preserve owner (root only)
 -g, --group                 preserve group
Allenfalls gehören diese auch noch dazu:
Code:
 -D, --devices               preserve devices (root only)
 -t, --times                 preserve times
 
sheep schrieb:
Er darf doch aber nur dann alles, wenn er Befehle explizit mit sudo aufruft. Im Terminal braucht er also sein eigenes Passwort, um etwas zu machen, für das er keine Berechtigung besitzt.
...
Mit sudo kann er sich zum root machen.

Wenn Du dieser andere Benutzer bist, ist das kein Thema - in echten Mehrbenutzerumgebungen schon.

Im ersten Fall geht es aber auch ohne den Benutzer zu den sudoers hinzuzufügen und ohne Abmelden.
Angenommen "sheep" ist Dein Adminbenutzer und Du arbeitest gerade als "lamb", dann wechselst im Terminal mit "su sheep" in den Benutzeraccount von sheep und kannst "sudo" benutzen. Mit "^D" oder "exit" wirst du wieder zu "lamb", wenn Du fertig bist.
 
balufreak schrieb:
Der Parameter -E fasst meiner meinung nach die Parameter -p -o -g zusammen.
...
Nein!
man rsync:
Code:
...
       -E  --extended-attributes   copy extended attributes, resource forks
...
       -E, --extended-attributes
              Apple specific option  to  copy  extended  attributes,  resource
              forks,  and  ACLs.   Requires at least Mac OS X 10.4 or suitably
              patched rsync.
...
 
maceis schrieb:
Mit sudo kann er sich zum root machen.

Wenn Du dieser andere Benutzer bist, ist das kein Thema - in echten Mehrbenutzerumgebungen schon.

Im ersten Fall geht es aber auch ohne den Benutzer zu den sudoers hinzuzufügen und ohne Abmelden.
Angenommen "sheep" ist Dein Adminbenutzer und Du arbeitest gerade als "lamb", dann wechselst im Terminal mit "su sheep" in den Benutzeraccount von sheep und kannst "sudo" benutzen. Mit "^D" oder "exit" wirst du wieder zu "lamb", wenn Du fertig bist.
Da ist etwas Wahres dran, aber da ich hier keine echte Mehrbenutzerumgebung habe ... :)

Vielen Dank allerdings für den Hinweis mit "su sheep", das ist eine gute Sache! Ich kannte "su" (das wäre dann ausgeschrieben wohl "su root", da habe ich mir irgendwie gar nie drüber Gedanken gemacht) von Linux her und habe mich gerade vorhin gefragt, wie das mit OS X wohl gehen soll, wenn ich "root" nicht aktiviert habe.

@balufreak
Die Option -a ("Archive") macht u.a. das, was du möchtest. Es konserviert sämtliche Benutzerrechte, kopiert nur, was neu oder geändert ist u.v.m.

Siehe man rsync:
Code:
-a, --archive               archive mode, equivalent to -rlptgoD

Daher habe ich in meiner Anleitung auch -a benutzt.
 
Zuletzt bearbeitet:
rsync mit ssh

sheep schrieb:
Danke :).

Mit SSH kenne ich mich leider nicht aus, da müsste ich zuerst selber recherchieren, um das noch einzubauen.

Ich weiss nur, dass rsync mittels der Option -e per SSH auf entfernte Rechner zugreifen kann, das sollte also grundsätzlich kein Problem sein. Vielleicht kann dich ja jemand anders beraten ;).

Versuch es mal so:
rsync -e "ssh -p $PORT" $DIR/bin $user@$SERVER:$CLIENT_DIR

Du musst natürlich deine Werte einsetzen
 
sheep schrieb:
...
Ich kannte "su" (das wäre dann ausgeschrieben wohl "su root", da habe ich mir irgendwie gar nie drüber Gedanken gemacht) von Linux her und habe mich gerade vorhin gefragt, wie das mit OS X wohl gehen soll, wenn ich "root" nicht aktiviert habe.
...
Um eine rootshell zu benutzen muss man root nicht aktivieren.
Es genügt "sudo -s" (als admin Benutzer).
 
maceis schrieb:
Um eine rootshell zu benutzen muss man root nicht aktivieren.
Es genügt "sudo -s" (als admin Benutzer).
Was man in so einem Thread doch alles lernt :D. Ich benutze allerdings keinen Admin-User, sondern einen mit normalen Rechten, daher bevorzuge ich die o.g. Variante für Standard-User.
 
Guten Tag! Vielen Dank für die Antwort. ls -all gibt erstmal:

-rw-r--r-- 1 lofgard lofgard 512 Nov 10 17:35 mail
und nach chmod
-rwxr-xr-x 1 lofgard lofgard 512 Nov 10 17:35 mail


da scheint ziemlich wenig passiert zu sein. Als Codierung benutze ich auch die oben genannte und habe auch die Unicode Varianten ausprobiert. Auch habe ich mal die Textendungen nicht mitgespeichert oder auch manuell entfernt. Immer das gleiche. Die Datei ist übrigens nach wie vor auf dem Desktop zu sehen und hat sich laut Finder in eine ausführbare Unix-Datei verwandelt. (Deswegen hattte ich auch gedacht, die Fehlermeldung von oben könnte sich auf die Pfade in der Datei beziehen und habe sie kontrolliert).

Das einfachste ist wohl, ich nehme auch mal vi. Habe jetzt nur das gefunden: http://macvim.org/OSX/index.php Eine suche im Internet oder einschlägigen Foren nach vi ist natürlich witzig (nur übertroffen von einer Suche nacht Texteditor).
 
Zuletzt bearbeitet von einem Moderator:
Lofgard schrieb:
da scheint ziemlich wenig passiert zu sein
Aber genau das, was passieren sollte ;). Das "x" am Ende der Berechtigungen zeigt an, dass die Datei nun ausführbar ist -- und offenbar auch noch immer vorhanden.

maceis hat dir übrigens weiter oben einen Tipp gegeben, was du korrigieren musst.
 
Zurück
Oben Unten