Rsync is een bestand synchronisatie tool ideaal om backups mee te maken.
Om een backup te maken van een folder kan je volgende code gebruiken
rsync rutvh –delete –force sourcedir destinationdir of
rsync -rlvhtD –delete –force –ignore-errors sourcedir destinationdir
deze code zal het doel volledig spiegelen aan de source maw source en doel worden identiek en wel in 1 richting van source naar doel!
Onderstaand een shell script die controleert of de ext harde schijf is aangesloten en zo ja begint te synchroniseren van 2 verschillende mappen , en op het einde toont die ook het volume van de doelen.
Met dit script hoef je dus enkel nog de hdd in te pluggen en het sh bestandje dat je gemaakt hebt opstarten, de rest gaat vanzelf. Pas uw sourcedir en destdir alsook de schijf aan in het programma om het met uw stick of hdd te kunnen laten werken.
De eerste maal voeg je de optie -n toe om een dry run uit te voeren zonder echt bestanden te gaan veranderen, de optie word dan -rutvhn.
#! bin/sh
# declaraties van variabelen en funkties
# rsync synchronisatie tool use -n tot dry run
alias dobackup='rsync -rutvh --delete --force "$sdir" "$ddir"'
schijf='/media/freddy/TOSHIBA EXT/'
testschijf () {
echo "zoeken naar schijf $schijf"
if [ ! -d "$schijf" ]
then
echo Externe USB harde schijf niet aangekoppeld ------------
echo programma exit in 10 seconden
sleep 10
#testschijf
exit
else
echo schijf aangekoppeld prog wordt uitgevoerd in 3sec
echo -------------------------------------------------
sleep 3
fi
}
#start programma vanaf hier
testschijf
sdir='/mnt/Data/dagelijkse-data/'
ddir='/media/freddy/TOSHIBA EXT/dagelijkse-data'
echo " sourcedir= $sdir
destdir= $ddir
synchronistatie van dagelijkse-data naar toshiba hdd
"
dobackup
echo "einde sync dagelijkse-data"
echo
sdir='/mnt/Data/bu-prive/'
ddir='/media/freddy/TOSHIBA EXT/bu-prive'
echo " sourcedir= $sdir
destdir= $ddir
synchronisatie van prive folder bu-prive naar toschiba hdd"
dobackup
echo "einde sync bu-prive
grootte van bu-prive en dagelijkse data"
#echo to find size of a directory = sudo du -sh /directory
du -s "/mnt/Data/"
du -s "/media/freddy/TOSHIBA EXT/"
du -s "/mnt/Data/dagelijkse-data"
du -s "/media/freddy/TOSHIBA EXT/dagelijkse-data"
$SHELL
voor de echte specialisten kan je er nog een CRON Job aan toevoegen om de zaken volledig automatisch te laten verlopen.
Om te sysncroniseren met zelf te kiezen mappen kan je volgende sh file gebruiken , ook geschikt voor het synchroniseren naar samba shares
#! /bin/bash
# declaraties van variabelen en funkties
# rsync synchronisatie tool use -n tot dry run
#selectie van de directorys--------------------------------------------
selectie(){
echo "select source directory"
sdir=$(zenity --file-selection --directory --title="source directory")
echo "sourcedir= $sdir"
echo "select destination directory"
ddir=$(zenity --file-selection --directory --title="destination directory" )
echo "destination directory= $ddir"
backuptool
}
#--exit program----------------------------------------------------
program_exit(){
cd "/home/$USER"
echo "--------------------------"
echo "program will exit"
$SHELL
exit
}
#----do the backup------------------------------------------------------
backuptool(){
read -p "do you wish to backup (y/n) " keuze
echo $keuze
if test $keuze = "y" ; then
echo "backup started"
#optie u=skip files that ar newer on hte receiver
#--verbose, -v increase verbosity
#--links, -l copy symlinks as symlinks
#--times, -t preserve modification times
#-D same as --devices --specials
#--recursive, -r recurse into directories
#--dry-run, -n perform a trial run with no changes made
#--delete delete extraneous files from dest dirs
#--force force deletion of dirs even if not empty
#--human-readable, -h output numbers in a human-readable format
#--progress show progress during transfer
#--perms, -p preserve permissions
#--executability, -E preserve executability
# use --ignore errors for samba shares
rsync -rlvhtD --delete --force --progress --ignore-errors "$sdir" "$ddir"
else
vraagexit
fi
vraagexit
}
#----exit question--------------------------------------------------------------
vraagexit(){
read -p "do you wish to continue (y/n) " keuze2
echo $keuze2
if test $keuze2 = "y" ; then
infoform
else
program_exit
fi
}
#----info to backup-------------------------------------------------------------
infoform(){
clear
echo "------------------------------------------------"
echo "data synchronisation backup tool"
read -p "do you wish to backup files and folders (y/n) " keuze3
echo $keuze3
if test $keuze3 = "y" ; then
selectie
else
program_exit
fi
}
#---program starts from here------------------------------------------------------
clear
echo "------------------------------------------------"
infoform
vraagexit
#----------------------------------------------------------------------------
$SHELL
Om deze taken automatisch te laten verlopen kan je gebruik maken van cron tasks