Taste and colour, they say, is in the eye of the beholder.
Traducteur : Joseph BERAUD (jibe, jibe74)
Document d'origine :
Affa : Documentation officielle du wiki de contribs.org.
Version PDF : La version PDF que j'avais mise en ligne à l'époque où je n'avais pas encore mis en place un CSS d'impression correct
ne me semble plus utile maintenant. Si l'impression ne vous satisfait pas, ou si vous avez besoin d'un PDF pour d'autres usages,
contactez-moi.
Autres sources et liens utiles :
CONTRIBS : le site officiel de SME-Server, qui comporte un forum francophone.
SMEserver.fr : Le site de Grand-Pa, LA référence francophone de SME-server.
FreeEOS : Une distribution made in France issue de SME-server, comportant entre autres de nombreuses applications web pré-installées.
Ixus : Un excellent forum dédié à la sécurité informatique, dont une large section est consacrée à SME-server et à Ipcop.
Comparatif Affa-BackupPC : Un tableau comparatif de deux solutions de sauvegardes automatisées pour SME-server.
Mise a jour : Avril 2009
Attention : compte tenu du peu de temps dont je dispose, je ne peux garantir que cette traduction soit maintenue à jour par rapport à l'original.
Le présent document est une simple traduction française de la documentation officielle, disponible sur le wiki de contribs.org. On se reportera à celle-ci pour s'assurer des mises à jour, corrections et compléments qui pourraient ne pas avoir été reportés ici. Cette traduction est livrée telle quelle, sans garanties d'aucune sorte, et le traducteur ne saurait être tenu pour responsable de quelque conséquence que ce soit découlant de la lecture et de l'utilisation de cette traduction.
Toute remarque ou suggestion concernant cette traduction sera la bienvenue.
Tous les noms et marques de commerce sont la propriété de leurs titulaires respectifs.
Table des matières
Michael Weinberger.
Affa a été créé le 5 Avril 2007.
Affa signifie Automatische Festplatten Fernarchivierung, soit approximativement en français : Sauvegarde automatique de disque dur à distance.
Le but principal de ce paquetage Affa est de transformer un serveur SME 7 en un serveur dédié de sauvegardes en quelques minutes. Affa sauvegarde autant que vous le désirez de serveurs SME sur n'importe quel autre serveur ayant sshd en service et rsync installé. Une fois qu'il est configuré, Affa fonctionne sans surveillance et de manière fiable, envoyant des messages d'avertissement en cas d'erreur.
Toutes les archives sont des sauvegardes complètes, puisque Affa utilise la technique des hardlink. Une nouvelle sauvegarde complète ne nécessite donc que l'espace disque pour les différences et les nécessités du système de fichier pour les hardlinks et les répertoires (ce qui représente généralement 2-3%).
Affa est basé sur le programme rsync et supporte l'option --compress. Cela vous permet de lancer des sauvegardes via internet ou VPN. ne configuration typique consiste en un ou plusieurs serveurs de sauvegarde Affa placés en des lieux déportés, qui sauvegardent les serveurs de production via le VPN.
Une caractéristique spéciale est l'option "rise", qui vous permet de convertir votre serveur de sauvegarde en serveur de production depuis une archive sauvegardée en cas de perte totale de votre serveur de production. Cette conversion est exécutée en un temps très court, même avec une énorme quantité de données. Cette possibilité de conversion utilise les hardlinks et de ce fait n'utilise pas d'espace disque supplémentaire.
Affa est un outil en ligne de commande pour les administrateurs système et est conçu intentionnellement sans interface graphique. De ce fait, il peut être géré efficacement depuis la console même via une connexion internet lente.
Pour ceux qui hésiteraient entre Affa et BackupPC, j'ai établi un petit tableau comparatif entre Affa et BackupPC.
ATTENTION : La traduction n'est pas à forcément à jour. Voyez sur le wiki de contribs la bonne manière d'installer la version actuelle.
Dernière version au moment de la traduction : smeserver-affa-2.0.0-rc4.noarch.rpm
wget http://mirror.contribs.org/smeserver/contribs/michaelw/sme7/Affa2/smeserver-affa-2.0.0-rc4.noarch.rpm
wget http://mirror.contribs.org/smeserver/contribs/michaelw/sme7/Affa2/perl-Compress-Bzip2-2.09-1.2.el4.rf.i386.rpm
/usr/bin/yum --enablerepo=smecontribs localinstall smeserver-affa-2.0.0-rc4.noarch.rpm perl-Compress-Bzip2-2.09-1.2.el4.rf.i386.rpm
Après la première installation d'Affa, lancez la commande suivante pour initialiser la base de données Affa.
affa --make-cronjobs
et déconnectez-vous puis reconnectez-vous à la console pour que le complément automatique de bash (touche TAB) prenne effet.
Vous avez un serveur de production SME 7 dont le nom est 'prodbox' et l'IP 10.200.48.1. Installez un second SME 7 comme serveur de sauvegardes avec le nom 'affabox' et l'IP 10.200.48.2.
# cp /usr/lib/affa/jobconfig-sample.pl /root/prodbox-job.pl
my $jobname='prodbox';
et'remoteHostName‘=>'10.200.48.1'
'sshPort'=>2222
# /root/prodbox-job.pl
Initialement, lorsque vous faites cette étape, vous devez temporairement mettre oui à "Autoriser l'authentification par SSH à l'aide de mots de passe standards" dans l'accès à distance sur le serveur de production
# affa --send-key prodbox
# affa --run prodbox
La configuration est stockée dans une base de données style e-smith. Utilisez la commande db pour configurer Affa. Le nom de tâche est la clé d'enregistrement de type 'job'. Pour configurer un nouveau travail avec le nom 'prodbox', entrez :
# db affa set prodbox job
Puis positionnez les propriétés
# db affa setprop prodbox remoteHostName 192.168.1.1
# db affa setprop prodbox TimeSchedule '0030,0730,1130,1330,1730,2030'
# db affa setprop prodbox Description 'My Production Server'
# db affa setprop prodbox status enable
et ainsi de suite...
Alternativement, vous pouvez utiliser un script comme décrit ci-dessus dans le chapitre 'Démarrage rapide'.
Pour vérifier votre travail, tapez :
# db affa show prodbox
Pour finir, mettez en place les tâches cron :
# affa --make-cronjobs
Les valeurs par défaut données dans ce tableau sont celles du programme Affa et ne doivent pas être confondues avec les valeurs prépositionnées dans les scripts d'aide, par exemple jobconfig-sample.pl.
| Propriété | Valeur | Défaut | Description |
| remoteHostName | FQHN ou IP | FQHN ou IP de l'hôte source (obligatoire) | |
| TimeSchedule | HHMM,HHMM,... | N'a pas besoin d'être ordonné. Au moins une heure est obligatoire | |
| Description | texte | ||
| scheduledKeep | entier >= 1 | 1 | Combien de sauvegardes doivent être conservées |
| dailyKeep weeklyKeep monthlyKeep yearlyKeep |
entier >= 1 | 7 4 12 2 |
Combien de sauvegardes quotidiennes, hebdomadaires, mensuelles ou annuelles doivent être conservées |
| SMEServer | yes ou no | yes | Positionné à 'yes', les répertoires e-smith par défaut sont automatiquement inclus et la propriété RPMCheck=yes peut être utilisée |
| Include[0] Include[1] ... |
full path | Fichiers ou répertoires supplémentaires à inclure à la sauvegarde | |
| Exclude[0] Exclude[1] ... |
full path | Fichiers ou répertoires supplémentaires à exclure de la sauvegarde | |
| RPMCheck | yes ou no | no | Seulement applicable aux tâches qui sauvegardent un serveur SME 7. Compares les RPM de l'hôte source avec ceux de l'hôte de sauvegarde affa. Envoie un message avec une liste de différences s'il n'y a pas correspondance. Cette vérification est utile, si vous voulez avoir la possibilité de convertir le serveur de sauvegarde en serveur de production. |
| DiskSpaceWarn | strict ou normal ou risky ou none | strict | lance une vérification de l'espace disque après qu'une tâche soit terminée. Avec le niveau 'strict' un message
d'avertissement sera envoyé si l'espace disponible est moins que la taille de la sauvegarde qui vient de s'achever.
Avec les niveaux 'normal'/'risky' le message est envoyé si moins de 50%/10% de la taille de la sauvegarde reste
disponible.
Lorsque RootDir est un lien symbolique vers un autre système de fichiers, l'espace disque utilisé du système de fichiers local est vérifié à la place de celui du système de fichiers lié. Positionnez le point de montage comme RootDir pour avoir une vérification correcte. |
| localNice | -19...+19 | 0 | lance le process local rsync par nice. |
| remoteNice | -19...+19 | 0 | lance le process rsync de la source par nice. |
| Watchdog | yes ou no | yes | Seulement applicable aux tâches qui sauvegardent un serveur SME 7. Quand une tâche est lancée, affa installe un script chien de garde sur la source dans /etc/cron.d/, qui envoie un message d'avertissement si la prochaine tâche programmée (prise dans la propriété TimeSchedule + 10 minutes) n'a pas été lancée. Cela garantit que vous serez prévenu même en cas de panne du serveur affa. Le script chien de garde envoie un message de rappel quotidien si l'erreur persiste. La tâche lancée suivante remplace le script chien de garde avec un nouveau temps de déclenchement. |
| sshPort | port du service | 22 | Lorsque sshd sur le serveur source ou votre firewall écoute sur un port non standard, précisez le port ici. |
| ConnectionCheckTimeout | secondes | 120 | Avant que le process rsync démarre sur l'hôte source distant, affa vérifie la connexion ssh et se termine avec une erreur après le temps configuré, si l'hôte ne répond pas. |
| rsyncTimeout | secondes | 900 | Rsync se termine si aucune donnée n'est transférée pendant le temps configuré. Cela évite un gelage permanent dans le cas d'une erreur sur le réseau. |
| BandwidthLimit | entier>=0 Ko/s | 0 | Limite la vitesse de transfert des données. Une valeur à zero specifie qu'il n'y a pas de limite. |
| rsyncCompress | yes ou no | no | Compresse les données transférées. Peut être utile avec les connexions internet lentes. Cela augmente la charge CPU sur les hôtes source et de sauvegarde. |
| EmailAddresses | name@domain.com,name@domain.com,... | admin | Liste séparée par des virgules des adresses email où les messages seront envoyés. Note : Par défaut, Affa n'envoie de messages que pour les erreurs, jamais en cas de succès (voir la propriété chattyOnSuccess). |
| RetryAttempts | entier >= 0 | 3 | Quand positionné à une valeur >0, Affa relance une tâche échouée RetryAttemps fois avec un délai de RetryAfter secondes. |
| RetryAfter | secondes >= 3 | 600 | Quand positionné à une valeur >0, attend RetryAfter secondes avant de relancer la tâche suite à une erreur. Utile seulement avec RetryAttempts>0 |
| Notification | yes ou no | yes | Quand positionné à no, Affa n'envoie pas de message d'erreur lorsqu'une tâche a échoué et que RetryAttemps est configuré. Un message d'erreur n'est envoyé que lorsque le dernier essai a échoué. |
| chattyOnSuccess | entier >= 0 | 0 | Quand positionné à une valeur >0, Affa envoie un message pour les tâches terminées avec succès et décrémente la valeur chattyOnSuccess. Lorsque la valeur atteint 0, Affa revient à son comportement par défaut et n'envoie plus de messages qu'en cas d'erreur. |
| AutomountDevice AutomountPoint |
full path | Unité et point de montage de l'unité de sauvegarde (ex. disque USB). L'unité est montée automatiquement avant qu'une tâche soit lancées et démontée après la fin de la tâche. Avec ces deux propriétés vides, aucun montage automatique n'est effectué. | |
| AutomountOptions | chaine de caractères | Une chaine d'options passées à la commande de montage automatique | |
| AutoUnmount | yes ou no | yes | Quand positionné à 'no' l'unité montée automatiquement reste montée après l'exécution d'Affa. |
| preJobCommand postJobCommand |
full path | Programmes (locaux sur le serveur affa) à exécuter avant/après qu'une tâche soit lancée. Le nom de la tâche et le type (programmée, journalière etc.) sont passés en arguments au programme. Le code de sortie est de plus passé à la commande de programme post-tâche. Voir /usr/lib/affa/ pour des exemples de scripts perl. | |
| RootDir | full path | /var/affa | Où stocker les archives de sauvegarde. N'utilisez pas /home/e-smith ou /root puisqu'ils sont inclus dans les répertoires à sauvegarder, ce qui empêcherait la fonction de conversion de fonctionner ! Répertoire conseillé : /var/affa |
| SambaShare | yes ou no | yes | Accède aux archives de la tâche via SMB. |
| Debug | yes ou no | Positionné à 'yes', donne plus de détails dans le fichier de log. | |
| status | enabled ou disabled | enabled | Positionné à 'disable', aucune entrée cron ne sera faite. Vous pouvez encore lancer les tâches à la main. |
| rsync--inplace | yes ou no | yes | Positionné à 'no', si la version rsync de la source ne supporte pas cette option (comme rsync sur SME6) |
| rsync--modify-window | entier >= 0 | 0 | En comparant deux horodatages, rsync les traite comme étant égaux s'ils ne diffèrent pas de plus de la valeur modify-window. C'est normalement 0 pour une correspondance exacte. Une valeur >= 0 est pratique si vous ne pouvez pas garder les horloges de la source et du serveur Affa synchonisées. |
| rsyncOptions | texte | chaine d'options aditionnelles à passer à rsync. | |
| rsyncdMode | yes ou no | no | Positionné à yes pour se connecter au démon rsync de l'hôte distant (au lieu de lancer rsync over ssh). |
| rsyncdModule | texte | AFFA | Le nom du module rsyncd (seulement applicable avec rsyncdMode=yes) |
| rsyncdUser | texte | affa | Le nom d'utilisateur pour authentification au démon rsync (seulement applicable avec rsyncdMode=yes) |
| rsyncdPassword | texte | Le mot de passe pour authentification au démon rsync (seulement applicable avec rsyncdMode=yes) | |
| remoteOS | cygwin | avec remoteOS=cygwin les options --send-key et --revoke-key utilisent le compte 'Administrator' et le chemin correct pour la clé publique sur un hôte distant sous Windows/Cygwin. | |
| ESXi | yes ou no | no | active le mode de sauvegarde VMware ESXi pour les machines virtuelles. Voir Sauvegarde de machines virtuelles ESXi avec Affa |
| ESXiVMName | texte | Le nom de la VM tel qu'affiché dans le client VI. | |
| ESXiUsername | texte | Le nom du client VI avec la permission de créer et détruire les instantanés (snapshots). | |
| ESXiPassword | texte | Le mot de passe de l'utilisateur ESXiUsername. | |
| chunkFiles | texte | Noms de fichiers qu'Affa devrait découper et compresser. Plusieurs noms doivent être séparés par un slash (/), ex. 'mysql.dump/pgsql.dump' découpe les deux fichiers mysql.dump et pgsql.dump. Avec ESXi=yes c'est implicitement positionné à '*.vmdk'. Voir aussi les options de ligne de commande --chunk-archive et --unchunk-archive |
Toutes les propriétées peuvent être positionnées par défaut dans l'enregistrement DefaultAffaConfig. C'est pratique, lorsque vous configurez plusieurs tâches similaires.
Exemple : Vous voulez positionner la propriété 'localNice' à 19 pour toutes les tâches. Tapez
# db affa setprop DefaultAffaConfig localNice 19
et ne positionnez pas cette propriété pour les tâches. Les propriétés positionnées dans les tâches sont prioritaires sur les propriétés par défaut.
La propriété spéciale 'sendStatus' ne s'applique que dans l'enregistrement DefaultAffaConfig. Elle contrôle le rapport d'état (status) envoyé par mail et peut prendre les valeurs 'none', 'daily', 'weekly' ou 'monthly'. Pour configurer un rapport hebdomadaire, tapez :
# db affa setprop DefaultAffaConfig sendStatus weekly
puis configurez cronjob :
# affa --make-cronjobs
Toutes les tâches peuvent être désactivées en positionnant l'enregistrement AffaGlobalDisable sur 'yes'.
# db affa set AffaGlobalDisable yes
# affa --make-cronjobs
Pour réactiver :
# db affa set AffaGlobalDisable no
# affa --make-cronjobs
Les options peuvent être abrégées tant qu'elles restent uniques, ex. --mak est identique à --make-cronjobs
Lance une tâche. Normalement effectué par cronjob.
Configure les tâches cron comme programmées dans les enregistrements de tâches.
Génère d'abord la clé DSA pour le serveur Affa, si cela n'a pas déjà été fait. Envoie ensuite la clé publique à l'hôte 'remoteHostName' comme configuré dans l'enregistrement de la tâche et génère l'entrée ssh known host (hôte connu) spécifique à la tâche.
Initialement, lorsque vous faites cette étape, vous aurez besoin d'activer temporairement "Autoriser l'authentification par SSH à l'aide de mots de passe standards" sur le serveur de production.
Note : l'option --send-key fonctionne pour SME Server comme serveur distant et pour les systèmes sur lesquels les clés publiques sont stockées dans /root/.ssh/authorized_keys2 et sur lesquels les commandes /bin/cat, /bin/touch, /bin/grep et /bin/mv sont disponibles. Avec remoteOS=cygwin cela fonctionne pour les serveurs distants sous Cygwin/Windows.
Effectue une restauration totale depuis l'archive de sauvegarde [ARCHIVE] sur le serveur source distant comme défini dans l'enregistrement JOB. Si [ARCHIVE] n'est pas donnée, l'archive 'scheduled.0' est utilisée comme défaut. La restauration totale reconstruit le serveur comme il était au moment de la sauvegarde. Après la restauration l'hôte source est rebooté.
Lance une restauration totale depuis l'archive de sauvegarde [ARCHIVE] sur le serveur Affa (!) comme défini dans l'enregistrement JOB. Autrement dit, une fois terminée, le serveur de sauvegarde reboote comme un clone du serveur source. Assurez-vous d'avoir arrêté le serveur source avant de rebooter le serveur de sauvegardes, sinon l'interface réseau ne sera pas activée. Cela est important, lorsque vous lancez --rise à distance. La fonction --rise ne fonctionne qu'avec les serveurs SME 7 et ne devrait être utilisée que sur les serveurs de sauvegardes dédiés.
Cette fonction reconvertit en serveur de sauvegarde un serveur Affa préalablement converti en serveur de production. Après reboot, toutes les tâches configurées fonctionneront à nouveau.
Concatène et décompresse tous les fichiers découpés dans l'archive ARCHIVE de la tâche JOB pour rendre l'archive prête pour une restauration. Notez que l'archives la plus récente scheduled.0 n'est jamais découpée et donc qu'elle peut être restaurée telle quelle sans re-concaténation préalable.
Découpe et compresse tous les fichiers dont les noms correspondent à la propriété chunkFiles pour économiser l'espace disque. Cela ne devrait être utilisé que comme l'inverse de --unchunk-archive. Les découpages sont stockés en fichiers bzip2 dans un répertoire nommé FILENAME.affa-chunks avec 8 niveaux de profondeur.
Crée une archive tar gzippée FILE depuis l'ARCHIVE de la tâche JOB. Pendant la création la somme MD5 est calculée puis le fichier tar enregistré lui est comparé. L'archive par défaut est schedule.0 et le fichier FILE par défaut est ./smeserver.tg. La somme de contrôle est écrite dans FILE.md5sum.
Un fichier smeserver.tgz stocké sur un disque USB peut être utilisé pour restauration lors d'une nouvelle installation de SME Server.
Affiche un tableau de toutes les archives de la tâche JOB existantes, avec la date, le nombre de fichiers, la taille et l'espace disque utilisé.
Affa version 2.0.0-rc4 on affa1.mydomain.de (10.204.48.2) +------------------------------------------------------------------------------+ | Job: primmail | | Description: Mailserver Albstadt | | Directory: /var/affa/primmail/ | | Hostname: 10.204.144.2 | | Email: admin@mydomain.de | +-------+-----------------------+-----------+----------------+--------+--------+ | Run | Completion date | Exec Time | Files | Size | Recvd | +-------+-----------------------+-----------+----------------+--------+--------+ | M 9 | Sun 2008 Mar 02 06:11 | 0h29m47s | 679010 | 80GB | 60MB | | M 8 | Sun 2008 Mar 30 06:12 | 0h26m59s | 701683 | 83GB | 48MB | | M 7 | Sun 2008 Apr 27 06:16 | 0h28m01s | 731332 | 87GB | 47MB | | M 6 | Sun 2008 Jun 01 06:20 | 0h27m37s | 755529 | 90GB | 50MB | | M 5 | Sun 2008 Jun 29 06:24 | 0h28m39s | 800200 | 94GB | 52MB | | M 4 | Sun 2008 Jul 27 06:28 | 0h29m10s | 835398 | 99GB | 59MB | | M 3 | Sun 2008 Aug 31 06:34 | 0h34m53s | 869409 | 101GB | 65MB | | M 2 | Sun 2008 Sep 28 06:38 | 0h33m19s | 910889 | 106GB | 59MB | | M 1 | Sun 2008 Oct 26 06:42 | 0h38m41s | 932627 | 110GB | 61MB | | M 0 | Sun 2008 Nov 30 06:48 | 0h51m44s | 954090 | 116GB | 75MB | +-------+-----------------------+-----------+----------------+--------+--------+ | W 3 | Sun 2008 Dec 14 06:50 | 0h53m34s | 962267 | 118GB | 68MB | | W 2 | Sun 2008 Dec 21 06:52 | 0h53m11s | 974914 | 120GB | 69MB | | W 1 | Wed 2008 Dec 24 06:52 | 0h48m58s | 974536 | 120GB | 64MB | | W 0 | Sun 2008 Dec 28 06:58 | 0h39m01s | 977003 | 120GB | 61MB | +-------+-----------------------+-----------+----------------+--------+--------+ | D 6 | Tue 2008 Dec 30 06:52 | 0h54m45s | 976872 | 120GB | 77MB | | D 5 | Wed 2008 Dec 31 06:52 | 0h49m10s | 977764 | 120GB | 63MB | | D 4 | Thu 2009 Jan 01 06:28 | 0h28m09s | 977879 | 120GB | 60MB | | D 3 | Fri 2009 Jan 02 06:53 | 0h53m21s | 978144 | 120GB | 68MB | | D 2 | Sat 2009 Jan 03 06:53 | 0h53m15s | 978072 | 120GB | 60MB | | D 1 | Sun 2009 Jan 04 06:53 | 0h53m16s | 976478 | 120GB | 70MB | | D 0 | Mon 2009 Jan 05 06:52 | 0h52m42s | 977062 | 120GB | 61MB | +-------+-----------------------+-----------+----------------+--------+--------+ | S 1 | Mon 2009 Jan 05 17:57 | 0h27m48s | 976353 | 120GB | 98MB | | S 0 | Tue 2009 Jan 06 06:52 | 0h52m55s | 976539 | 120GB | 70MB | +-------+-----------------------+-----------+----------------+--------+--------+
Avec --csv, le tableau est généré selon un format séparé par des deux-points (:) lisible par les programmes.
Affiche un tableau de toutes les tâches actives (status enabled), avec l'heure de dernier et prochain lancement, la taille, l'espace disque utilisé par la plus récente archive, la date d'exécution du dernier lancement, et le nombre d'archives programmées (S), quotidiennes (D), hebdomadaires (W), mensuelles (M) et annuelles (Y). Le dernier lancement (colonne 'Last') affiche 'failed' si une tâche n'a pas été lancée dans les dernières 24h. Pour les tâches désactivées, 'Last' affiche toujours 'failed' au bout de 24 h. Pour voir la date et l'heure du dernier lancement de ces tâches, utilisez l'option --list-archives. La colonne 'Next' montre l'heure à laquelle le prochain lancement aura lieu, si 'Enabled' est à 'yes'.
Affa version 2.0.0-rc4 on backup.mydomain.de (10.204.48.2) +----------------+-----+-------+-----------+-------+-------+----------------+ | Job | ENA | Last | Exec Time | Next | Size | N of S,D,W,M,Y | +----------------+-----+-------+-----------+-------+-------+----------------+ | erp-alb-rsyncd | yes | 00:20 | 0h00m14s | 00:20 | 46MB | 1, 7, 4,10, 0 | | erp-fra-rsyncd | yes | 02:46 | 0h01m03s | 02:45 | 712MB | 1, 7, 4,10, 0 | | esxi-TS-W2K | yes | 00:37 | 4h22m08s | 20:15 | 60GB | 1, 7, 1, 0, 0 | | esxi-W2KR2 | yes | 02:22 | 3h52m09s | 22:30 | 40GB | 1, 7, 1, 0, 0 | | helpdesk | yes | 00:25 | 0h00m47s | 00:25 | 117MB | 1, 7, 4,10, 0 | | imageserv | yes | running (pid 16477) | 1, 7, 4,10, 0 | | intraweb | yes | 06:34 | 0h04m50s | 18:00 | 2.1GB | 2, 7, 4,10, 0 | | pdcalb | yes | 21:19 | 0h14m27s | 21:05 | 89GB | 1, 7, 4,10, 0 | | pdcfra | yes | 04:18 | 0h03m33s | 04:15 | 33GB | 1, 7, 4,10, 0 | | primmail | yes | 06:52 | 0h52m55s | 17:30 | 120GB | 2, 7, 4,10, 0 | | rayofhope | yes | 21:52 | 0h07m40s | 21:45 | 26GB | 1, 7, 4,10, 0 | | smecrmpg | yes | 22:35 | 0h00m21s | 22:35 | 70MB | 1, 7, 4,10, 0 | | sozserv | yes | 02:09 | 0h04m03s | 02:05 | 5.9GB | 1, 7, 4,10, 0 | | wiki | yes | 03:45 | 0h00m27s | 03:45 | 278MB | 1, 7, 4, 8, 0 | +----------------+-----+-------+-----------+-------+-------+----------------+ | az32share | no | - | 0h00m22s | 03:05 | 1.3GB | 1, 7, 4, 8, 0 | +----------------+-----+-------+-----------+-------+-------+----------------+
Avec --csv, le tableau est généré selon un format séparé par des deux-points (:) lisible par les programmes.
Affiche l'utilisation actuelle du disque pour les répertoires racine de tous les systèmes de fichiers.
Affa version 2.0.0-rc4 on backup2.mydomain.de (10.204.0.52) +------+--------+--------+----------------------------------------------------+ | Use% | Used | Avail | Root Dir | +------+--------+--------+----------------------------------------------------+ | 71% | 938GB | 365GB | /var/affa | | 20% | 194GB | 759GB | /mnt/affadev | +------+--------+--------+----------------------------------------------------+
Avec --csv, le tableau est généré selon un format séparé par des deux-points (:) lisible par les programmes.
Affiche un calendrier 'graphique' de toutes les tâches actives. La résolution est de 30 minutes. Un 'X' indique les heures de lancement programmés. La durée de la dernière exécution est marquée avec des '='.
Affa version 2.0.0-rc4 on backup.mydomain.de (10.204.48.2)
TIME 0:00 4:00 8:00 12:00 16:00 20:00
erp-alb-rsyncd X------- -------- -------- -------- -------- --------
helpdesk X------- -------- -------- -------- -------- --------
esxi-W2KR2 =====--- -------- -------- -------- -------- -----X==
esxi-TS-W2K ==------ -------- -------- -------- -------- X=======
imageserv ---X---- -------- -------- -------- -------- --------
sozserv ----X--- -------- -------- -------- -------- --------
erp-fra-rsyncd -----X-- -------- -------- -------- -------- --------
wiki -------X -------- -------- -------- -------- --------
pdcfra -------- X------- -------- -------- -------- --------
primmail -------- ----X=-- -------- -------- ---X---- --------
intraweb -------- -----X-- -------- -------- ----X--- --------
pdcalb -------- -------- -------- -------- -------- --X-----
rayofhope -------- -------- -------- -------- -------- ---X----
smecrmpg -------- -------- -------- -------- -------- -----X--
1 disabled jobs not listed. Use --all to display.
Envoie le tableau d'état, l'espace disque utilisé et la liste des archives de toutes les tâches à l'adresse email configurée dans l'enregistrement 'DefaultAffaConfig'. Cette commande est utilisée par la tâche cron 'affa status'.
Envoie un email de test aux adresses email configurées dans l'enregistrement de la tâche. Avec la propriété 'Watchdog' à 'yes', un email de test est envoyé depuis le serveur distant aussi. Utilisez cela pour vérifier que l'envoi des mails fonctionne.
Note : Par défaut, Affa n'envoie des messages qu'en cas d'erreur, jamais en cas de succès (voir la propriété 'chattyOnSuccess').
Après que vous ayez diminué le temps de conservation (scheduledKeep), les archives avec un indice plus élevé ne seront plus supprimées automatiquement et existeront toujours. Cette option trouve ces archives et les supprime.
Renomme la tâche JOB en NEWNAME, y compris tous les enregistrements de la base de données et les répertoires d'archive.
Déplace le répertoire d'archive de JOB vers NEWROOTDIR et ajuste la propriété RootDir. NEWROOTDIR doit être un chemin complet (full path) commençant par un slash. Comme le déplacement d'un système de fichiers à un autre (par exemple d'un disque USB à un disque local) n'est pas possible, Affa se sert dans ce cas d'une commande de copie et efface ensuite le répertoire source. Selon la taille de l'archive, la copie d'un système de fichiers à l'autre peut prendre longtemps.
Efface irréversiblement une tâche, y compris toutes les archives, la configuration et les bases de données attachées. En passant l'option '--revoke-key', la clé publique sur le serveur distant sera détruite.
Détruit la clé DSA publique sur le serveur distant.
L'option --revoke-key seule fonctionne sur SME Server comme serveur distant et pour les systèmes où les clés sont stockées dans /root/.ssh/authorized_keys2 Avec remoteOS=cygwin cela fonctionne pour les serveurs distants sous Cygwin/Windows.
Contrôle le login ssh pour toutes les tâches configurées. Pour les tâches pour lesquelles la clé publique n'avait pas encore été envoyée, il vous sera demandé le mot de passe et la clé sera envoyée ensuite.
Termine la tâche en cours JOB et tous les processus fils (les processus rsync).
Active un journal verbeux. Remplace la tâche et les configurations globales.
# affa --send-key JOBNAME
# affa --check-connections
# affa --show-schedule
# affa --make-cronjobs
# affa --status
Supposons que nous voulions sauvegarder les ibays 'staff1' et 'staff2' de notre serveur de production dont l'adresse IP WAN est 82.123.1.1 sur un serveur Affa déporté via internet, toutes les nuits à 2h30.
# cp /usr/lib/affa/jobconfig-sample.pl /root/ibay-staff-job.pl
my $jobname='ibay-staff';
et
'remoteHostName‘=>'82.123.1.1',
'TimeSchedule'=>'0230',
'SMEServer'=>'no',
'Include[0]'=>'/home/e-smith/files/ibays/staff1',
'Include[1]'=>'/home/e-smith/files/ibays/staff2',
# /root/ibay-staff-job.pl
# affa --send-key ibay-staff
# affa --list-archives ibay-staff
# affa --status
# ls /var/affa/ibay-staff
# ls /var/affa/ibay-staff
Vous avez deux sites connectés via un VPN et un serveur SME fonctionnant sur chaque site. Dans ce cas, vous n'avez pas besoin d'un serveur de sauvegarde Affa dédié. Les deux serveurs de production peuvent en plus agir chacun comme un serveur Affa sauvegardant le serveur de l'autre site. Installez simplement Affa et configurez une tâche qui sauvegarde l'autre serveur. Vous pouvez utiliser toutes les fonctionnalités Affa excepté la fonctionnalité rise.
En utilisant la fonctionnalité rise, le serveur devient n'importe lequel des systèmes sauvegardés, ce qui est moins utile dans ce scénario puisque cela vous donnerait une copie fonctionnelle du serveur de l'autre site lorsque celui-ci est en panne.
Pour obtenir une redondance et une restauration plus rapide, vous pouvez configurer une sauvegarde locale sur un disque USB externe ou sur un NAS.
Attention de ne pas sauvegarder à nouveau les archives de l'autre site. Configurez la propriété RootDir vers un chemin qui n'est pas inclu dans la liste de sauvegarde par défaut de SME. En laissant la propriété RootDir par défaut sur '/var/affa', cela est garanti.
Sauvegarder les données d'un système Windows nécessite que le démon Rsyncd Cygwin soit installé et configuré sous Windows. La procédure "rsync over ssh" ne fonctionne pas, puisque le processus rsync Cigwin se plante systématiquement après le transfert de quelques fichiers.
Installez la base Cygwin, le paquetage rsync puis configurez le service Rsyncd comme décrit dans ce document : Rsyncd setup on a windows computer for use with Affa backup.
L'installation du service sshd est optionnelle et n'est pas nécessaire pour la sauvegarde elle-même, mais avoir une connexion ssh peut être très utile pour l'administration et pour exécuter des scripts sur le système Windows. Affa supporte l'envoi de la clé publique vers un ordinateur Windows Cygwin pour une connexion sans mot de passe.
Affa ne sauvegarde pas l'information Windows Access Control List (ACL). Vous pourriez avoir à corriger les ACLs après une restauration.
Vous voulez sauvegarder les répertoires ''Mes Documents''des utilisateurs ''ssorglos'' et ''bsimpson'' depuis l'ordinateur Windows 'ws001' avec l'IP 192.168.1.65 sur votre serveur Affa 'affabox' avec l'IP 192.168.1.3.
# cp /usr/lib/affa/jobconfig-cygwin-sample.pl /root/ws001-mydocs-job.pl
my $jobname='ws001-mydocs';
'remoteHostName‘=>'192.168.1.65',
'rsyncdPassword'=>'secretword',
'Include[0]'=>'/c/Documents and Settings/ssorglos/My Documents/', # N'utilisez pas les backslashes dans les chemins !
'Include[1]'=>'/c/Documents and Settings/bsimpson/My Documents/',
# /root/ws001-mydocs-job.pl
# affa --run ws001-mydocs
Au cas où vous voudriez configurer manuellement en utilisant les commandes db, voici les paramètres obligatoires pour le mode Rsyncd Cygwin.
db affa setprop JOB rsyncdMode yes db affa setprop JOB rsyncdModule AFFA db affa setprop JOB rsyncdUser affa db affa setprop JOB rsyncdPassword ''secretword'' db affa setprop JOB SMEServer no db affa setprop JOB RPMCheck no db affa setprop JOB Watchdog no
Optionel pour une connexion ssh.
db affa setprop JOB remoteOS cygwin
On désire sauvegarder notre serveur SME 7 de production dont le nom d'hôte est 'prodbox' et l'IP 10.200.48.1 sur un système de fichiers monté plutôt que de configurer un serveur Affa dédié.
On dispose d'un serveur FREENAS dont l'adresse IP est 10.200.48.2 en fonction et avec le service NFS activé. Le disque est monté sur /mnt/affashare. On a autorisé l'adresse IP de notre serveur de production à accéder au partage /mnt/affashare.
/usr/bin/yum install --enablerepo=smecontribs smeserver-nfs
config setprop portmap status enabled
service portmap start
mkdir -p /mnt/affadevice
mount 10.200.48.2:/mnt/affashare /mnt/affadevice
# fdisk /dev/sdc
On trouvera probablement une partition dos vfat, qu'on devra d'abord détruire. Supposons que nous ayons créé une seule partition /dev/sdc1.# mkfs.ext3 /dev/sdc1
# mkdir -p /mnt/affadevice
/dev/sdc1 /mnt/affadevice ext3 defaults
# mount /mnt/affadevice
# df
# cp /usr/lib/affa/jobconfig-sample.pl /root/prodbox-job.pl
my $jobname='prodbox';
et
'remoteHostName‘=>'localhost',
'TimeSchedule'=>'1130,1530,1930',
'scheduledKeep'=>3,
'dailyKeep'=>7,
'weeklyKeep'=>5,
'monthlyKeep'=>12,
'yearlyKeep'=>1,
'RootDir=>'/mnt/affadevice',
# /root/prodbox-job.pl
# affa --run prodbox
Avec ce type de configuration, on ne peut pas utiliser la fonction 'rise' (conversion du serveur de sauvegarde en serveur de production), puisqu'elle nécessite que l'archive soit sur le même système de fichiers que le serveur. La fonction 'rise' utilise les hardlinks, qui ne fonctionnent pas entre systèmes de fichiers différents.
Avoir les archives de sauvegarde sur le même système de fichiers est toujours un risque, qui peut être minimisé en utilisant la fonction automount. Ainsi, le système de fichiers externe n'est monté que durant le déroulement d'une tâche.
Dans l'exemple NAS, configurez :
'AutomountDevice=>'10.200.48.2:/mnt/affashare',
'AutomountPoint =>'mnt/affadevice',
et sautez l'étape 2
Dans l'exemple du disque USB, configurez :
'AutomountDevice=>'/dev/sdc1',
'AutomountPoint =>'mnt/affadevice',
et sautez les étapes 5 à 8.
Le point de montage sera automatiquement créé, s'il n'existe pas. Pour accéder au répertoire de l'archive, vous devez le monter à la main.
Nous sommes le Mardi 6 Janvier 2009 quand l'utilisateur 'briedlin' vous demande de restaurer les messages de sa boite 'orders' qu'il a malencontreusement détruite Lundi.
# affa --list-archives primmail
voir la liste exemple dans le chapitre Utilisation et options de ligne de commande
# export RDIR=/home/e-smith/users/briedlin/Maildir/.orders/ # cette variable est utilisée pour raccourcir la ligne de commande suivante
# rsync -av /var/affa/primmail/daily.0/$RDIR 10.204.48.1:$RDIR
Si les serveurs sont configurés pour utiliser un port ssh différent, ex. 2222, à la place faites :
# export RDIR=/home/e-smith/users/briedlin/Maildir/.orders/ # cette variable est utilisée pour raccourcir la ligne de commande suivante
# rsync -av -e 'ssh -p 2222' /var/affa/primmail/daily.0/$RDIR 10.204.48.1:$RDIR
Un utilisateur a effacé le fichier orderform.pdf dans l'ibay 'docs' du serveur 10.204.48.1 et vous demande de le restaurer.
# export RFILE=/home/e-smith/files/ibays/docs/files/orderform.pdf # cette variable est
utilisée pour raccourcir la ligne de commande suivante
# rsync -av /var/affa/prodserv/weekly.1/$RFILE 10.204.48.1:$RFILE
Restaurer un fichier avec un caractère spécial dans le chemin
N'utilisez pas les variables shell pour raccourcir la commande. Cela compliquerait les choses plus que cela aiderait. Mettez entre guillemets les chemins source et destination. Dans le chemin de destination, echappez les caractères blancs avec un double backslash et les parenthèses avec un simple backslash. Sur le serveur de sauvegardes AFFA lancez :
# rsync -av "/var/affa/fileshare/daily.4/home/e-smith/files/ibays/mechfiles/files/Valve Control (Design Gr)/VALVE LIST FOR ISSUED.xls" "192.168.1.7:/home/e-smith/files/ibays/mechfiles/files/Valve\\ Control\\ \(Design\\ Gr\)/VALVE\\ LIST\\ FOR\\ ISSUED.xls"
Si les serveurs sont configurés pour utiliser un port ssh différent, ex. 2222, à la place faites :
# rsync -av -e 'ssh -p 2222' "/var/affa/fileshare/daily.4/home/e-smith/files/ibays/mechfiles/files/Valve Control (Design Gr)/VALVE LIST FOR ISSUED.xls" "192.168.1.7:/home/e-smith/files/ibays/mechfiles/files/Valve\\ Control\\ \(Design\\ Gr\)/VALVE\\ LIST\\ FOR\\ ISSUED.xls"
Pour lancer une restauration totale des utilisateurs et des données de configuration, lancez sur le serveur Affa :
# affa --full-restore <JOB> [<ARCHIVE>]
Cela synchroniste (par rsync) les données de la sauvegarde ARCHIVE vers l'ordinateur 'remoteHostname' défini dans la configuration de la tâche JOB.
Vous avez sauvegardé votre serveur de production 'prodsrv' par la tâche 'prodbox'. Pour restaurer la dernière sauvegarde, lancez :
# affa --full-restore prodbox
Pour restaurer une archive plus ancienne comme daily.2 lancez :
# affa --full-restore prodbox daily.2
Note importante : Une restauration complète reconstruit le serveur tel qu'il était lors de la sauvegarde. Cela signifie que les fichiers créés ou les modifications de configuration effectuées après la sauvegarde seront perdus. Une fois la restauration effectuée, le serveur restauré reboote automatiquement.
Reportez-vous à ce Howto.
Cette astuce vient de http://forums.contribs.org/index.php?topic=42412.0
Q) J'ai des sauvegardes complètes stockées sur un disque dur USB connecté sur notre serveur de sauvegarde Affa. J'ai besoin de restaurer une ancienne sauvegarde mensuelle de notre tâche "mailbackup" sur un serveur de tests à la place du système original. Si je le fais depuis le serveur de sauvegardes, je vois les instructions pour remonter ce serveur depuis la sauvegarde courante, mais je veux restaurer d'un état datant d'environ un mois, avant que d'étranges choses se soient passées. Et je veux le faire sur une machine qui n'est pas notre serveur de sauvegarde ni notre serveur de production. J'ai tenté d'imaginer comment faire, mais je suis perdu dans les options. Mon but est de faire quelques tests.
R) Sur votre serveur de tests, configurez une tâche "mailbackup" identique à celle de votre serveur de sauvegardes, mais paramétrez correctement RootDir en /var/affa et mettez la propriété "status" sur "disabled" Connectez le lecteur USB et copiez l'archive de la tâche "mailbackup" dans /var/affa. Ensuite, lancez affa --rise mailbackup ARCHIVE
Rappelez-vous qu'Affa place les scripts de configuration de tâches dans les répertoires d'archive. Dans votre cas, c'est mailbackup-setup.pl. Copiez-le sur votre serveur de tests, changez les propriétés RootDir et status, puis exécutez-le.
Avec SMEServer=no aucun.
Avec SMEServer=yes la liste par défaut des sauvegardes SME. La commande suivante affiche la liste :
# perl -e 'use esmith::Backup;$b=new esmith::Backup;print join("\n",$b->restore_list)."\n"'
Pour sauvegarder un serveur SME 6, mettez la propriété 'rsync--inplace' à 'no' et installez le paquetage perl-TimeDate sur la SME 6. Ce paquetage est requis par le script chien de garde lancé sur la SME 6. Utilisez le RPM de DAG : perl-TimeDate-1.16-0.rh73.dag.noarch.rpm
La fonction RPMCheck n'est pas utilisable.
Oui. Supposant que vous voulez sauvegarder tous les fichiers gif et jpg du répertoire /home/e-smith/files/ibays/pictures/files utilisez cette configuration
db affa setprop JOBNAME SMEServer no # Ne pas inclure les répertoires et fichiers par défaut de SME Server
db affa setprop JOBNAME Include[0] '/home/e-smith/files/ibays/pictures/files' # Commencer à chercher ici
db affa setprop JOBNAME Include[1] '*/' # Chercher récursivement dans l'arborescence
db affa setprop JOBNAME Include[2] '*.gif' # Copier les fichiers qui correspondent à ce profil
db affa setprop JOBNAME Include[3] '*.jpg'
db affa setprop JOBNAME Exclude[0] '*' # Exclure tous les autres
db affa setprop JOBNAME rsyncOptions '-m' # Ne pas créer les répertoires vides
Comment puis-je déplacer une archive de sauvegarde de mon serveur de production dans une agence distante vers le serveur Affa en utilisant un disque USB ? Je veux éviter de télécharger la première sauvegarde complète depuis internet.
Installez Affa sur votre serveur de production, connectez et montez le disque USB. Configurez une tâche pour enregistrer la sauvegarde sur le disque USB. Une fois la tâche exécutée, connectez le disque USB à votre serveur Affa et configurez la tâche de la même manière. Utilisez le script de configuration du répertoire d'archive. Vous n'avez à modifier que la propriété "remoteHostName". Maintenant, utilisez l'option --move-archive pour transférer l'archive sur le disque local. Si ce n'est pas déjà fait, envoyez la clé publique à votre serveur de production. C'est fait !
D'abord, vous devez configurer les transferts de port pour le service ssh sur votre pare-feu. Utilisez un port non standard, par ex. 2200->22, pour votre second serveur. Configurez une tâche sur votre serveur de sauvegarde Affa pour chacun de vos serveurs de production. Configurez la propriété sshPort=2200 pour votre second serveur.
Cela supprime le paquetage Affa installé, toutes les données de configuration et toutes les archives de sauvegarde.
Lancez les commandes suivantes pour chaque tâche :
# affa --revoke-key JOBNAME
# affa --delete-job JOBNAME
Verifiez que toutes les tâches ont été supprimées.
# affa --status
Suprimez le paquetage Affa
# rpm -e smeserver-affa
et, si ces paquetages ne sont pas des dépendances d'autres paquetages :
# rm -f /etc/cron.d/affa /etc/cron.d/affa-status
# rm -rf /home/e-smith/db/affa /home/e-smith/db/affa-report
# rm -rf /var/affa /var/log/affa
Affa est listé dans la section bugtracker de contribs. Merci d'y reporter tous bugs, demandes de nouvelles fonctionnalités et problèmes de documentation.
Pour les détails de performance, la liste des modifications etc. voyez Affa:Additional information
3 Avril 2009 : Mise à jour d'après le wiki pour la version 2.0 RC4
30 Octobre 2007 : Première version de la traduction.