Aujourd’hui, nous abordons la sauvegarde des fichiers essentiels du serveur.

Backup Manager permet d’effectuer des sauvegardes quotidiennes du système : il crée des archives dans plusieurs formats de compression (tar, gzip, bzip2, lzma, dar, zip) et peut les exporter vers un serveur FTP.

Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH photo 1

Dans notre cas, nous allons l’installer et le configurer pour envoyer tout ce qui est important sur notre serveur sur le serveur FTP externe de sauvegarde fourni gratuitement par OVH (100 Go).

Etape 1 : installation de Backup Manager

C’est classique :

apt-get install backup-manager

A la fin de l’installation, un assistant se lance et vous permet de configurer des options par défaut. Ou vous pouvez configurer à la main, comme indiqué dans l’étape suivante.

Etape 2 : configuration de Backup Manager

nano /etc/backup-manager.conf

Par défaut, les archives sont placées dans /var/archives, le répertoire doit être détenu par l’utilisateur root afin que personne d’autre ne puisse en consulter le contenu :

# Where to store the archives
export BM_REPOSITORY_ROOT="/var/archives"

Les archives seront conservées 5 jours :

# Number of days we have to keep an archive (Time To Live)
export BM_ARCHIVE_TTL="5"

Méthode de compression à utiliser :

export BM_ARCHIVE_METHOD="tarball"
export BM_TARBALL_FILETYPE="tar.gz"

Les différents répertoires à sauvegarder : /etc contient les fichiers de configuration des services serveur, /home les données des sites et /var/lib/mysql les bases de données :

# Paths without spaces in their name:
export BM_TARBALL_DIRECTORIES="/etc /home /var/lib/mysql"

Ensuite, on renseigne l’utilisateur MySQL dédié aux sauvegardes :

# The user who is allowed to read every databases filled in BM_MYSQL_DATABASES
export BM_MYSQL_ADMINLOGIN="backupuser"

# its password
export BM_MYSQL_ADMINPASS="backuppwd"

Enfin, on s’occupe de la manière dont on traite nos fichiers de sauvegarde. Dans notre cas, nous les uploadons sur le serveur FTP de sauvegarde OVH donc :

export BM_UPLOAD_METHOD="ftp"

Et plus bas :

# Timeout (in seconds) for FTP transfer
# This setting only has effect when using FTP transfer with
# secure mode disabled (BM_UPLOAD_FTP_SECURE to "false")
export BM_UPLOAD_FTP_TIMEOUT="3600"

# the user to use for the FTP connections/transfers
export BM_UPLOAD_FTP_USER="ksXXXXXXX.kimsufi.com"

# the FTP user's password
export BM_UPLOAD_FTP_PASSWORD="FTP-PASSWORD"

# FTP specific remote hosts
export BM_UPLOAD_FTP_HOSTS="ftpback-XXXX-XXXX.ovh.net"

# purge archives on remote hosts before uploading?
export BM_UPLOAD_FTP_PURGE="true"

# You can specify a time to live for archives uploaded with FTP
# This can let you use different ttl's locally and remotely
# By default, BM_ARCHIVE_TTL will be used.
export BM_UPLOAD_FTP_TTL="5"

# destination for FTP uploads (overrides BM_UPLOAD_DESTINATION)
export BM_UPLOAD_FTP_DESTINATION="/"

Allez maintenant au bas du fichier. Nous allons exécuter un script PHP à la fin de chaque sauvegarde qui nous avertira par email du bon déroulement de la sauvegarde :

# Enter here some shell script.
# It will be executed after the last action of backup-manager.
export BM_POST_BACKUP_COMMAND="/etc/backup-manager-email"

Sauvegardez le fichier et retournez dans le shell, la configuration est terminée.

A lire :  Ubuntu : associer une clé bluetooth avec des enceintes bluetooth Novodio PureSound

Etape 3 : ouverture du port 21 dans iptables

Pour pouvoir communiquer avec le serveur FTP, il faut que le port 21 soit ouvert dans iptables:

iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT

Etape 4 : création du script PHP qui envoie un mail après la sauvegarde

On crée le fichier précedemment renseigné :

nano /etc/backup-manager-email

Et on y ajoute :

#!/usr/bin/php
<?php
/*
Plugin Name: Backup-Manager Email
Plugin URI: https://www.skyminds.net/?p=5315
Description: Sends a recap email to sysadmin after Backup-Manager has backed up the files.
Version: 2.0
Author: Matt Biscay
Author URI: https://www.skyminds.net/
*/

/* --- Changelog ---

v2.0 :
- PHP 7.1 compatible
- switch from single recipient to recipient array
- better dir recursion
- fixed undefined variables
- new function to format file sizes

v1.0 : initial release
*/
$dest = array('ADMIN@EXAMPLE.COM');
$archives = '/var/archives';

$host = trim(file_get_contents('/etc/hostname'));
clearstatcache();
$pagetext = '';
$totalsize = 0;

// Function: Format Bytes Into TiB/GiB/MiB/KiB/Bytes
function format_filesize($rawSize) {
        if($rawSize / 1099511627776 > 1) {
            return number_format($rawSize/1099511627776, 1).' TiB';
        } elseif($rawSize / 1073741824 > 1) {
            return number_format($rawSize/1073741824, 1).' GiB';
        } elseif($rawSize / 1048576 > 1) {
            return number_format($rawSize/1048576, 1).' MiB';
        } elseif($rawSize / 1024 > 1) {
            return number_format($rawSize/1024, 1).' KiB';
        } elseif($rawSize > 1) {
            return number_format($rawSize, 0).' bytes';
        } else {
            return 'unknown';
        }
}

$dir = opendir($archives);
if($dir) {
        while(false !== ($filename = readdir($dir))) {
                if($filename[0]!='.' && $filename[0]!='..' && preg_match('/'.date('Ymd').'/',$filename)) {
                        $thefile = $archives.'/'.$filename;
                        $size = exec("ls -l '".$thefile."' | awk '{print $5}'");
                        if($size>0) {
				$pagetext.= $filename . " (". format_filesize($size) .")\n";
                        } else {
				$pagetext.= $filename . " (". format_filesize($size) .")\n";
                        }
                        $totalsize += $size;
                }
        }
	$pagetext.= "\nTotal : " . format_filesize($totalsize) ."\n";
}

foreach($dest as $d) {
        mail($d,'['.$host.'] Backup OK',$pagetext);
}
?>
N’oubliez pas de modifier l’adresse email au début du script PHP !

Il ne vous reste plus qu’à rendre le script exécutable avec :

chmod +x /etc/backup-manager-email

Etape 5 : création d’une tâche cron pour automatiser les sauvegardes

Il ne nous reste plus qu’à automatiser tout cela, en utilisant CRON bien sûr. Lancez la commande suivante, qui crée le fichier /etc/backup-manager.sh :

cat << EOF > /etc/backup-manager.sh && chmod 700 /etc/backup-manager.sh
#!/bin/sh
test -x /usr/sbin/backup-manager || exit 0
/usr/sbin/backup-manager
EOF

Ensuite, éditez le crontab pour y ajouter votre ficher backup-manager.sh :

crontab -e

puis insérez la ligne :

0 5 * * * /etc/backup-manager.sh

Vos données seront alors sauvegardées chaque matin à 5h.

Erreurs courantes et solutions

Si vous obtenez l’erreur Error reported by backup-manager-upload for method "ftp", check "/tmp/bmu-log.xxxxxx" qui renvoie vers Timeout at /usr/share/perl/5.20/Net/FTP.pm line 771, il faut impérativement augmenter la valeur de BM_UPLOAD_FTP_TIMEOUT.

Par défaut, BM_UPLOAD_FTP_TIMEOUT est de 120 secondes, ce qui est sous-dimensionné : si votre fichier de sauvegarde fait plus d’1 Go, cela risque de déclencher un timeout. Augmentez donc la valeur, j’ai mis 3600 secondes (1h) chez moi :

export BM_UPLOAD_FTP_TIMEOUT="3600"

Conclusion

Voilà, vous êtes parés : toutes les données vitales du serveur sont maintenant sauvegardées automatiquement sur le serveur de sauvegarde OVH.

A lire :  Modifier n'importe quelle page web avec votre navigateur

Il ne vous reste plus qu’à vous connecter sur le serveur de sauvegarde via le serveur et vérifier que les fichiers sont effectivement uploadés. Un pas de plus vers la redondance/intégrité des données.

Sommaire de la série Monter un serveur dédié de A à Z

  1. Serveur dédié : installation d’Apache, PHP, MySQL et Webmin
  2. Serveur dédié : créer la base de données MySQL et importer WordPress
  3. Serveur dédié : créer et activer un Virtual Host sous Apache
  4. Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
  5. Serveur dédié : sécurisation des services avec iptables et fail2ban
  6. Serveur dédié : sécurisation de la couche TCP/IP
  7. Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels
  8. Serveur dédié : sécuriser Apache 2 avec ModSecurity
  9. Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
  10. Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
  11. Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
  12. Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
  13. Serveur dédié : installer la dernière version d’APC par SVN
  14. Serveur dédié : analyse des performances du serveur
  15. Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
  16. Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
  17. Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
  18. Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire
  19. Serveur dédié : impossible de se connecter à un port distant
  20. Rsync: rapatrier les fichiers du serveur à la maison
  21. Bash : réparer les tables MySQL en cas de crash
  22. Serveur dédié : création d’une seedbox avec Transmission
  23. Serveur dédié : des paquets LAMP à jour sous Debian
  24. Serveur dédié : mise à jour vers Debian 7 Wheezy
  25. Serveur dédié : activer X11 forwarding pour SSH
  26. Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
  27. Postfix : résoudre l’erreur “fatal: www-data(33): message file too big”
  28. Serveur dédié : mise en place de l’IPv6
  29. WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
  30. WordPress : héberger les images sur un sous-domaine
  31. Serveur dédié : ajouter l’authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
  32. Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
  33. Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
  34. Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
  35. Serveur dédié : configurer Webmin en TLS avec un certificat SSL
  36. Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
  37. Serveur dédié : installer et configurer Varnish 4
  38. Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
  39. J’ai planté le serveur… ou comment récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
  40. Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
  41. Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
  42. Serveur dédié : ajout de mod_spdy pour accélérer la connexion TLS-SSL sous Apache
  43. Serveur dédié : installer la dernière version d’OpenSSL sous Debian
  44. Serveur dédié : activer l’IP canonique du serveur sous Apache
  45. Serveur dédié : mise à jour vers PHP 5.6
  46. MySQL : convertir les tables MyISAM au format InnoDB
  47. Serveur dédié : optimiser toutes les images GIF avec GIFsicle
  48. Serveur dédié : migration de MySQL vers MariaDB
  49. BASH : lister, bloquer et débloquer des adresses IP avec iptables
  50. Serveur dédié : produire une meilleure réserve d’entropie avec haveged
  51. Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
  52. Serveur dédié : mise en place du protocole DANE
  53. 8 règles d’or pour bien déployer DNSSEC et DANE
  54. Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
  55. Serveur dédié : réduire les connexions TIME_WAIT des sockets et optimiser TCP
  56. Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
  57. Serveur dédié : mettre à jour Apache et configurer le mod_http2 pour HTTP/2
  58. Serveur dédié : ajouter le domaine à la liste HSTS preload
  59. Serveur dédié : ajouter l’authentification DMARC à Postfix et BIND
  60. Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème “no space left on device”
  61. Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB sous Debian
A lire :  Supprimer un groupe Facebook

Pour développer votre projet WordPress ou Woocommerce, faites appel à mon expertise pour réaliser un site rapide, performant et fonctionnel.

Contactez-moi

Si vous avez trouvé une faute d’orthographe, informez-nous en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée s’il vous plaît.

Articles en rapport:

Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH

par Matt Lecture: 4 min

Pin It on Pinterest

Share This

Spelling error report

The following text will be sent to our editors: