====== Divers scripts de backup sous linux ====== ===== Information ===== Testés sur Debian 8. **Attention, aucun de ces scripts n'a de gestion d'erreur**. Ils font le job, mais il faut contrôler vos backups régulièrement. ===== Backup de ftp ===== Utile pour backup d'un site web. Récupération et création d'une archive tgz. Création d'un fichier md5 correspondant à l'archive. Packages nécessaires : ''lftp'' ''md5sum'' apt install lftp md5sum Script : #!/bin/bash ###### CONFIGURATION ##### #Dossier de ce script DOSSIERSCRIPT=/home/user/baksystem #Nom du site à backup NOMSITE=monsite.fr #Addresses FTP FTPADDRESS=ftp.monsite.fr:21 #Utilisateur FTP FTPUSER=user #Mot de passe FTP FTPPASS=password #Dossier distant sur FTP, depuis la racine du FTP FTPREMOTEFOLDER=/htdocs #Durée de rétention de backups en jours RETENTION=5 ####### FIN CONF ######### ### NE PAS EDITER APRES CE POINT ! #### LFTPTEMP=$DOSSIERSCRIPT/temp/$NOMSITE mkdir -p $LFTPTEMP BAKFOLDER=$DOSSIERSCRIPT/bak mkdir -p $BAKFOLDER ### SCRIPT START ### #SYNCHRO LFTP lftp -u $FTPUSER,$FTPPASS -e 'mirror --verbose -c '$FTPREMOTEFOLDER' '$LFTPTEMP' --delete --parallel=1 --verbose=3; quit;' $FTPADDRESS #COMPRESSION NOW=$(date +"%Y-%m-%d-%H-%M-%S") tar -zcvf $BAKFOLDER/$NOMSITE-$NOW.tgz $LFTPTEMP #CHECKSUM md5sum $BAKFOLDER/$NOMSITE-$NOW.tgz > $BAKFOLDER/$NOMSITE-$NOW.md5 #EDIT CHECKSUM FOR RELATIVE PATH SEDCOMMAND=s,$BAKFOLDER/,,g sed -i "$SEDCOMMAND" $BAKFOLDER/$NOMSITE-$NOW.md5 #CLEAN OLD BACKUPS find $BAKFOLDER -type f -mtime +$RETENTION -exec rm {} \; ### SCRIPT END ### ===== Backup en rsync, avec authentification par clé privée ===== Utile pour récupérer des archives sur un serveur distant sécurisé. Package nécessaire : ''rsync'' apt install rsync Script : #!/bin/bash ###### CONFIGURATION ##### #Dossier de ce script DOSSIERSCRIPT=/home/user/baksystem #Nom du site à backup NOMBACKUP=monbackup #Addresses FTP SERVERADDRESS=monserveur:22 #Utilisateur SSH USER=user #Dossier distant sur serveur SERVERREMOTEFOLDER=/mon/dossier/ #Fichier de clé SSH à mettre dans le dossier "keys" (dossier situé au niveau de ce script) KEYFILE=macleprivee #Durée de rétention de backups en jours RETENTION=5 ####### FIN CONF ######### BAKFOLDER=$DOSSIERSCRIPT/bak/$NOMBACKUP mkdir -p $BAKFOLDER #RSYNC rsync -avz --progress --delete --rsh="ssh -i "$DOSSIERSCRIPT"/keys/"$KEYFILE" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" $USER@$SERVERADDRESS:$SERVERREMOTEFOLDER/* $BAKFOLDER #Nettoyage des vieux backups find $BAKFOLDER -type f -mtime +$RETENTION -exec rm {} \; ===== Copie sur partage SMB, sans écrasement ===== Utilisé pour copier des archives de sauvegarde d'un serveur vers un partage SMB. Pas d'écrasement de fichiers existants. **Attention** : Ce script doit être lancé en root pour pouvoir effectuer le montage SMB. Package nécessaire : ''cifs-utils'' apt install cifs-utils Script : #!/bin/bash ###### CONFIGURATION ##### #Dossier de ce script DOSSIERSCRIPT=/home/user/baksystem BAKFOLDER=$DOSSIERSCRIPT/bak #Point de montage SMBMOUNT=/media/websites-bak #IP du serveur SMB SMBIP=192.168.10.42 #Chemin du dossier sur SMB SMBPATH=dossier/sur/smb #Utilisateur SMB SMBUSER=utilisateur #Mot de passe SMB SMBPASS=password #Durée de rétention de backups en jours RETENTION=5 #CHMOD pour le dossier d'arrivée RIGHTS=775 ####### FIN CONF ######### #CREATE MOUNT POINT mkdir -p $SMBMOUNT #MOUNT mount -t cifs //$SMBIP/$SMBPATH -o username=$SMBUSER,password=$SMBPASS $SMBMOUNT sleep 3 #COPY WITH SKIP cp -r --no-clobber $BAKFOLDER/* $SMBMOUNT chmod -R $RIGHTS $SMBMOUNT/* #CLEAN OLD BACKUPS ON SMB find $SMBMOUNT -type f -mtime +$RETENTION -exec rm {} \; sleep 3 #UNMOUNT umount $SMBMOUNT sleep 3