Linux.rsync: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Zeile 47: Zeile 47:
   gid = nobody  ODER root?
   gid = nobody  ODER root?
   hosts allow = 192.168.115.94
   hosts allow = 192.168.115.94
rcsyncd start


Zugriffsprobleme auf Quelldateien: Werden nicht alle Dateien übertragen sollten die Zugriffsrechte, mit denen rsync die Dateien auf dem Quellsystem lesen kann erhöht werden.
Zugriffsprobleme auf Quelldateien: Werden nicht alle Dateien übertragen sollten die Zugriffsrechte, mit denen rsync die Dateien auf dem Quellsystem lesen kann erhöht werden.

Version vom 14. März 2008, 18:40 Uhr

rsync als Backup Hilfsmittel
rsync ist ein leistungsstarker Verzeichnis-Replikator. Ein rsync-Server stellt gewissen Verzeichnissbereiche im "Nur-Lesen" Modus zur Verfügung. Ein rsync-Client kann einen eigenen Verzeichnisbereich mit dem des Servers abgleichen. Am Ende des rsync-Prozesses sollten beide Verzeichnisbäume gleich sein (wenn der Server nicht ständig Änderungen macht). Der OrgaMon Server stellt im wesentlichen 2 Verzeichnisse zur Verfügung:

/etc/
# für die Gesamte Server konfiguration

/srv/
# ./fdb/ für firebird Datenbanken
# ./ftp/ für FTP Ablagen
# ./www/ für das ganze Onlineangebot
# ./smb/ für alle Samba Freigaben

Ein Client wird in einem gewissen Intervall per WOL aufgeweckt. Dieser macht per rsync eine Verzeichnisreplikation und schaltet sich danach wieder ab!

Vorbereitungen

  • am Quell-Server

rsync Dämon muss laufen

 rcrsyncd status

wenn nicht lässt sich die Konfiguration um die entsprechenden Runlevel erweitern. mit YaSt Runlevel 3 und 5 setzten und für den Moment aktivieren. Nun den Dämon konfigurieren:

chkconfig --add rsyncd

Nun geht es an den Umfang der Angebote die dieser Dienst machen darf

joe /etc/rsyncd.conf

Der Inhalt der Datei sollte folgendermassen aussehen.

gid = users
read only = true
use chroot = true
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
hosts allow = 192.168.115.0/255.255.255.0
  
[srv]
  path = /srv
  read only = yes
  list = yes
  uid = nobody  ODER root?
  gid = nobody  ODER root?
  hosts allow = 192.168.115.94


rcsyncd start

Zugriffsprobleme auf Quelldateien: Werden nicht alle Dateien übertragen sollten die Zugriffsrechte, mit denen rsync die Dateien auf dem Quellsystem lesen kann erhöht werden.

  uid = root
  gid = root
  • Einstellungen auf dem Backup-System

rsync einfach mal ohne Parameter eingeben! muss gehen! Wenn nicht "rsnyc" installieren

 rsync 

Oder sehe ich den rsync-Server?

 telnet <HostIP> 873    // oder
 rsync <HostName>: 

es muss das Wort RSYNC erscheinen, ansonsten hört dir niemand zu! Oder eine Firewall verhindert die Verbindung.

Backup-Ziel-Verzeichnis vorbereiten:

Ich wollte ein backup von "heute" und eines von "gestern" haben. Also habe im in meinem /backup-Pfad zwei Unterverzeichnise gemacht: (immer chmod 0777 nur so zur Sicherheit)

backup/0 und backup/1

hat man also eine Datei heute ausversehen gelöscht ist sie im anderen Pfad sicher noch vorhanden. Es ist dem Konzept der alternierenden Bänder üblich, bei der man Datensicherungen mit 3 Bändern immer alternierend durchführt 0,1,2,0,1,2 usw.

Datensicherungslauf automatisch mit cron starten

cron ist ein Dämon der zeitgesteuert Programme startet. Hierbei

Stelle sicher, dass cron als Dienst läuft (YaST2->System->runlevel editor)

jetzt noch /etc/crontab editieren, und folgenden Eintrag machen:

 #min    hour        daymo   month   daywk   usr   cmd
 0   9,12,15,18,22   *       *       *       root  /root/backup.sh

Datensicherungs Script backup.sh

das /root/backup.sh sollte so aussehen

 ------------------------------snip
 #!/bin/bash
 
 # 
 # Bestimmen hier, wieviele Backup-Sätze du bevorraten willst.
 # In meinem Fall "2", also heute und gestern, bei entsprechendem
 # Plattenplatz kann das aber auch 20 oder 30 sein!
 #
 ANZAHL_BAENDER=2
  
 #
 # Hier wird eine alsolute Tag-Nummer ermittelt. Mit Hilfe des Modulo-
 # Operator erhöht man die entsprechende "Band-Nummer", beginnen bei
 # Null (0).
 #
 BAND=$((($(date +%s)/86400)%$ANZAHL_BAENDER))
  
 #
 # mit dem touch ist es leicht m?ch zu sehen wann der rsync
 # zuletzt "0", "1", ... bearbeitet hat.  
 #
 touch /backup/$BAND
  
 # 
 # jetzt der rsync an sich bwlimit verhindert, dass und rsync die ganze Bandbreite des Netzes
 # wegnimmt.
 #
 rsync -av --delete --force --ignore-errors --bwlimit=200 192.168.115.92::srv/ /backup/$BAND 
  
 ------------------------------snap

kann man ja erst mal so per Hand aufrufen!

Autostart des ./etc/backup.sh

Auf dem Rechner, der automatisch durch WOL gestartet wird sollte das Backup Skript automatisch starten.

 #
 #
 #
 joe /etc/init.d/boot.local

 #
 # ganz unten Eintrag sicherstellen:
 #
 startproc /etc/backup.sh

ACHTUNG1: Links mitsichern

andere Verzeichnisse, die man via symbolischem Link einfach mitsichern will: DAS GEHT NICHT!!!

 ln -s /var/lib/mysql mysql

Besser ist es für diese Verzeichnisse wiederum eine weitere, eigene rsync-Freigabe anzulegen!

ACHTUNG: die Quelle nicht mit "*" angeben, dadurch verbleiben Verzeichnisse auf dem Replikat. die auf dem Original längst gelöscht sind. Ausserdem können dadurch mit einem Punkt beginnende Dateien nicht gesehen werden. Einfach die Root Verzeichnisse angeben.

ACHTUNG2: Umlaute

geht einfach nicht. Ev. erst ab Mai 2005: also rsync ev. selbst compileiren. landet bei mir im /usr/local/bin. Muss aber nach /usr/sbin als rsynd und nach /usr/bin nach rsync.

noch'n Script

#!/bin/bash
echo "OrgaMon Backup startet"; 
sleep 300

ANZAHL_BAENDER=1
BAND=$((($(date +%s)/86400)%$ANZAHL_BAENDER))
OPTIONS="-avK --delete --force --ignore-errors --copy-unsafe-links"

mkdir "/srv/smb/freigabe/"$BAND
chmod 777 "/srv/smb/freigabe/"$BAND
touch "/srv/smb/freigabe/"$BAND
#
# /srv
#
DEST=/srv/smb/freigabe/$BAND/srv
mkdir $DEST
chmod 777 $DEST
rsync $OPTIONS 192.168.115.90::srv/ $DEST
#
# /etc
#
DEST=/srv/smb/freigabe/$BAND/etc
mkdir $DEST
chmod 777 $DEST
rsync $OPTIONS 192.168.115.90::etc/ $DEST 
#
# Log!
#
php /srv/smb/mail/phpmailer/mail.php
#
# Halt!
#
sleep 30
ethtool -s eth0 wol g
halt


Mailen, mit Hilfer der php-Mailer-Class

Diese Mail-Benachrichtigung wird mit Hilfe des "phpmailers" verwirklicht!

http://phpmailer.sourceforge.net/


<?php

require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP(); // send via SMTP $mail->Host = "raib90"; // SMTP servers $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Username = "mail-af1"; // SMTP username $mail->Password = "ZQ21P1X8Z"; // SMTP password

$mail->From = "raib86@orgamon.de"; $mail->FromName = "Sicherungsserver"; $mail->AddAddress("andreas.filsinger@orgamon.com"); $mail->AddReplyTo("andreas.filsinger@orgamon.org","Information");

$mail->WordWrap = 50; // set word wrap

$mail->Subject = "-- rsync Lauf beendet --"; $mail->Body = round((((disk_free_space("/") / 1024) / 1024) / 1024)) . " Giga-Byte(s) noch frei!";

if(!$mail->Send()) {

echo "Message was not sent

"; echo "Mailer Error: " . $mail->ErrorInfo; exit; } echo "Message has been sent"; ?>