linux:scripts_backup
Table des matières
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
linux/scripts_backup.txt · Dernière modification : 2020/07/24 22:03 de 127.0.0.1