Synchronistion Over Network with RSYNC

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 13.12.2010 10:49:15

hallo männers,

ich bräuchte ein script was mit rsync übers netzwerk daten abgleicht...
die sufu war leider nicht speziell genug für meine bedürfnisse!

ich würde gerne Platz A mit Platz B syncen

Platz A - Raid (192.168.100.1 - 24TB) ist der Server auf dem alles liegt
Platz B hat zwei raids (RAID1 = 12TB) und (RAID2 = 12TB)
Am besten wäre es wenn das script nur die daten RECURSIVE abgleicht von den ordnern die es in Platz B in den beiden raids findet!
(am betsen über Nacht, wenn niemand das netzwerk braucht)

Also sozusagen sollte das script nur die ordner syncen die es in der Destination findet.

Wenn also ein Ordner von A auf B fehlen würde, würde das Project nicht gesynced werden ;)

Habe mir rsyc angeguckt ... nur bin ich ziemlich ratlos wie ich es am besten erstellen könnte mit meinen Vorgaben...
(ich habe alle passwörter für die maschienen)

Wäre super wenn mir da jemand unter die Arme greifen könnte

Dankend verbliebe ich und freue mich auf eure ideen

Benutzeravatar
Six
Beiträge: 8069
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Re: Synchronistion Over Network with RSYNC

Beitrag von Six » 13.12.2010 15:01:22

Geht es hier um Replikation oder um Backup?
Be seeing you!

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 14.12.2010 09:22:35

guten morgen,

recursive file synchronisation trifft es besser :)

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 12:51:27

also kurz gesagt soll ein script in einen ordner destinationordner schauen, welche projectordner schon da sind und die aus der source recursive synchronisieren mit rsync.
kann mir jemand helfen?

ein anfang hätte ich schonmal....das macht ein backup vom source to destination.....bräuchte das etwas modifiziert wie gesagt: er sollte erst in die destination schaun, um zu wissen welche ordner er synchronisieren soll - nur die die auch in der destination vorliegen!

Code: Alles auswählen

#!/bin/sh

MAILADDR=david@xyz.de
HOSTNAME=mothership
BACKUPDIR=directory_you_want_to_backup
EXCLUDES=example_exclude_file
ARCHIVEROOT=directory_to_backup_to


# directory which holds our current datastore
CURRENT=main

# directory which we save incremental changes to
INCREMENTDIR=`date +%Y-%m-%d`

# options to pass to rsync
OPTIONS="--force --ignore-errors --delete --delete-excluded \
 --exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$INCREMENTDIR -av"

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# make sure our backup tree exists
install -d $ARCHIVEROOT/$CURRENT

# our actual rsyncing function
do_rsync()
{
   rsync $OPTIONS $BACKUPDIR $ARCHIVEROOT/$CURRENT
}

# our post rsync accounting function
do_accounting()
{
   echo "Backup Accounting for Day $INCREMENTDIR on $HOSTNAME:">/tmp/rsync_script_tmpfile
   echo >> /tmp/rsync_script_tmpfile
   echo "################################################">>/tmp/rsync_script_tmpfile
   du -s $ARCHIVEROOT/* >> /tmp/rsync_script_tmpfile
   echo "Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile"
   Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile
   echo "rm /tmp/rsync_script_tmpfile"
   rm /tmp/rsync_script_tmpfile
}

# some error handling and/or run our backup and accounting
if [ -f $EXCLUDES ]; then
	if [ -d $BACKUPDIR ]; then
		# now the actual transfer
		do_rsync && do_accounting
	else
		echo "cant find $BACKUPDIR"; exit
	fi
	else
		echo "cant find $EXCLUDES"; exit
fi
danke im vorraus für eure ganze müh

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Synchronistion Over Network with RSYNC

Beitrag von syssi » 03.01.2011 13:31:34

Code: Alles auswählen

PROJECTS=$(ssh user@server2 ls /destination)
if [ $? -eq 0 ];
then
  rsync -avzP /source/$PROJECTS user@server2:/destination
fi

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 13:47:01

das sieht schonmal gut aus syssi ;)
erstmal dafür gedankt!!!

kannst mir vielleicht noch erklären was es genau macht und an welche stelle du es setzen würdest?

warum ssh?
das destination und source hat zwar eine user und passwortabfrage aber die kann ganz normal via tcp/ip (nfs oder smb) gewählt werden oder ist das unsinn was ich gerade erzähle und es macht gar nix zur sache ob das via ssh passiert?!
also eigentlich wollt ich es über nfs realisieren ;)

dankend verbleibe ich

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 14:06:31

ok ich sehe das rsync über nfs läuft, aber warum dieser schritt mit ssh?
da müsste mich jemand aufklären und es wäre super nett, wenn es gleich jemand richtig einbaut....bin etwas überfordert im moment :)
wäre ja praktisch, wegen den integ. logs im script und weiteres....
(hilft sicherlich einigen so ein spez. script)

DANKEEEE

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Synchronistion Over Network with RSYNC

Beitrag von syssi » 03.01.2011 14:15:10

Oh, ich dachte dir waere klar, was rsync genau ist und wie es funktioniert. Also erstmal: Rsync bringt in der Regel ein Ziel auf den Stand der Quelle. Ob man Rsync auf dem Rechner, wo die Quelle liegt ausfuehrt oder auf dem Rechner, wo das Ziel liegt ausfuehrt ist erstmal egal. Hauptsache man dreht die Parameter hinter dem rsync-Aufruf korrekt:

Code: Alles auswählen

# wir befinden uns auf rechner1
rsync -avzP /media/test root@server2:/media/test
Mit der Zeile synchronisiert man den Ordner "rechner1:/media/test" nach "rechner2:/media/test". Uebertragen wird ueber SSH (SCP). Ausloeser dafuer ist der simple Doppelpunkt. Moechtest du zwei Verzeichnisse per rsync synchronisieren, wovon ein Verzeichnis ein NFS-Mount ist, dann sieht das so aus:

Code: Alles auswählen

rsync -avzP /media/test /mnt/nfs/test
Es ist nun vergleichbar mit einem einfachen "cp -a", wobei nur die Differenzen uebertragen werden. Wenn du sagst, dass dein Remote-System, wohin die Daten gesynct werden sollen per NFS angebunden sind, dann macht das die Sache etwas einfacher und auch verstaendlicher:

Code: Alles auswählen

PROJECTS=$(ls /mnt/nfs/projects)
rsync -avzP $PROJECTS /mnt/nfs/projects
In die Variable "PROJECTS" wird die Ausgabe von "ls /mnt/nfs/projects" geschrieben. Angenommen im Ordner /mnt/nfs/projects liegen drei Projekte, dann wuerde ein "echo $PROJECTS" folgenden String zurueck liefern "project1 project2 project3". Setzen wir die Variable PROJECTS als Rsync-Parameter, dann kommt es folgendem Aufruf gleich:

Code: Alles auswählen

rsync -avzP proejct1 project2 project3 /mnt/nfs/projects
Gruss syssi

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 14:27:20

Angenommen im Ordner /mnt/nfs/projects liegen drei Projekte, dann wuerde ein "echo $PROJECTS" folgenden String zurueck liefern "project1 project2 project3"


ok ich versuche zu verstehen....
wir sind auf dem quellsystem!

das ist aber dann nicht ganz korrekt...dort liegen ja alle projecte und das raid wo es hinsoll (destination) ist nur halb so groß
also sollte er ja eigentlich nur die ordner synchen die ich erstelle in der destination oder versteh ich etwas falsch!?
du schreibst ja wenn es drei ordner beinhaltet, synced er die drei auch ;)

sorry hab wenig erfahrung ;)

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Synchronistion Over Network with RSYNC

Beitrag von syssi » 03.01.2011 14:34:55

Okay, dann war ich nicht deutlich genug. Wir machen es mal ein wenig anschaulicher:

Code: Alles auswählen

rechner1 (24tb)
 - /data/project1
 - /data/project2
 - /data/project3
 - /data/project4
Dann haben wir deinen zweiten Rechner:

Code: Alles auswählen

rechner2 (2x 12tb)
 - /mnt/raid1
 - /mnt/raid2
Nun gehen wir davon aus, dass rechner2 seine beiden RAIDs per NFS exportiert. Wir besitzen also zusaetzlich auf rechner1 die Mountpoints:

Code: Alles auswählen

rechner1: 
 - /mnt/rechner2-raid1
 - /mnt/rechner2-raid2
Im Verzeichnis /mnt/rechner2-raid1 finden sich nur die Projekte "project1" und "project2". Nun starten wir auf rechner1 unseren Zweizeiler:

Code: Alles auswählen

PROJECTS=$(ls /mnt/rechner2-raid1)
Wir haben eine Liste angefertigt, mit den Projekten, die auf dem kleinen RAID-Verbund liegen. Also die Teilmenge, die wir syncen wollen.

Code: Alles auswählen

cd /data
rsync $PROJECTS /mnt/rechner2-raid1
Nun syncen wir alle in der Liste befindlichen Projekte (naemlich "project1" und "project2") nach /mnt/rechner2-raid1. Weil es sich um einen NFS-Mount handelt schreiben wir also die Daten von rechner1 auf rechner2 und haben nur unsere Teilmenge synchronisiert.

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 14:44:47

also würde das script so aussehen ja: ???

Code: Alles auswählen

#!/bin/sh

MAILADDR=david@xyz.de
HOSTNAME=mothership
BACKUPDIR=directory_you_want_to_backup
EXCLUDES=example_exclude_file
ARCHIVEROOT=directory_to_backup_to


# directory which holds our current datastore
CURRENT=main

# directory which we save incremental changes to
INCREMENTDIR=`date +%Y-%m-%d`

# options to pass to rsync
OPTIONS="--force --ignore-errors --delete --delete-excluded \
 --exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$INCREMENTDIR -av"

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# make sure our backup tree exists
install -d $ARCHIVEROOT/$CURRENT

# our actual rsyncing function
do_rsync()
{
####vorgabe######rsync $OPTIONS $BACKUPDIR $ARCHIVEROOT/$CURRENT



#PROJECTS=$(ls /mnt/externer_quell_all_projects_server/nfs/projects)
#rsync -avzP $PROJECTS /mnt/unserer_lokaler_backup_server/raid1-2/nfs/projects

PROJECTS=$(ls $BACKUPDIR)
rsync -avzP $PROJECTS $ARCHIVEROOT/$CURRENT





}

# our post rsync accounting function
do_accounting()
{
   echo "Backup Accounting for Day $INCREMENTDIR on $HOSTNAME:">/tmp/rsync_script_tmpfile
   echo >> /tmp/rsync_script_tmpfile
   echo "################################################">>/tmp/rsync_script_tmpfile
   du -s $ARCHIVEROOT/* >> /tmp/rsync_script_tmpfile
   echo "Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile"
   Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile
   echo "rm /tmp/rsync_script_tmpfile"
   rm /tmp/rsync_script_tmpfile
}

# some error handling and/or run our backup and accounting
if [ -f $EXCLUDES ]; then
	if [ -d $BACKUPDIR ]; then
		# now the actual transfer
		do_rsync && do_accounting
	else
		echo "cant find $BACKUPDIR"; exit
	fi
	else
		echo "cant find $EXCLUDES"; exit
fi
also man müsste dann natürlich die pfade anpassen, hab sie erstmal als kommentar etwas genauer beschrieben, damit jemand sagen kann, obs überhaupt so stimmt ;)


DANKEND
Zuletzt geändert von OnkelDave am 03.01.2011 14:58:11, insgesamt 1-mal geändert.

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Synchronistion Over Network with RSYNC

Beitrag von syssi » 03.01.2011 14:47:38

Am Anfang des Themas sagtest du, dass du nur synchronisieren willst und keine inkrementellen Backups. Wieso bindest du dir dann dieses Skript ans Bein, von welchem du nur die Haelfte verstehst?

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 14:55:59

naja das script sieht meiner meinung nach, ganz nützlich aus...

die log section gefällt mir sehr gut ;)

Ne ehrlich sowas hab ich gesagt???
ne ich wollte schon, eine incrementenelle synchonisation machen.....also kurz ein backup....aber letzteres ist auslegungssache ;)
ein incr. backup script was über nacht den server synct!

siehst du den grobe fehler im script?
wär wie gesagt ultra wenn es jemand dort probiert einzubauen ;)

brauch halt die logging geschichte, möglichst ausführlich, außerdem ist es so schön in functionen unterteilt, das doch sehr übersichtlich....
hab ehrlich gesagt nur probleme mit meinen wünschen....:)

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Synchronistion Over Network with RSYNC

Beitrag von syssi » 03.01.2011 15:09:17

Der Mittelteil sollte so aussehen:

Code: Alles auswählen

PROJECTS=$(ls $ARCHIVEROOT/$CURRENT)
cd $BACKUPDIR
rsync -avzP $PROJECTS $ARCHIVEROOT/$CURRENT

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 16:01:06

ok es geht!!!!

POWER DANKE!!!!!

das dumme is nur das er die files, die er neuerstellen muss, als irgendson trottel benutzer erstellt, der im netzwerk für alle anderen, kein zugriff bekommt!
ähm etwas kompli....


also die daten die er erstellt, kann sich dann kein anderer mehr anschaun - access denied!
wie kann ich dem script deutlich vermitteln das er das als root:smbuser tun soll???
oder die berechtigungen einfach auf chmod -R 777 setzen dürfte....?

dankend verbleibe ich
war schonmal best help ever ;)

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 16:27:21

chmod=ugo=rwX

das man rsync hat mich gerettet ;)

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Synchronistion Over Network with RSYNC

Beitrag von syssi » 03.01.2011 16:36:34

Das ist eine NFS Einstellung. Mach dich mal schlau, wofuer man NIS einsetzt bzw. wie man UIDs auf zwei Rechnern angleicht.

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 16:40:56

@ syssi

er fühllt die bits mit einsen auf .. also doch chmod 777 oder nicht ;) ?!



ok letztes problem!!!!


wenn ich eine datei verändere...dann überträgt er die mit aktuellen datum in ein neues verzeichniss in das zu archivierende verzeichniss!

er sollte die datei aber ersetzen und keinen extra ordner erstellen, ist zwar ne tolle idee, sprengt aber bei täglichen änderrungen von 200gb eindeutig den rahmen!

wäre super wenn nochmal jemand rüberschaut, was man etwas modifizieren müsste an den parametern von rsync......


[code#!/bin/sh

MAILADDR=david@xyz.de
HOSTNAME=mothership
BACKUPDIR=/mnt/databrain/_studio_tmp/_DAVID/Admin
EXCLUDES=/scripte/backup/excludes
ARCHIVEROOT=/mnt/simbolo/projects1

# directory which we save incremental changes to
INCREMENTDIR=`date +%Y-%m-%d`

# options to pass to rsync
OPTIONS="--force --ignore-errors --delete --delete-excluded \
--exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$INCREMENTDIR -av --chmod=ugo=rwX"

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# make sure our backup tree exists
install -d $ARCHIVEROOT

# our actual rsyncing function
do_rsync()
{
PROJECTS=$(ls $ARCHIVEROOT)
cd $BACKUPDIR
rsync $OPTIONS $PROJECTS $ARCHIVEROOT
}

# our post rsync accounting function
do_accounting()
{
echo "Backup Accounting for Day $INCREMENTDIR on $HOSTNAME:">/tmp/rsync_script_tmpfile
echo >> /tmp/rsync_script_tmpfile
echo "################################################">>/tmp/rsync_script_tmpfile
du -sh $ARCHIVEROOT/* >> /tmp/rsync_script_tmpfile
echo "Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile"
Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile
echo "rm /tmp/rsync_script_tmpfile"
# rm /tmp/rsync_script_tmpfile
}

# some error handling and/or run our backup and accounting
if [ -f $EXCLUDES ]; then
if [ -d $BACKUPDIR ]; then
# now the actual transfer
do_rsync && do_accounting
else
echo "cant find $BACKUPDIR"; exit
fi
else
echo "cant find $EXCLUDES"; exit
fi][/code]

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Synchronistion Over Network with RSYNC

Beitrag von syssi » 03.01.2011 16:51:00

BITTE mach dir bewusst, was ein inkrementelles Backup ist und was dein Skript tut. Du hast absolut keinen schimmer, was du dir da gerade gebastelt hast.

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 16:55:16

@ syssi
ein incrementelles backup kopiert nur die modifizierten dateien, die in der destination noch fehlen oder verändert wurden und sollte eigentlich nicht mehr zutreffende dateien löschen im ziel!

bitte um aufklärung ;)

bin anfänger und deshalb frage ich ja, falls ich einen fehler gemacht habe....immer raus damit!

bis jetzt sieht es eigentlich ganz gut aus......hab zwei testordner erstellt die ich synchronisiere, also es kann nicht wirklich schlimmes passieren ;)

als beispiel:

ich habe meinen test-destination-ordner erstellt, von dem er eine liste erstellt....
er kopiert alle dateien ordnungsgemäß von der quelle zum ziel
test 2: dateien verändert
script: kopiert auch diese dateien mit vollzugriff, aber legt halt diese modifizierten dateien in ein extra datums-ordner
und informiert mich nach ausführung mit einer mail - was er getan hat
eigentlich korrekt oder nicht

p.s. es liegt doch nur noch daran oder nicht???
INCREMENTDIR=`date +%Y-%m-%d`
--backup-dir=$ARCHIVEROOT/$INCREMENTDIR
genau das soll er nicht mehr tun! :)
er soll sie überschreiben, keine extra ordner erstellen!

dankend verbleibe ich!

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 03.01.2011 17:40:21

also ich glaub syssi möchte auf das hinaus....

--archive
--verbose
--compress
--human-readable
--progress
--force
--ignore-errors
--delete
--delete-excluded \
--exclude-from=$EXCLUDES
--chmod=ugo=rwX

die options im script sind halt noch überarbeitungsfähig :P

aber so ca stellst dir das vor oder?
also das sollten die wichtigsten sein oder hab ich was vergessen, wobei --progress ja nicht nötig ist unbedingt....is ja nen script - wird eh nicht viel sehen vom ablauf :)

was ist wenn es dann noch noch nen fehler gibt???
--force oder --ignore-errors mit rein?
haut bitte alles raus was wichtig ist und euch einfällt :)

p.s. wo ist eigentlich der unterschied bei dem cmhod paramter mit großem 'X'
ich mein user,group,others ist klar, aber warum ein großes X????

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Synchronistion Over Network with RSYNC

Beitrag von syssi » 03.01.2011 18:08:47

Nein, wofuer ist dieser Teil zustaendig?

Code: Alles auswählen

INCREMENTDIR=`date +%Y-%m-%d`
OPTIONS="--force --ignore-errors --delete --delete-excluded \
--exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$INCREMENTDIR -av --chmod=ugo=rwX"
Insbesondere die Option "backup" und die Option "backup-dir" und das "INCREMENTDIR" dahinter.

OnkelDave
Beiträge: 231
Registriert: 30.11.2009 16:21:13

Re: Synchronistion Over Network with RSYNC

Beitrag von OnkelDave » 04.01.2011 09:26:37

guten morgen allerseits bzw syssi,
neuer tag neues glück ;)

INCREMENTDIR=`date +%Y-%m-%d`

diese zeile schreibt das aktuelle datum in die variable, damit werden später die mails gekennzeichnet

OPTIONS="--force --ignore-errors --delete --delete-excluded \
--exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$INCREMENTDIR -av --chmod=ugo=rwX"

das sind die parameter von rsync - die optionen sozusagen mit denen das programm arbeiten soll
ich sagte ja das sie mangelhaft sind, weil von einer stelle genommen und hier eingesetzt, aber als anfang war es doch sehr nett um zu verstehen ;)
ich wollte die ganzen nicht passenden "optionen" jetzt ersetzen mit meinen benötigten!
also vergesst diese zeile!

hier ist die neue:

--archive
--verbose
--compress
--human-readable
--progress
--force
--ignore-errors
--delete
--delete-excluded \
--exclude-from=$EXCLUDES
--chmod=ugo=rwx

das sind die parameter/optionen die ich benötige für eine incrementelle synchronisation, lieg ich richtig oder gibt es noch verbesserungsvorschläge?
danke schonmal für deinen großen einsatz syssi, bin dir echt zu dank verpflichtet!
gruß dave




würd jetzt so aussehen:

Code: Alles auswählen

#!/bin/sh

MAILADDR=david@xyz.de
HOSTNAME=mothership
BACKUPDIR=/mnt/databrain/_studio_tmp/_DAVID/Admin
EXCLUDES=/scripte/backup/excludes
ARCHIVEROOT=/mnt/simbolo/projects1

INCREMENTDIR=`date +%d-%m-%Y`

OPTIONS="--archive --verbose --compress --human-readable --progress --force --ignore-errors --delete --delete-excluded --exclude-from=$EXCLUDES --chmod=ugo=rwx"

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

install -d $ARCHIVEROOT

do_rsync()
{
PROJECTS=$(ls $ARCHIVEROOT)
cd $BACKUPDIR
rsync $OPTIONS $PROJECTS $ARCHIVEROOT
}

do_accounting()
{
   echo "Backup Accounting for Day $INCREMENTDIR on $HOSTNAME:">/tmp/rsync_script_tmpfile
   echo >> /tmp/rsync_script_tmpfile
   echo "################################################">>/tmp/rsync_script_tmpfile
   du -sh $ARCHIVEROOT/* >> /tmp/rsync_script_tmpfile
   echo "Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile"
   Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile
   echo "rm /tmp/rsync_script_tmpfile"
  # rm /tmp/rsync_script_tmpfile
}

if [ -f $EXCLUDES ]; then
	if [ -d $BACKUPDIR ]; then
		do_rsync && do_accounting
	else
		echo "cant find $BACKUPDIR"; exit
	fi
	else
		echo "cant find $EXCLUDES"; exit
fi

Antworten