Dans le cadre de la sauvegarde de son site en 3 étapes, voici un script pour cloner le contenu de son FTP à distance pour avoir ses backups délocalisées.
Ce script permet de se connecter en FTP ou SFTP sur son hébergeur et d’y reprendre le nouveau contenu (plus rapide) ou de faire un différentiel de tout le contenu existant et le rapatrier (plus sur mais beaucoup plus long).
Voici le lien vers le script : clone-ftp.sh
Je vous conseille de mettre les tâches cron suivantes pour optimiser le temps et la robustesse de vos backups :
0 10 * * 1-6 root nice -n 19 /usr/local/sbin/clone-ftp.sh --quick 0 10 * * 7 root nice -n 19 /usr/local/sbin/clone-ftp.sh
- Le backup est fait pour le nouveau contenu chaque jour (pour les dump mysql de la nuit surtout) pour être rapide
- Le backup complet est fait chaque semaine (mise à jour de plugin ou du CRM par exemple)
- le nice est mis au plus bas dans les priorités noyau
Voici les détails du script :
#!/bin/bash dossier_local="/data/clone-ftp" server="ftp.server" #server name source_distant="" #remote directory to backup (let empty for all the ftp root) credential_file="/data/clone-ftp.secret" #format user:password logfile="/var/log/clone-ftp.log" #logfile foldersExcluded="backup_ftp public_html/private/backups public_html/monlinux.net/files" #exclude directory or files quick="no" #value "on"/"yes" or "off" to only check only new files, not modified (quicker) #test if local directory exist if [ ! -d "$dossier_local" ] ; then echo "Error : directory $dossier_local don't exist!" >&2 exit 1 fi #test if credential file exist if [ ! -e "$credential_file" ] ; then echo "Error : FTP credential file $credential_file don't exist!" >&2 exit 1 fi #get args to check about quick mode if [ $# == 1 ] ; then if [ "$1" == "--quick" ] ; then quick="yes" else echo "bad args, use --quick for only check new files" >&2 && exit 1 fi fi credential=$(cat $credential_file) #get excluded if [ "$foldersExcluded" != "" ] ; then while read exclude ; do formatFoldersExcluded="$formatFoldersExcluded --exclude '$exclude'" done < <(echo "$foldersExcluded") fi #get quick mode : only add new files, don't compare files modified if [ "$quick" == "yes" ] || [ "$quick" == "on" ] ; then quickValue='--only-missing' ; fi #lftp -c mirror --continue --delete $quickValue --log="$logfile" "$formatFoldersExcluded" ftp://$credential@$server/$source_distant $dossier_local lftp -u $credential $server <<EOF mirror --continue --delete $quickValue --log=$logfile $formatFoldersExcluded /$source_distant $dossier_local EOF exit $?
Pour la suite, il faut aller à la 3e et dernière étape : backup des données FTP en local pour l’historique via rdiff-backup.
Laisser un commentaire