Skip to content

Instantly share code, notes, and snippets.

@akarzim
Created August 26, 2013 07:46
Show Gist options
  • Select an option

  • Save akarzim/6338951 to your computer and use it in GitHub Desktop.

Select an option

Save akarzim/6338951 to your computer and use it in GitHub Desktop.
Just a simple way do perform a daily backup on my external disk.
#!/bin/sh
# Source du backup
SRC="/home/akarzim/Documents"
# Destination du backup
DST="/media/SDBackup"
UUID="/dev/disk/by-uuid/02e610cf-1cda-4891-b6f5-486d216a4d39"
# Date de la forme année-mois-jour-timestamp
# (le timestamp %s sert si on veut faire plusieurs sauvegardes dans la même journée)
DATE=`date +%Y-%m-%d-%s`
# Montage du disque
if test -e $UUID ; then
mount $UUID $DST
fi
# Création du répertoire temporaire
mkdir $DST/tmp || exit 1
echo "Backup started on "`date "+%d/%m/%Y at %T"`
echo "Starting : "`date "+%Y-%m-%d %T"` >> $DST/log
echo "Copy of the last backup..."
# Si une sauvegarde a déjà été faite précédemment
if test -d $DST/today ; then
# Et si le fichier contenant la date de la dernière sauvegarde existe
if test -f $DST/last_date ; then
LASTDATE=`cat $DST/last_date`
# Alors on fait un copie en hardlinks de la sauvegarde d'hier
cp -al $DST/today $DST/tmp/
# Puis on renomme la copie pour qu'elle devienne la sauvegarde d'hier
mv $DST/tmp/today $DST/$LASTDATE
fi
# Sinon, on crée le premier dossier
else
mkdir $DST/today
fi
rm -rf $DST/tmp
# On sauvegarde la date actuelle pour le prochain backup
echo $DATE > $DST/last_date
echo "Daily sync..."
# Synchronisation de la source avec le dossier du jour
rsync -ax --delete --size-only --exclude ~akarzim/log --exclude ~akarzim/tmp $SRC/ $DST/today/
echo "Backup done on "`date "+%d/%m/%Y at %T"`
echo "Done : "`date "+%Y-%m-%d %T"` >> $DST/log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment