This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
interessen:computer:fileserver [2014/02/25 11:31] tomtom |
— (current) | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Fileserver ====== | ||
| - | Als Fileserver nutze ich hier meinen Hauptserver mit folgenden Services | ||
| - | * Glusterfs | ||
| - | * NFS | ||
| - | * rsync | ||
| - | |||
| - | ===== GlusterFS ===== | ||
| - | |||
| - | Den Glusterfs-Service habe ich gmäss Anleitung(en) aufgesetzt. Der Server geht unter Ubuntu (server) auch ganz leicht, aber ich habe trotzdem eine Weile gebraucht, um den Client richtig zu konfigurieren. | ||
| - | Bei allen Anleitungen soll man sich nach der Installation des Server einfach per | ||
| - | < | ||
| - | mit der Freigabe verbinden. | ||
| - | Der Befehl wurde auch ohne Fehler ausgeführt - der Ordner war aber immer leer und auch neue Dateien tauchten nicht im Server auf. | ||
| - | Nach einer Weile der Recherche im Netz hab ich dann was anderes probiert. | ||
| - | Erst hab ich einen Ordner angelegt | ||
| - | < | ||
| - | danach in diesen Ordner die Volumedefinitionen aus dem **Server** aus | ||
| - | < | ||
| - | in den Ordner | ||
| - | < | ||
| - | auf dem **Client** kopiert. | ||
| - | Danach war es relativ simpel in die Datei | ||
| - | < | ||
| - | die Zeile | ||
| - | / | ||
| - | einzufügen. | ||
| - | Nach einem | ||
| - | < | ||
| - | waren dann die Dateien zu sehen und auch veränderbar. | ||
| - | Endlich funktionierte es! :-D | ||
| - | |||
| - | ===== NFS ===== | ||
| - | |||
| - | |||
| - | NFS ist einfach via Anleitung aufgesetzt worden. Dazu gibt es die diversen Anleitungen im Internet, so dass ich hier nicht näher darauf eingehe. | ||
| - | |||
| - | |||
| - | ===== rsync ===== | ||
| - | |||
| - | RSYNC hat bei mir die Aufgabe meinen Firmenlaptop zu sichern. Dazu habe ich auf diesem ein Script zu laufen, das in regelmässigen Abständen nachsieht, ob der Backup-Server bzw. dessen Freigabe erreichbar ist und wenn das bestätigt ist werden vorher festgelegte Ordner synchronisiert. | ||
| - | * [[http:// | ||
| - | |||
| - | ==== ServerKonfiguration ==== | ||
| - | |||
| - | Nach der Installation von rsync ist unter Ubuntu erstmal nur der Clientdienst aktiv. Den Serverdienst muss man erst einrichten und dann als Service definieren. | ||
| - | Zu erst wird die Datei | ||
| - | / | ||
| - | mit folgendem Inhalt angelegt | ||
| - | < | ||
| - | use chroot = true | ||
| - | strict modes = false | ||
| - | hosts allow = < | ||
| - | uid = < | ||
| - | gid = users | ||
| - | max connections = 5 | ||
| - | syslog facility = local5 | ||
| - | pid file = / | ||
| - | | ||
| - | [< | ||
| - | comment = backup folder on < | ||
| - | path = / | ||
| - | read only = no | ||
| - | list = yes | ||
| - | auth users = <user at source> | ||
| - | secrets file = / | ||
| - | | ||
| - | [< | ||
| - | comment = Documents folder on < | ||
| - | path = / | ||
| - | read only = no | ||
| - | list = yes | ||
| - | auth users = <user at share> | ||
| - | secrets file = / | ||
| - | |||
| - | In der Datei | ||
| - | / | ||
| - | stehen nur die User mit den dazugehörigen Passwörtern drinn. Ich wollte die nicht so unbedingt einfach in die Konfig hämmern. Mann sollte ja wenigstens den Anschein von Sicherheit wahren. :-D | ||
| - | |||
| - | Danach hab ich noch mit | ||
| - | apt-get install xinetd | ||
| - | den xinetd Startservice installiert. | ||
| - | In dem dazugehörigen Ordner unter | ||
| - | / | ||
| - | muss dann noch eine Datei rsync angelegt werden. Die sieht bei mir so aus | ||
| - | < | ||
| - | # default: off | ||
| - | # description: | ||
| - | # allows crc checksumming etc. | ||
| - | service rsync | ||
| - | { | ||
| - | disable = no | ||
| - | flags = IPv6 | ||
| - | socket_type | ||
| - | wait = no | ||
| - | user = root | ||
| - | server | ||
| - | server_args | ||
| - | log_on_failure | ||
| - | } | ||
| - | Nach einem | ||
| - | < | ||
| - | ist der rsync-Service dann erreichbar. | ||
| - | |||
| - | ==== Clientkonfiguration ==== | ||
| - | |||
| - | Auf dem Client hab ich ein Backup-Script laufen in dem ich einer seits den/ die Server angeben kann auf die ich sichern will und anderer seits die Verzeichnisse angebe die ich sichern will. | ||
| - | Das Script wird dann über einen CRON-Job in regelmässigen Abständen aufgerufen. | ||
| - | |||
| - | < | ||
| - | #!/bin/bash | ||
| - | ## insert all directories to sync/ backup ## | ||
| - | directories=( < | ||
| - | workdir=< | ||
| - | ## define target | ||
| - | user=< | ||
| - | server=(< | ||
| - | # view / | ||
| - | targetshare=< | ||
| - | ## generate log-file-names | ||
| - | tstemp=`date +%Y%m%d%H` | ||
| - | tstemp_old=`date +%Y%m%d -d yesterday` | ||
| - | logfile=$workdir/ | ||
| - | logcheckfile=$workdir/ | ||
| - | # backup log | ||
| - | logtimefile=$workdir/ | ||
| - | logtimefiletemp=$logtimefile.temp | ||
| - | ## clean old log from messages and let all informations since the last running backup in file | ||
| - | clean_log() | ||
| - | { | ||
| - | i=1 | ||
| - | while ((i <= 100)) | ||
| - | do | ||
| - | if (tail -$i $logtimefile|grep done) | ||
| - | then | ||
| - | tail -$i $logtimefile > $logtimefiletemp | ||
| - | cat $logtimefiletemp > $logtimefile | ||
| - | rm $logtimefiletemp | ||
| - | break | ||
| - | fi | ||
| - | i=$(( $i + 1 )) | ||
| - | done | ||
| - | return 0 | ||
| - | } | ||
| - | ## generate display message for graphical desktops and write backup log | ||
| - | errormsg() | ||
| - | { | ||
| - | errorcount=0 | ||
| - | ## if differrents between rsync run and rsync check exists, error message will generate | ||
| - | for i in `cat $logcheckfile | grep '< | ||
| - | do | ||
| - | if (cat $logfile | grep $i) | ||
| - | then | ||
| - | ((errorcount++)) | ||
| - | fi | ||
| - | done | ||
| - | if (($errorcount > 0)) | ||
| - | then | ||
| - | ## enable only if script run at system with graphical desktop ## | ||
| - | # | ||
| - | message=' | ||
| - | else | ||
| - | ## enable only if script run at system with graphical desktop ## | ||
| - | # | ||
| - | rm $logcheckfile | ||
| - | rm $logfile | ||
| - | message=' | ||
| - | if (ls $workdir| grep $tstemp_old) | ||
| - | then | ||
| - | for i in `ls $workdir| grep $tstemp_old` | ||
| - | do | ||
| - | rm $i | ||
| - | done | ||
| - | fi | ||
| - | fi | ||
| - | message=`date`" | ||
| - | echo $message >> $logtimefile | ||
| - | return 0 | ||
| - | } | ||
| - | ## use for rsyncd at target server(s) ## | ||
| - | # check if job running from other schedule | ||
| - | if(! ps -ef | grep rsync | grep $workdir ) | ||
| - | then | ||
| - | for target in " | ||
| - | do | ||
| - | # check if host available | ||
| - | if( ping -c 1 $target > /dev/null ) | ||
| - | then | ||
| - | date >> $logfile | ||
| - | date >> $logcheckfile | ||
| - | for dir in " | ||
| - | do | ||
| - | echo $dir >> $logfile | ||
| - | ## synchronize the directory | ||
| - | rsync -vah --partial $workdir/ | ||
| - | echo $dir >> $logcheckfile | ||
| - | ## check if directories synchron (it's a dry run with renerate a check file) | ||
| - | rsync -vahn --partial $workdir/ | ||
| - | done | ||
| - | date >> $logfile | ||
| - | | ||
| - | | ||
| - | ## transfer the backup-log | ||
| - | rsync -vzh --partial $logtimefile $user@$target:: | ||
| - | else | ||
| - | | ||
| - | echo $message >> $logtimefile | ||
| - | fi | ||
| - | done | ||
| - | fi | ||
| - | exit | ||
| - | |||
| - | sfjspdfjsdkal | ||