
1. Par où commencer
Où commence la sauvegarde? Planification. Lorsque vous sauvegardez un système, vous devez faire un plan de sauvegarde: quoi exactement, à quelle fréquence, combien de temps pour stocker, y aura-t-il suffisamment d'espace libre? À partir des réponses à ces questions, la réponse à la question principale suit - comment sauvegarder?
S'il y a beaucoup d'espace libre, vous pouvez stocker l'intégralité de la machine virtuelle. Faites des sauvegardes avec le même Veeam sur un calendrier, et ne pensez pas aux difficultés. Mais pour moi, c’est du gaspillage, j’ai l’habitude de tout faire de la manière la plus concise et la plus économique possible. Bien sûr, j'ai déployé Veeam, mais je ne fais que des copies de sauvegarde des systèmes qui sont impossibles ou problématiques à déployer à partir de sauvegardes pendant très longtemps.
À propos des scripts des outils de gestion de l'environnement virtuel, je garderai simplement le silence de manière significative.
Zimbra dispose d'un outil zmmailbox. Et, en examinant de plus près sa fonctionnalité, j'ai réalisé que ce serait plus que suffisant pour moi. Il peut sauvegarder et restaurer des boîtes aux lettres même sur un système actif. Et j'ai aimé la possibilité de sauvegarder les boîtes aux lettres critiques séparément de la sauvegarde de l'ensemble du système. Ainsi, l'espace occupé par les sauvegardes sera limité par la taille des boîtes aux lettres archivées multipliée par le nombre de jours de «profondeur de sauvegarde», et non par le volume de l'ensemble du système multiplié par le même nombre de jours. De plus, il est extrêmement difficile de récupérer à partir d'une sauvegarde de l'ensemble du système, dans le cas de Zimbra. Il est beaucoup plus facile de copier une machine virtuelle à l'aide de Veeam ou des outils de gestion d'environnement virtuel (Hyper-V, ESXI, entrez celui souhaité) juste après la configuration du système, et de le mettre «sur l'étagère» afin qu'à un moment critique, vous puissiez rapidement déployer des machines virtuelles presque sans poids et télécharger en elle des sauvegardes de boîtes. À mon avis, c'est le scénario le moins cher à tous égards.
2. Les données source:
Système d'exploitation du serveur : CentOS 7
À propos de l'OSEn fait, la différence entre CentOS7 et tout autre système réside uniquement dans les commandes au serveur pour installer les packages et, éventuellement, l'emplacement de certains fichiers. Le travail est effectué principalement avec des applets de commande Zimbra, de sorte que les différences de configuration seront minimes.
Domaine Zimbra : zimbramail.home.local
Nom d'utilisateur et mot de passe pour accéder au dossier partagé : ZimbraBackUp / 123123
Chemin d'accès au dossier partagé : \\ BackUpServer1 \ ZM \
Le chemin pour monter les boules sur l'hôte Zimbra : / mnt / ZM /
3. Configuration
Commençons donc!
Nous allons écrire des sauvegardes sur un serveur exécutant Windows dans un dossier partagé. Si vous le souhaitez, vous pouvez fusionner les sauvegardes n'importe où, mais tout est configuré pour que la plupart des sauvegardes soient écrites dans BackUpServer1.home.local. Alors que:
1) Nous créons dans le domaine utilisateur pour accéder au dossier partagé sur ce serveur afin qu'il puisse être monté sur le serveur Zimbramail.home.local. Nom d'utilisateur ZimbraBackUp, mot de passe, conditionnellement, 123123.
2) Sur le serveur BackUpServer1, créez le répertoire \ ZM \ dans le référentiel et partagez-le, en donnant des droits de modification à l'utilisateur ZimbraBackUp. Le chemin vers la balle sera: \\ BackUpServer1 \ ZM \
3) Montez la balle sur le serveur Zimbramail.home.local. Pour que le dossier soit monté automatiquement, vous devez corriger le fichier / etc / fstab en y ajoutant la ligne:
//BackUpServer/ZM /mnt/ZM cifs user,uid=500,rw,suid,username=ZimbraBackUp,password=123123 0 0
Mais vous devez d'abord vérifier si le support fonctionne:
$ mount -t cifs //BackUpServer/ZM /mnt/ZM -o user=ZimbraBackUp,password=123123
Souvent, une erreur comme celle-ci apparaît:
mount: wrong fs type, bad option, bad superblock on //BackUpServer1/ZM/, missing codepage or helper program, or other error (for several filesystems (eg nfs, cifs) you might need a /sbin/mount.<type> helper program) In some cases useful info is found in syslog - try dmesg | tail or so.
Vous pouvez le corriger en installant cifs-utils:
$ yum install cifs-utils
Après la configuration, je recommande de redémarrer le serveur.
4) Créez 3 fichiers de script: FullBackUp.sh HandBackUp.sh Restore.sh
Le premier fichier sera utilisé pour créer automatiquement des sauvegardes planifiées, le second pour la possibilité de sauvegarder des boîtes aux lettres individuelles, ou simplement de démarrer manuellement «et si». Et le troisième script est la restauration d'une ou de toutes les boîtes à la fois. J'ai essayé de commenter autant que possible les scripts et prescrit la journalisation.
Le contenu du fichier FullBackUp.sh: Contenu du fichier HandBackUp.sh: Le contenu du fichier Restore.sh: Il y a une subtilité. Si vous créez et modifiez des fichiers de script pour bash sous Windows, alors lorsque vous essayez d'exécuter le script, une erreur apparaît:
/ bin / sh ^ M: mauvais interprète: aucun fichier ou répertoire de ce type , c'est-à-dire que les éditeurs exécutant sous Windows ajoutent à la fin de la ligne est le caractère de retour chariot "CR \ LF", que les éditeurs sous Linux n'affiche pas. Mais ce symbole est là et n'a pas disparu. Pour se débarrasser de l'erreur et supprimer les caractères supplémentaires, nous procédons comme suit:
$ cat your-script.sh | tr -d '\r' > corrected-your-script.sh
Eh bien, ou vous pouvez utiliser l'utilitaire dos2unix, mais vous devez toujours l'installer:
$ yum install dos2unix $ dos2unix your-script.sh
5) Nous rendons les scripts exécutables:
$ chmod 0740 /opt/zimbra/BkUpRestScripts/FullBackUp.sh $ chmod 0740 /opt/zimbra/BkUpRestScripts/HandBackUp.sh $ chmod 0740 /opt/zimbra/BkUpRestScripts/Restore.sh
6) Je vous recommande d'exécuter des scripts avec vos mains et de vérifier s'ils fonctionnent et comment ils fonctionnent.
7) Créez une tâche dans CRON pour la sauvegarde quotidienne des boîtes aux lettres:
10 0 * * * root /opt/zimbra/ BkUpRestScripts/FullBackUp.sh
8) Profitez
4. Script
Dans le cas où les commentaires dans les scripts eux-mêmes n'ont pas aidé.
1) Script FullBaclUp.sh:Au début, les variables sont déterminées, laquelle est responsable de quoi - tout est commenté.
Ce qui suit est une vérification de l'absence d'un répertoire pour la sauvegarde; s'il n'existe pas, il est créé. La conclusion est faite au fichier journal et à l'écran (s'il est démarré à la main) sur le succès ou l'échec de la création d'un répertoire.
Vérifiez l'absence de catalogue avec la date d'aujourd'hui. S'il n'est pas là, il est créé, la sortie à l'écran et le journal du résultat de la création du répertoire sont également générés.
Écriture dans un fichier de toutes les boîtes aux lettres Zimbra existantes. Il est nécessaire pour la réservation séquentielle de chaque boîte. Affiche le résultat de la commande.
Création d'une sauvegarde pour chaque boîte aux lettres à partir de la liste reçue. Avec la sortie de l'exécution à l'écran et au fichier journal.
Effacement d'un fichier avec une liste de cases. Étant donné que les 3 scripts fonctionnent avec ce fichier, il est conseillé de le nettoyer après chaque exécution afin qu'il n'y ait pas de surprise. Vous pouvez le nettoyer avant le début du script, mais il m'est plus familier de ne pas stocker de données inutiles une fois le travail terminé, mais de faire la même chose avant et après que le script fonctionne est un léger degré de schizophrénie.
Vient ensuite un bloc pour créer une archive compressée.
Vérifier l'absence du répertoire de stockage des archives, le créer en l'absence et afficher le résultat de la création à l'écran et dans le journal.
Archivage
Cochez "n'est pas le premier jour aujourd'hui?" Je préfère stocker des sauvegardes pendant le premier jour de tous les mois pendant longtemps, cela me suffit pour travailler. Il peut être stocké pendant des semaines, mais souvent c'est redondant. Mais la condition de stockage des sauvegardes pour toute la période de fonctionnement du serveur de messagerie est définie en haut, donc ils sont toujours là. Si le numéro est le premier, l'archive résultante est copiée dans un répertoire «Mounthly» distinct. Et pour le copier là, vous devez vérifier s'il existe un tel répertoire, et sinon, le créer, qui devrait être signalé à l'écran et au fichier journal.
Ensuite, le stockage est nettoyé - toutes les sauvegardes de plus de 2 semaines sont supprimées, ainsi que les archives de plus de 61 jours. Le résultat de la suppression est affiché à l'écran et dans le fichier journal.
Après quoi, le script écrit l'heure de fin dans le fichier journal et sur l'écran et termine son travail.
2) Script HandBackUp.sh:Au début, des variables sont également définies, commentées également pourquoi elles sont nécessaires.
Ensuite, l'utilisateur est invité à entrer le nom de la boîte aux lettres à sauvegarder, sans spécifier le domaine Zimbra. (il est écrit dans l'invitation à entrer), ou sélectionnez une sauvegarde de toutes les boîtes aux lettres en écrivant TOUT ou tous.
Si vous choisissez de sauvegarder toutes les boîtes aux lettres, le script fonctionne presque de la même manière que la première répertoriée ci-dessus, sauf qu'après avoir créé des sauvegardes de chaque boîte aux lettres, il vous demandera - dois-je les archiver?
Si une boîte aux lettres spécifique a été écrite, son existence est vérifiée dans Zimbra. S'il existe une boîte portant le nom spécifié, le processus de sauvegarde de cette boîte démarre, avec les informations correspondantes affichées à l'écran et dans le fichier journal. Si la case spécifiée n'existe pas, l'utilisateur en sera informé et le script terminera son travail.
Une fois la sauvegarde de la boîte terminée, vous serez invité à archiver la copie. Si l'utilisateur est d'accord - il y a une vérification de l'absence d'un répertoire pour stocker l'archive et plus bas dans la liste, comme dans le premier script.
Une fois l'archivage terminé, le fichier contenant la liste des boîtes aux lettres est effacé. Juste au cas où.
À la fin, des informations sur l'heure de fin du script s'affichent à l'écran et dans le fichier journal.
3) Script Restore.sh:Comme dans les fichiers précédents, d'abord - la définition des variables avec commentaires.
L'utilisateur est invité à sélectionner la date de la sauvegarde à restaurer. Si la date spécifiée ne figure pas dans les sauvegardes, le script est interrompu en le signalant.
S'il existe des sauvegardes pour la date spécifiée - invitez l'utilisateur à entrer le nom de la boîte à restaurer. Pour restaurer toutes les cases, vous devez écrire TOUT ou tous.
Si l'option ALL est sélectionnée, le script crée une liste de fichiers dans le dossier de sauvegarde du fichier, notifie le résultat de la création.
Ensuite, une récupération étape par étape de chaque boîte. Tout d'abord, vérifiez l'existence d'une boîte dans le système, sinon, elle est créée, puis restaurée. Des informations sur chaque opération sont affichées dans le fichier journal et à l'écran.
Si une case spécifique est sélectionnée, c'est presque la même chose. Vérifiez l'existence d'un fichier avec le nom demandé. Sortie sur l'écran et le fichier journal des résultats.
Vérification de l'existence d'une boîte dans le système. Sortie sur l'écran et le fichier journal des résultats.
L'invitation à l'utilisateur d'accepter la création de la box en l'absence de telle dans le système. Sortie sur l'écran et le fichier journal des résultats.
Créez une boîte si convenu. Sortie sur l'écran et le fichier journal des résultats.
Récupération de boîte aux lettres. Sortie sur l'écran et le fichier journal des résultats.
Effacement d'un fichier avec une liste de boîtes de récupération.
À la fin, des informations sur l'heure de fin du script s'affichent à l'écran et dans le fichier journal.
5. Concernant la récupération
Si vous modifiez légèrement ces scripts, ils conviennent parfaitement pour déplacer du courrier d'un serveur à un autre, simplement en créant des boîtes aux lettres avec tout le contenu dans un nouvel emplacement. Vous pouvez également restaurer le système à partir de zéro, lorsque, pour une raison quelconque, il est plus facile de relancer le serveur Zimbra que d'essayer de faire revivre l'ancien. Comme décrit ci-dessus, vous pouvez enregistrer l'image de la machine virtuelle configurée en la développant si nécessaire et en la remplissant de toutes les données. Le même algorithme pour passer d'un serveur Zimbra à un autre.
Et aucun utilitaire payant comme Zextras n'est nécessaire.6. Conclusion
En général, il n'y a rien de compliqué dans les scripts que j'ai écrits. Oui, il y a beaucoup de conditions, parce que j'ai essayé de prévoir autant de problèmes et d'erreurs que possible dans leur travail, mais j'ai aussi essayé de commenter le script aussi clairement que possible. Très probablement, hors de la boîte, ils ne fonctionneront pas pour tout le monde. Peut-être que quelqu'un n'a pas du tout cette méthode de sauvegarde. Mais j'espère que beaucoup le trouveront utile.7. PS:
Ceci est le deuxième article de la série «Comment j'ai implémenté Zimbra». Le premier concerne l'implémentation, l'autorisation LDAP et la création automatique de boîtes aux lettres pour les utilisateurs AD, ici .Le troisième article sur la génération et la mise à jour automatiques des listes de diffusion basées sur AD dans Zimbra OSE est ici .Et je tiens également à noter que c'est ma première expérience de script sur un bash, à cause de cela, les scripts se sont avérés si encombrants et «pour particulièrement intelligents», comme on dit.