Outils pour utilisateurs

Outils du site


bash:rsync-roulement

Archivage par roulement et rsync

Ce script permet d'archiver un dossier source par “roulement” à la place de l'archive la plus ancienne. Cela donne des archives complètes, datées, et rapidement traitées si la majorité des fichiers sont inchangés.

NB: ce script suppose que:

  • on travaille dans le dossier “/sauvegardes”
  • le dossier “incoming” contient la version actuelle des fichiers
  • le dossier “archives” contient PLUSIEURS sous-dossiers, un par jour, nommés style “2014-12-09”

Exemple: le script est exécuté le 10 décembre 2014 et le dossier archives contient 5 archives journalières. Le script renomme donc “2014-12-05” en “2014-12-10” et synchronise les fichiers de “incoming” vers celle-ci. Le lendemain, “2014-12-06” est renommée “2014-12-11”, synchro, etc etc.

archivage.sh
echo "Changing path.."
cd "/sauvegardes/"
 
if [ -f 'archivage.lock.txt' ]; then
	echo "Lockfile found, exit"
	exit
fi
 
echo "Setting lockfile"
touch 'archivage.lock.txt'
 
filename=$(date +%Y-%m-%d)
 
echo "Finding oldest archive"
oldest=$(ls -tr1 "archives/" | head -1)
echo "Oldest is $oldest, moving to $filename"
 
mv "archives/$oldest" "archives/$filename"
 
echo "Now doing rsync archive"
rsync -a --progress --delete-before --no-inc-recursive "incoming/" "archives/$filename/"
touch "archives/$filename/"
 
echo "Finished, removing lock and exit"
rm 'archivage.lock.txt'
bash/rsync-roulement.txt · Dernière modification: 2017/03/22 22:32 par mitsu