Salut, j'ai fait un petit script assez similaire pour ma Slack, et qui marche expérimentalement bien. Bon, par contre je ne l'ai pas automatisé avec cron, pour éviter de remplir mon disque dur...
En gros, il fait un gros tarball pour chaque répertoire dans le tableau $BACKUP_DATA et les range tous dans un dossier YYYY-MM-DD à l'intérieur de $BACKUP_PATH.
# The directory/files to compress and save
BACKUP_NUM=4
BACKUP_DATA[0]="/etc"
BACKUP_DATA[1]="/home"
BACKUP_DATA[2]="/root"
BACKUP_DATA[3]="/boot"
if [ ! -d $BACKUP_PATH/$BACKUP_DATE ]; then
# Create the directory
mkdir -p $BACKUP_PATH/$BACKUP_DATE
# Archive the data
for ((i=0;i<$BACKUP_NUM;i++)); do
echo "Compressing ${BACKUP_DATA[i]}..."
nice -n 10 tar czfP $BACKUP_PATH/$BACKUP_DATE/`echo "backup${BACKUP_DATA[i]}" | sed s/"\/"/"-"/g | cut -f1 -d\ `.tgz --exclude-from ./exclude-list ${BACKUP_DATA[i]}
done
fi
Ce script ne doit marcher qu'avec bash (boucle for spécifique entre autres) et n'est pas élégant (voire carrément brut de décoffrage), mais il fait son boulot. Le fichier exclude-list est une simple liste de fichiers, comme ça:
[^] # Re: cron
Posté par JaguarWan . En réponse au message Backup instinct. Évalué à 1.
En gros, il fait un gros tarball pour chaque répertoire dans le tableau $BACKUP_DATA et les range tous dans un dossier YYYY-MM-DD à l'intérieur de $BACKUP_PATH.
Si ça peut t'être utile, voilà le code:
root@Jaguar:~/Admin# cat backup-o-matic
#! /bin/sh
BACKUP_PATH="/root/backup"
BACKUP_DATE=`date --iso-8601=date`
# The directory/files to compress and save
BACKUP_NUM=4
BACKUP_DATA[0]="/etc"
BACKUP_DATA[1]="/home"
BACKUP_DATA[2]="/root"
BACKUP_DATA[3]="/boot"
if [ ! -d $BACKUP_PATH/$BACKUP_DATE ]; then
# Create the directory
mkdir -p $BACKUP_PATH/$BACKUP_DATE
# Archive the data
for ((i=0;i<$BACKUP_NUM;i++)); do
echo "Compressing ${BACKUP_DATA[i]}..."
nice -n 10 tar czfP $BACKUP_PATH/$BACKUP_DATE/`echo "backup${BACKUP_DATA[i]}" | sed s/"\/"/"-"/g | cut -f1 -d\ `.tgz --exclude-from ./exclude-list ${BACKUP_DATA[i]}
done
fi
Ce script ne doit marcher qu'avec bash (boucle for spécifique entre autres) et n'est pas élégant (voire carrément brut de décoffrage), mais il fait son boulot. Le fichier exclude-list est une simple liste de fichiers, comme ça:
root@Jaguar:~/Admin# cat exclude-list
/home/jaguarwan/.wine/drive_c/*
/home/jaguarwan/Download/*
/home/jaguarwan/Playground/*
/home/jaguarwan/.pearpc/*
/home/jaguarwan/.aMule/Incoming/*
/home/jaguarwan/.aMule/Temp/*
/home/invite/*
/root/backup/*