ubuntuusers.de

Skripte/Backup_mit_RSYNC

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Skripte/Backup_mit_RSYNC.

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Wohnort: 127.0.0.1

Naja, sudo eben.

Da ich eigentlich gar kein Ubuntu nutze und das Script für Debian geschrieben habe, habe ich auch im Wiki nicht auf die sudo-Problematik verwiesen. Wer Lust hat kann es ja noch einbauen.

omike23

Anmeldungsdatum:
23. Juni 2009

Beiträge: 8

uname schrieb:

Naja, sudo eben.

Da ich eigentlich gar kein Ubuntu nutze und das Script für Debian geschrieben habe, habe ich auch im Wiki nicht auf die sudo-Problematik verwiesen. Wer Lust hat kann es ja noch einbauen.

Ich bin, dank der freundlichen Hinweise, bei dem Problem einen Schritt weiter (Stichwort: cronjob) und werde den Artikel dann um meine Erkenntnisse erweitern. Dazu wollte ich aber erst die nächsten Tage abwarten, ob alles so läuft, wie ich es mir vorstelle.

MrRoxy

Avatar von MrRoxy

Anmeldungsdatum:
11. August 2009

Beiträge: 13

Hallo Ubuntuusers,

habe das Script benutzt und leider festgestellt dass es mit ssh nicht funktioniert.

Sollte das ein Push oder Pull sein. Habe es umgeschrieben als Push.

Soll ich es einfach im wiki ersetzen?

Roxy

mniess

(Themenstarter)

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 366

Wohnort: Hamburg

MrRoxy schrieb:

Sollte das ein Push oder Pull sein. Habe es umgeschrieben als Push.

Was meinst du? Das Skript funktioniert exakt so wie im Wiki beschrieben bei allen Installationen bei denen ich es getestet habe. Selbst unter Windows mit Cygwin. Bitte erklaere was du meinst, bevor du da im Wiki was aenderst, was dann bei keinem mehr funktioniert.

Gruss Matthias

MrRoxy

Avatar von MrRoxy

Anmeldungsdatum:
11. August 2009

Beiträge: 13

Ich möchte meine home Ordner auf meinen NAS über ssh kopieren (also Pushen)

Meine Variablen:

SOURCES="/home/"
TARGET="/nas_dir_backup_target/"
LOGFILE="/root/backup.log"
EXPIREDAYS=0
RSYNC="--delete"

SSHUSER="username"
SSHHOST="192.168.1.1"
SSHPORT=22

script ausgabe:

1
/usr/bin/rsync -e "ssh -p 22 -l admin" -av 192.168.1.200:/home/ --delete --link-dest=/nas_dir_backup_target/090815/home/ /nas_dir_backup_target/090815/home

Natürlich ist hier falsch dass bei dem sourcedir (192.168.1.200:/home/) der host steht, stattdessen sollte er bei link-dest und danach auch stehen.

Habe es so umgeschrieben das dieser Befehl ausgeführt wird:

1
/usr/bin/rsync -e "ssh -p 22 -l admin" -av /home/ --delete --link-dest=192.168.1.200:/nas_dir_backup_target/090815/home/ 192.168.1.200:/nas_dir_backup_target/090815/home/ 

mniess

(Themenstarter)

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 366

Wohnort: Hamburg

EDIT: Da warst du schneller als ich.. ja.. so hatte ich es jetzt auch verstanden 😉

Also ich habe mir gerade nochmal Gedanken drueber gemacht. Wenn du mit "Pull" meinst, dass die Daten von remote auf den lokalen Rechner gezogen werden und mit Push, dass die Daten von einem lokalen Rechner auf einen Remote-Rechner kopiert werden, dann ist es definitiv Pull. Das ganze funktioniert (per SSH) natuerlich nur, wenn man Schluessel-Authentifizierung arbeitet und auf dem ausfuehrenden Rechner einen ssh-agent laufen hat.

rsync funktionier natuerlich in beide Richtungen, das Skript ist aber auf eine Richtung ausgelegt (naemlich Pull).

MrRoxy schrieb:

Soll ich es einfach im wiki ersetzen?

Nein, bitte nicht. Sinnvoller waere es doch, wenn das Skript beide Richtungen direkt unterstuetzt und man die Richtung per Parameter setzen kann. Wenn du Lust hast kannst du ja mal was entspr. hier im Forum schreiben.. wenn nicht setze ich mich die Tage ran und schreib mal was zusammen. Aber einfach die Richtung des jetzigen Skripts zu aendern wuerde glaube ich die meisten eher verwirren.

MrRoxy

Avatar von MrRoxy

Anmeldungsdatum:
11. August 2009

Beiträge: 13

Danke werde es umschreiben 😬

The_ac

Anmeldungsdatum:
30. April 2009

Beiträge: 1

Hallo zusammen,

MrRoxy schrieb:

Ich möchte meine home Ordner auf meinen NAS über ssh kopieren (also Pushen)

Habe es so umgeschrieben das dieser Befehl ausgeführt wird:

1
/usr/bin/rsync -e "ssh -p 22 -l admin" -av /home/ --delete --link-dest=192.168.1.200:/nas_dir_backup_target/090815/home/ 192.168.1.200:/nas_dir_backup_target/090815/home/ 

MrRoxy: hat das so bei dir funktioniert?

Ich habe da grade ca 2 Stunden rumgebastelt um folgendes festzustellen: bei --link-dest darf der Server nicht mehr angegeben werden!

Das ganze muss also (zumindest hier bei mir) so aussehen:

1
/usr/bin/rsync -e "ssh -p 22 -l admin" -av /home/ --delete --link-dest=/nas_dir_backup_target/090815/home/ 192.168.1.200:/nas_dir_backup_target/090815/home/ 

gruss, AC

unggnu

Anmeldungsdatum:
5. September 2007

Beiträge: 241

Der Punkt über Hardlinks und NTFS-3g ist nicht ganz richtig. Spätestens seit Karmic funktionieren Hardlinks mit NTFS-3g. In Hardy ging es nicht, zumindest nicht mit Back In Time, also wird es wohl in der Zwischenzeit irgendwann integriert worden sein.

Interessanterweise konnte ich in Hardy aber mit ln auch einen Hardlink erstellen, es ist aber möglich, dass das dann als einfache Kopie gespeichert wurde.

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Wohnort: 127.0.0.1

Sollte das ein Push oder Pull sein.

Da ich das Script mehr oder weniger geschrieben habe, hier meine Meinung.

Das Script ist ein Pull-Script. Das liegt darin begründet, dass es inkrementell (Hardlinks) arbeiten soll. Bei Push wäre es nicht möglich bzw. mir ist damals keine Lösung dazu eingefallen.

pjw1965

Anmeldungsdatum:
23. März 2009

Beiträge: 47

uname schrieb:

Sollte das ein Push oder Pull sein.

Da ich das Script mehr oder weniger geschrieben habe, hier meine Meinung.

Das Script ist ein Pull-Script. Das liegt darin begründet, dass es inkrementell (Hardlinks) arbeiten soll. Bei Push wäre es nicht möglich bzw. mir ist damals keine Lösung dazu eingefallen.

Was mir persönlich an Pull nicht gefällt ist, dass ja eigentlich nur root auf dem externen Rechner (von wo ich ein Backup machen will) genügen Rechte hat. Da muss ich nicht nur das Script als root ausführen (finde ich ok), sondern der SSH-USER muss auch root sein (nicht so gut für die Sicherheit, ich habe root-login gesperrt).

Hat jemand eine funktionierende Push-Version geschrieben? Bitte hier veröffentlichen. Danke.

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Wohnort: 127.0.0.1

nicht so gut für die Sicherheit, ich habe root-login gesperrt

Ich erlaube den root-Zugriff per SSH natürlich auch nur per SSH-Key. Und wer will kann natürlich den SSH-Key noch mit Passphrase absichern. Zudem kann man den SSH-Port von 22 umlegen, den SSH-Zugriff auf gewisse IPs beschränken bzw. den root-SSH-Key nur für gewisse Befehle erlauben.

pjw1965

Anmeldungsdatum:
23. März 2009

Beiträge: 47

Also mit einem User per Push schreiben, ist auch nicht das Gelbe vom Ei, dann gehen alle file-benutzer-daten verloren und alle files gehören dem user (statt root, adm, ...).

Ich erlaube den root-Zugriff per SSH natürlich auch nur per SSH-Key. Und wer will kann natürlich den SSH-Key noch mit Passphrase absichern. Zudem kann man den SSH-Port von 22 umlegen, den SSH-Zugriff auf gewisse IPs beschränken bzw. den root-SSH-Key nur für gewisse Befehle erlauben.

Mein Problem:

Der Computer ist am Netz und man muss auf den Benutzer von aussen via Passwort zugreifen können. SSH ist nicht an Port 22, aber wie mache ich es, dass root nur vom localen Netz zugreifen darf oder dass man zwar als user mit einem Passwort einloggen darf, als root aber nur mit SSH-Key? Ich verwende auch SSH-Keys, aber manchmal brauche ich den Zugang via Passwort, da ich nicht immer den Key mitnehmen möchte und auch mal an einem fremden Computer bin. Das backup muss natürlich automatisch ablaufen, das heisst ohne Benutzer, weshalb die Passphrase nicht in Frage kommt.

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Wohnort: 127.0.0.1

Der Computer ist am Netz und man muss auf den Benutzer von aussen via Passwort zugreifen können. SSH ist nicht an Port 22, aber wie mache ich es, dass root nur vom localen Netz zugreifen darf oder dass man zwar als user mit einem Passwort einloggen darf, als root aber nur mit SSH-Key?

in /etc/ssh/sshd_config:

PermitRootLogin yes

ändern in

PermitRootLogin without-password 

Im übrigen kannst du über den normalen Benutzer und sudo immer root werden. Hier macht es evtl. noch Sinn das Anmelden nur einem Benutzer zu erlauben, der nicht in der admin-Gruppe ist.

pjw1965

Anmeldungsdatum:
23. März 2009

Beiträge: 47

PermitRootLogin without-password 

Danke, das ist die Lösung für mich.

Wenn ich jetzt alles richtig gemacht habe wird jeder Client täglich (falls eingestellt) auf den Server gesichert. Die nächsten Tage werden es zeigen.

Habe übrigens das Script angepasst, dass die Optionen per Config-File übergeben werden..

1
test "$1" != "" && test -f "$1" && . "$1"

.. und dass das 1.Backup im Monat nie gelöscht wird (heisst dann backup$TODAY).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
if [ -e $TARGET ]; then
 LASTBACKUP=`/bin/ls -1dt $TARGET[[:digit:]]* ${TARGET}backup[[:digit:]]* 2>> $LOGFILE | /usr/bin/head -1`
fi

TODAY=$(/bin/date +%y%m%d)
test $(find ${TARGET} -maxdepth 1 -name backup$(/bin/date +%y%m)* | wc -l) -eq 0 && 
  TODAY="backup$TODAY"
EXPIRED=`/usr/bin/find $TARGET[[:digit:]]* -maxdepth 0 -mtime +$EXPIREDAYS  2>> $LOGFILE`

echo "Last Backup: $LASTBACKUP" >>  $LOGFILE
echo "Today Backup to: $TODAY" >>  $LOGFILE
echo "Expired are: $EXPIRED" >>  $LOGFILE