[linux] Re: Mirror data naar een andere disk
Johan Swenker
Johan.Swenker op xs4all.nl
Za Dec 3 11:35:16 CET 2005
Erik van der Meulen wrote:
> Beste allemaal -
>
> Ik heb een behoorlijk grote hoeveelheid (kostbare) data op een Windows
> machine. Nu heb een ik extra schijf in mijn server (Debian 3.1)
> geplaatst en wil een een actuele copie bijhounden van mijn data.
> Veranderingen vinden alleen plaats op de Win kant en deze moeten (liefst
> automatisch) worden doorgevoerd op de server.
>
> Ik heb mijn data op de Win machine sharable gemaakt en deze dmv mount -t
> smb gemount op de server. Nu heb ik daar dus:
>
> /var/data/ en
> /var/remotedata/
>
> Ik wil nu op de server een scriptje draaien die zorgt dat /var/data
> exact gelijk gehouden wordt aan /var/remotedata.
Hiervoor is rsync een oplossing. Rsync controleert eerst of de
meta-data (creatie tijd, lengte en dergelijke) verschillen. Alleen dan
wordt de daadwerkelijke copieerslag uitgevoerd.
<test>
Twee files gemaakt: a/test en b/test die dezelfde meta-data hebben
$ rsync a/test b/test
$ cat ?/test
Dit is een test van mij.
Dat is een test van mij.
Dus ondanks dat ik met rsync ze gelijk getrokken zou hebben, blijven
ze verschillend.
</test>
Dit betekent dus, dat zolang de files op de windows machine niet
wijzigen, ze niet door de Linux machine gelezen worden. Zodra er ook
maar een kleine wijziging in zit, zal de Linux machine de hele file
door het netwerk heentrekken om source en destination met elkaar te
kunnen vergelijken (middels het rsync algorithme). Het zou daarom
beter zijn om rsync op je windows machine te draaien.
Ik gebruik zelf het volgende stukje code om een windows machine te
backuppen:
<script>
STATUS_DIR=/usr/local/lib/backup
RDIR=SYS1
TMP_FILE=`mktemp -t`
if [ -e ${STATUS_DIR}/${RDIR} ]
then LINKDIR=`cat ${STATUS_DIR}/${RDIR}`
else LINKDIR=/dev/null
fi
if rsync -av --exclude=win386.swp \
--delete --link-dest=$LINKDIR \
/mnt/smb/ /WindowsBackup/SYS1/TMP > $TMP_FILE
then mv $TMP_FILE ${STATUS_DIR}/${RDIR}.list
BACKUPDIR=/WindowsBackup/SYS1/`date +%Y%m%d-%H%M%S`
mv /WindowsBackup/SYS1/TMP $BACKUPDIR
echo $BACKUPDIR > ${STATUS_DIR}/${RDIR}
else mv --backup=t $TMP_FILE ${STATUS_DIR}/${RDIR}half
fi
</script>
Het gebruik van --link-dest en het manipuleren van LINKDIR en
BACKUPDIR zorgen ervoor dat ik voor de opslagruimte van een
differential backup een full backup krijg.
>
> Heeft iemand een suggestie hoe dit het meest efficient aan te pakken? Ik
> heb wat met unison gespeeld, maar denk dat dit meer voor geavanceerde
> bi-directionele synchronisatie is.
>
> Hartelijk dank voor alle suggesties!
>
> --
> Erik van der Meulen <e.van.der.meulen op avondel.com>
Succes, Johan
More information about the Linux
mailing list