Version d'archive

  • Ce site est en lecture seule. Certains liens dynamiques peuvent ne pas fonctionner correctement.

Le blog de Zergy

[Labo Rétro] Les SimCity

Seul mai(t)re à bord.

Description rapide

La séries des SimCity à donné naissance à divers jeux de gestions avec d'un coté les « SimCity » dans lesquels on construit, gère (et détruit) des villes et de l'autre, les « Sim's »   qui permet de gérer un famille lente et de se débarrasser de ses membres quand on en a assez (en leurs demandant de réparer le grille pain pendant la douche, par exemple).

Nous parlerons ici des quatre premiers jeux sortie, c'est à dire :

Mis à part SimCity Classic, les trois autres volets et leurs extensions sont encore payant, mais trouvable pour une bouchée de pain.

SimCity

Installation

Le code source du jeu ayant été rendu libre en 2011 et le jeu disponible depuis sous le nom de Micropolis, il ne vous est plus nécessaire de vous embêter à essayer de faire fonctionner la version originale. Seul les musiques seront sont absentes.

Version Java de Micropolis (ici sous Windows)

Pour installer la version libre, il vous suffit de vous rendre sur le site du projet Micropolis et de télécharger la version correspondant à votre système d'exploitation :

  • Pour Windows et MacOS X : Prenez la version Java, décompressez-la et double cliquez sur « micropolisj.jar » pour démarrer le jeu: Il vous faudra bien entendu avoir installé Java pour qu'il fonctionne.
  • Pour GNU/Linux : Micropolis étant libre, la version native GNU/Linux est disponible dans votre gestionnaire de paquets.

Si cette solution ne vous conviens pas, il vous reste possible de jouer à la version Super Nintendo de SimCity via un émulateur, la meilleure, selon moi. icon_wink

SimCity 2000

Installation

Cette version pose deux problèmes, premièrement, l'installateur utilise du code 16 bits, et ne fonctionne donc pas sous les Windows 64 bits, et, sous les versions de Windows supérieures à XP, le jeu plante lors du chargement ou de l'enregistrement d'une partie.

L'installation peut se faire sur un Windows 32 bit et être déployée sur un Windows 64 bits via une archive contenant les fichiers du répertoire d'installation et un fichier .reg pour enregistrer le jeu danse le registre de Windows, reste le problème des crashs.

Pour simplifier, je vous met à disposition une version française patchée, pour l'installer, faites comme suit :

  • Décompressez l’archive et placez le dossier « SimCity2000 » où bon vous semble, puis, entrez-y.
  • Modifiez le fichier « SC2K_x64_patch.req » avec un éditeur de textes. Adaptez-le à coup de « Rechercher-Remplacer » pour qu’il corresponde à l’emplacement que vous avez choisi pour le dossier « SimCity2000 ». N’oubliez pas que dans ce fichier, les chemins utilisent deux anti-slashes : « \\ ». De même, modifier les variables « Mayor Name » et « Company Name » à votre convenance.
  • Une fois ceci fait, exécutez le fichier « SC2K_x64_patch.req » pour inscrire ses informations au registre.
  • Il est recommandé de démarrer le jeu avec des droits d’administrateur pour pouvoir enregistrer sa partie (cliquer-droit sur « SIMCITY.EXE » → Onglet « Compatibilité » → « Exécuter ce programme avec les droits d'administrateur » → OK ).
SimCity2000 64 bits

It work !

Astuces

Le jeu utilisant des musiques en MIDI, il est possible de leurs donner un aspect moins casserolesque .

Téléchargement

Archive du jeu

Rendre le jeu compatible manuellement

Le fichier de registre

Le fichier de .reg permettant d'enregistrer dans le registre une version compressée du jeu est le suivant :

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Maxis]

[HKEY_CURRENT_USER\Software\Maxis\SimCity 2000]

[HKEY_CURRENT_USER\Software\Maxis\SimCity 2000\Localize]
"Language"="FRE"

[HKEY_CURRENT_USER\Software\Maxis\SimCity 2000\Options]
"Speed"=dword:00000000
"Sound"=dword:00000001
"Music"=dword:00000001
"AutoGoto"=dword:00000001
"AutoBudget"=dword:00000001
"Disasters"=dword:00000000
"AutoSave"=dword:00000000

[HKEY_CURRENT_USER\Software\Maxis\SimCity 2000\Paths]
"Home"="C:\\Program Files (x86)\\Maxis\\SimCity 2000"
"Graphics"="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\Bitmaps"
"Music"="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\Sounds"
"Data"="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\Data"
"Cities"="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\Cities"
"SaveGame"="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\Cities"
"TileSets"="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\ScurkArt"
"Scenarios"="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\Scenario"

[HKEY_CURRENT_USER\Software\Maxis\SimCity 2000\Registration]
"Mayor Name"="NomDuMaire"
"Company Name"="NomCompagnie"

[HKEY_CURRENT_USER\Software\Maxis\SimCity 2000\SCURK]
"CycleColors"=dword:00000001
"GridHeight"=dword:00000002
"GridWidth"=dword:00000002
"ShowClipRegion"=dword:00000000
"ShowDrawGrid"=dword:00000000
"SnapToGrid"=dword:00000000
"Sound"=dword:00000001

[HKEY_CURRENT_USER\Software\Maxis\SimCity 2000\Version]
"SimCity 2000"=dword:00000100
"SCURK"=dword:00000100

[HKEY_CURRENT_USER\Software\Maxis\SimCity 2000\Windows]
"Display"="8 1"
"Color Check"=dword:00000000
"Last Color Depth"=dword:00000020

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinScurk.exe]
@="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\WinScurk.exe"
"Path"="C:\\Program Files (x86)\\Maxis\\SimCity 2000"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\SimCity.exe]
"Path"="C:\\Program Files (x86)\\Maxis\\SimCity 2000"
@="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\SimCity.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Maxis\SimCity 2000® Collection CD]

[HKEY_LOCAL_MACHINE\SOFTWARE\Maxis\SimCity 2000® Collection CD\1.0]

[HKEY_CLASSES_ROOT\SimCity2000.Document.TileSet]
@="SimCity 2000 Graphics Set"

[HKEY_CLASSES_ROOT\SimCity2000.Document.TileSet\DefaultIcon]
@="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\WinScurk.exe,1"

[HKEY_CLASSES_ROOT\SimCity2000.Document.TileSet\shell]

[HKEY_CLASSES_ROOT\SimCity2000.Document.TileSet\shell\open]

[HKEY_CLASSES_ROOT\SimCity2000.Document.TileSet\shell\open\command]
@="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\WinScurk.exe %1"

[HKEY_CLASSES_ROOT\SimCity2000.Document.Scenario]
@="SimCity 2000 Scenario"

[HKEY_CLASSES_ROOT\SimCity2000.Document.Scenario\DefaultIcon]
@="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\SimCity.exe,2"

[HKEY_CLASSES_ROOT\SimCity2000.Document.Scenario\shell]

[HKEY_CLASSES_ROOT\SimCity2000.Document.Scenario\shell\open]

[HKEY_CLASSES_ROOT\SimCity2000.Document.Scenario\shell\open\command]
@="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\SimCity.exe %1"

[HKEY_CLASSES_ROOT\SimCity2000.Document.City]
@="SimCity 2000 City"

[HKEY_CLASSES_ROOT\SimCity2000.Document.City\DefaultIcon]
@="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\SimCity.exe,1"

[HKEY_CLASSES_ROOT\SimCity2000.Document.City\shell]

[HKEY_CLASSES_ROOT\SimCity2000.Document.City\shell\open]

[HKEY_CLASSES_ROOT\SimCity2000.Document.City\shell\open\command]
@="C:\\Program Files (x86)\\Maxis\\SimCity 2000\\SimCity.exe %1"

Il vous faudra modifier :

  • Les chemins d'accès (attention au double antislash)
  • Les variables « Mayor Name » et « Company Name » à votre convenance.
Patcher le jeu

Pour le problème de crach un patch existe 1 afin de modifier le fichier « SIMCITY.EXE », lui permettant de fonctionner correctement sur Windows Vista et supérieur, mais uniquement pour la version anglaise dudit fichier.

Comme j'avais du temps à perdre, j'ai testé ce patch et réussi à faire une version patchée entièrement française de la façon suivante :

  • Installer les versions française et anglaise de jeu cote à cote.
  • Patcher le fichier « SIMCITY.EXE » de la version anglaise pour obtenir un fichier « SIMCITY_EN_PATCHED.exe » qui est la version modifiée (patché) de l'exécutable :
C:\Program Files (x86)\SimCity2000EN>bspatch SIMCITY.exe SIMCITY_EN_PATCHED.exe SIMCITY.patch
  • Tester que la version anglaise fonctionne bien en la démarrant avec l'exécutable « SIMCITY_EN_PATCHED.exe » (ce devrait être le cas)
  • Copier le ficher « SIMCITY.EXE » de la version française (non patchée, donc) et le renommer en « SIMCITY_FR.EXE »
  • Ouvrir les fichiers « SIMCITY_EN_PATCHED.EXE » et « SIMCITY_FR.EXE » dans un éditeur de ressource ( Ressource Hacker dans mon cas)
    Traducion de l'exe

    Comme ça, ça fait peur, mais ce n'est pas bien compliqué. icon_wink

  • Copier coller le contenu des sections « Menu », « Dialog » et « String Table » de « SIMCITY_FR.EXE » vers « SIMCITY_EN_PATCHED.EXE »
  • Un fois ceci fois, enregistrer le fichier dans le répertoire d'installation de la version française en « SIMCITY_FR_PATCHED.EXE ».
  • Tester la version française avec l'exécutable patché, le jeu fonctionne correctement et est entièrement en fraçais. :)
  • Supprimer la version anglaise du jeu et renommer le fichier « SIMCITY_FR_PATCHED.EXE » en « SIMCITY.EXE »

SimCity 3000

Installation

Windows Vista et supérieur

Tout comme SimCity 2000, l'installateur de la version 3000 ne fonctionne pas sous les Windows 64 bits, utilisez un Windows 32 bits pour l'installer, puis, compressez le dossier d'installation du jeu, ensuite copier le fichier compressé sur votre ordinateur et décompressez-le où vous souhaiter installer le jeux.

Une fois ceci fait, créez un raccourci pour y jouer, cliquez-droit dessus et activez la compatibilité en mode « Windows XP ».

Mode compatibilité SimCity 3000

Choix du mode de compatibilité

GNU/Linux

Une version GNU/Linux de SimCity 3000 existe, portée par feu Loki Softwares . Cette version datant de 2000, elle utilise d'anciennes librairies logiciels et ne fonctionne plus d'office.

Pour l'installer, vous aurez besoin de :

Montez tout d'abord le CD-ROM ou l'image ISO du jeu dans « /media/cdrom », puis démarrez l'installateur :

# bash ./sc3u_2.0a-multilingual_x86.mojo.run

La fenêtre de l'installateur devrait apparaître, vous permettant de mettre en place le jeu.

Choix de l'emplacement, de la langue, et c'est bon. Smile

A noter que le CD-ROM n'est pas utile pour jouer, de plus cette version ne réclame pas de clef de licence.

Si vous n'avez pas de son, installez le paquet nécessaire à la rétrocompatibilité avec l'ancien système son OSS utilisé par le jeu. Sous les distributions Debian et dérivées (Ubuntu, Mint, Crunshbang, etc…), le paquet se nomme « alse-oss ».

# aptitude install alsa-oss

Afin de pouvoir enregistrer une partie sans démarrer le jeu en tant qu'utilisateur « root », il est conseillé d'ajouter les comptes utilisateurs y jouant au groupe « games » et de modifier les droits sur le dossier du jeu.

Par exemple, si vous avez installé le jeu dans « /opt/simcity3000/ » :

# adduser blabla games
# chgrp -R /opt/simcity3000
# chmod -R g+w /opt/simcity3000

Si vous avez du ajouter votre compte utilisateur au groupe « games », il vous faudra vous déconnecter et vous reconnecter.

Téléchargement

Installateur

SimCity 4

Installation

Aucun problème à signaler, l'installateur et le jeu fonctionnent correctement.

Astuce

Changer la résolution

SimCity 4 supporte quelques résolutions d'écran (jusqu'au 1600×1200 pixels), mais ne prend en compte que les résolution au format 4:3. Si vous jouez avec un écran au format 16:9 ou 16:10, il est possible d'imposer un résolution spécifique au jeu.

Pour cela, cliquez-droit sur le raccourci du jeu, et, dans l'onglet « Raccourci », ajoutez au champs « Cible » la suite de caractères suivant :

-CustomResolution:enabled -rRESXxRESYxCD -f -intro:off

Avec :

  • RESX : La résolution horizontale
  • RESY : La résolution verticale
  • CD : La profondeurs de couleurs (16 ou 32)

Par exemple, pour jouer en 1920×1200 avec des couleurs 32 bits, ajouter :

-CustomResolution:enabled -r1920x1200x32 -f -intro:off
Résolution SimCity 4

Choix de la résolution par modification de la cible du raccourci

1 Vous aurez besoin de télécharger bspatch pour patcher le jeu.

[Labo Rétro] Les Command & Conquer

For mother Russia !

Description rapide

La séries des Command & Conquer est une suite de jeux de stratégie en temps réel partagé en deux branche, avec, d'un coté la branche « Tiberium », opposant le GDI et le NOD dans un univers plus ou moins futuriste, et de l'autre la branche « Alerte Rouge » se faisant combattre Européens et Soviétiques dans un univers uchronique.

Nous parlerons ici des quatre premiers jeux sortie, c'est à dire :

Mis à part Alerte Rouge 2, les trois premiers volets et leurs extensions peuvent être gratuitement téléchargé.

Command & Conquer : Conflit du Tiberium

Installation

Le plus ancien et sans doute le plus embêtant à installer, premièrement, l'installation doit se faire avec la version Gold du jeu, l'installateur du jeu original ne fonctionnant que sous DOS, ensuite, l'installateur de cette version Gold ne fonctionne que sur les Windows 32 bits.
Le meilleur moyen est de l'installer sur un ordinateur ou une machine virtuelle disposant d'un Windows de ce type (un Windows 2000 ou XP fera l'affaire)

Une fois le jeu installé, appliquez le patch 1.06c crée par NyerGuds, celui-ci n'est certes pas officiel mais il mettra le jeu à jour et lui permettra sur les Windows les plus récents.

CC95Patch

Choix de la langue → Suivant → Suivant → Terminé

Une fois ceci fait, le jeu devrait fonctionner sans problème, pour le mettre en place sur votre Windows dernier cris (32 ou 64 bits), il vous suffit de compresser le dossier d'installation du jeu, de la faire passer sur votre ordinateur principal par clef USB, réseau local ou autre moyen et de le décompresser au bon endroit.

Gardez ce fichier compressé sous le bras, il vous évitera de refaire cette fastidieuse procédure la prochaine fois.

Astuces

Le jeu devrait normalement fonctionner d'office une fois installé, mode LAN inclus, cependant voici quelques trucs :

Jouer en mode fenêtré

L'installateur propose bien un mode haute résolution, mais après essai les tests n'ont pas été concluants chez moi. Si le mode plein écran en 640×480 ne vous satisfait pas, surtout sur les écrans LCD qui ne donnent pas de très bon résultats en résolutions non natives, vous pouvez jouer en mode fenêtré.

Pour ce faire, allez dans le répertoire d'installation du jeu, et éditez en tant qu'administrateur le fichier « ddraw.ini » et passez la variable « windowed » a « true », puis, enregistrez.

CC95

Jeu en mode fenêtré.

Téléchargement

Images CD

Patch

Command & Conquer : Alerte Rouge

Installation

L'astuce est simple, un internaute nommé FunkyFr3sh a créé un installateur qui va extraire les données des différents CD et les installer où il faut.

Une fois démarré et la langue choisie, il vous demandera dans quel lecteur se trouve l'un de CD du jeu d'origine. L'un ou l'autre des CD fonctionne, les images ISO également.
Indiquez le bon lecteur et cliquez sur « Suivant » pour continuer.

La suite est classique avec le choix de répertoire d'installation.

L'écran suivant vous permet de choisir divers options, parmi les plus importantes on retiendra :

  • La mise en place d'un système se permettant de se passer des CD du jeu.
  • La copie des données des extensions « Missions Taïga » (Counterstrike) et « Mission M.A.D » (Aftermatch) si vous possédez ces extensions.
  • L'installation de la langue choisie au début, du moins pour les textes.
Options d'installation

Comme indiqué, l'installateur met également en place un pack de cartes supplémentaires.

Si vous avez demandé à installer les extensions, l'installateur vous demandera où leurs CD ou images ISO se situent, un fois choisie, l'extraction des données débute et demande quelques minutes.

Un fois terminé, vous pourrez jouer. Smile

Testé avec succès avec le jeu en français et ses deux extensions. Notez que l'installateur en profite en même temps pour appliquer le dernier patch au jeu (version 3.03)

Astuces

Le jeu devrait normalement fonctionner d'office une fois installé, mode LAN inclus, cependant voici quelques trucs :

Jouer en mode fenêtré

L'astuce est exactement la même que pour Command & Conquer : Conflit du Tiberium.

Alerte Rouge en mode fenêtré

Même sanction que le premier C&C, à moteur de jeu identique, même résultat.

Résoudre les problèmes de son

Si vous rencontrez des problèmes avec le son, exécutez le script BAT « Settings.bat » se trouvant dans le répertoire d'installation, celui vous proposera d'y remédier.

Pour les problèmes sonores, appuyez sur 4. Smile

Ce script permet aussi de résoudre d'autres problèmes.

Téléchargement

Images CD

Patch

Command & Conquer : Soleil du Tiberium et Command & Conquer : Alerte Rouge 2

Installation

Ces deux épisode se mettent en place de la même façon.

Installer les jeux et leur extensions de la façon standard et patchez-les, une fois ceci fait, cliquez-droit sur les raccourcie permettant d'y jouer et activez la compatibilité en mode « Windows XP ».

RA2Compatibility

Choix de mode de rétrocompatibilité.

Astuce

Changer la résolution

Originellement créer pour fonctionner en 640×480 pixels, il est possible de les faire fonctionner en résolution supérieur facilement.

  • Démarrez le jeu au moins une fois. Puis, quittez-le.
  • Allez dans le dossier du jeu et éditez le fichier « SUN.INI » (pour Soleil de Tiberium) ou « RA2.INI » (pour Alerte Rouge 2)
  • Dans la section [Video] modifier ScreenWidth et ScreenHeight
[Video]
ScreenWidth=1920
ScreenHeight=1200
StretchMovies=no

C&C Soleil de Tiberium en 1920x1200 pixels, la zone visible est bien plus grande.

Jouer à C&C soleil de Tiberium sans CD

Une fois le jeu et son extension installé et patché, remplacez le fichier « Game.exe » se trouvant dans le répertoire d'installation du jeu par fourni plus bas, puis copier les fichiers suivants des CD ou ISO dans le répertoire d'installation.
CD GDI

  • maps01.mix
  • movies01.mix
  • multi.mix
  • sidecd01.mix
  • sizzle1.vqa

CD NOD

  • maps02.mix
  • movies02.mix
  • sidecd02.mix

Téléchargement

Images CD

Patchs

Clef CD

  • C&C Soleil de Tiberium : 010300-629787-381600-6249

Comment avoir un bon son MIDI sous Windows.

Pour que vos vieux jeux sonnent toujours juste.

Il fut un temps où les jeux-vidéos utilisaient le MIDI pour jouer de la musique, malheureusement, la plus-part des cartes-son intégrées ne disposent pas de synthétiseur MIDI matériel, et le synthétiseur logiciel de Windows a un son de casserole.

Voici comment y remédier.

Gérer le MIDI sous Windows Vista et 7

Si vous êtes sous Windows Vista ou 7, vous remarquerez qu'il n'est plus possible de gérer le MIDI via le panneau de configuration du son.

Pour remédier à cela, téléchargez Putzlowitschs Vista MIDI Mapper et installez-le en copiant le fichier PLWMidiMap.cpl dans :

  • C:\Windows\System32\ si vous êtes sous Windows Vista ou 7 32 bits.
  • C:\Windows\SysWOW64\ si vous êtes sous Windows Vista ou 7 64 bits.

Une fois la copie effectuée, vous devriez avoir une icône de ce type dans le panneau de configuration de Windows.

Icône de PLW MIDI Mapper

Icône de PLW MIDI Mapper dans le Panneau de configuration de Windows

Ne plus utiliser le synthétiseur logiciel de Windows

Le synthétiseur logiciel de Windows fonctionne sans efforts, mais est simpliste, pour avoir un meilleur son en MIDI, nous allons nous devoir nous passer de lui.

Nous opterons pour le pilote MIDI virtuel LoopBe1 , celui-ci vous permettra de remplacer celui de Windows. Téléchargez-le et installez-le, une fois ceci fait, une icône dans la zone de notification de Windows témoignera de son fonctionnement.

Revenez dans le Panneau de configuration et utilisez Putzlowitschs Vista-MIDIMapper (ou la gestion du son si vous êtes sous Windows XP) pour changer de synthétiseur MIDI et utiliser LoopBe1.

PLW MIDI Mapper

Adieu le synthétiseur pourri de Windows.

Cliquez sur « Appliquer » puis « OK » pour confirmer votre choix.

Nous nous sommes débarrassé du synthétiseur de Windows, mais le problème est que LoopBe1 ne sort aucun son si vous essayez de lire un fichier MIDI, celui-ci ne dispose en effet d'aucun fichier SoundFont pour la définition de ses instruments.

Pour choisir un SoundFont et le faire utiliser à LoopBe1, nous utiliserons un dernier programme, SynFonOne , comme toujours, téléchargez et installez, une seconde icône dans la zone de notification de la barre des tâche témoignera de son fonctionnement.

Démarrez SynFonOne via cette icône et cliquez sur « Options », vous aurez la fenêtre suivante :

Fenêtre d'options de SynFonOne

Fenêtre d'options de SynFonOne

Pour changer de fichier SoundFont, allez dans la zone « SoundFont File » et cliquez sur « Change », puis choisissez votre fichier.

Ajoutez un raccourcie vers SynFonOne dans le dossier « Démarrage » de tout les utilisateurs pour le démarrer avec Windows.

Cliquez sur « OK » pour sortir des options et sur « Hide » pour que SynFonOne disparaisse dans la zone de notification.

Choisir un bon SoundFont

Parmi les SoundFonts conseillés, citons Unison et Fluid R3, bien sûr, d'autres existent.

Bien entendu d'autres SoundFonts d'une qualité sans doute meilleure et tout aussi gratuits existent.

Notez que SynFonOne n'accepte que le format SoundFont décompressé (extension .SF2), si vous téléchargez un SoundFont compressé au format SfArk (extension .SFARK), vous pouvez le décompresser avec SfArk .

Et voila, une fois le SoundFont chargé dans SynFonOne, vos anciens jeux devraient sonner mieux.

2011 - IPocalypse

Il y a quelques jours, les derniers blocs d'adresses IP v4 ont été attribués. Avant de paniquer sur la fin d'internet, essayons d'y voir plus clair.

Introduction

Qu'est-ce qu'une adresse IP ?

Afin de communiquer sur un réseau, les ordinateurs et logiciels utilisent des protocoles et des normes, ceux-ci vont de la forme que doit avoir le connecteur de la carte réseau à la fréquence des ondes Wi-Fi en passant par la taille d'une requête et la façon d'envoyer des données.

Parmi ces protocoles de communication, l'un des plus utilisé est le protocole IP (pour « Internet Protocol »), celui-ci fait utilisation d'adresses dites IP afin que les équipements l'utilisant puissent se contacter, comme les adresses physiques permettant à une lettre d'arriver à destination.

Une adresse IP désigne donc un équipement sur un réseau informatique, celle-ci peux être assignée manuellement ou automatiquement par un service DHCP.

Quelle forme prennent-elles ?

Il existe actuellement deux protocoles IP, l'IP version 4 (ci-après « IP v4 ») et l'IP version 6 (ci-après « IP v6 »). Le premier à été créé au début des années 1980; le second date des années 2000.

Actuellement, IP v4 est encore très massivement utilisé, que ce soit sur internet ou sur votre réseau local si vous en avez un. Une adresse IP v4 est codée sur 32 bits et prend la forme suivante :

AAA.BBB.CCC.DDD

Où AAA, BBB, CCC et DDD peuvent varier de 0 à 255 (notation décimale de mots de 8 bits), on obtient donc 2 32 adresses possible en théorie, soit 4 294 967 296.

IP v6 est son successeur, en plus d'apporter de multiples améliorations, il modifie totalement le système d'adressage ; à présent les adresses sont codées sur 128 bits et prennent cette forme :

aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh

Où les blocs, séparés par le signe deux points « : », varient de 0 à ffff (notation hexadécimal de mots de 16 bits), on obtient 2 128 adresses possibles théoriquement, c'est à dire… heu… beaucoup. Smile

340 282 366 920 938 463 463 374 607 431 768 211 456 pour être plus précis.

Pour simplifier la notation d'une adresse IP v6, on a établi la méthode suivante, prenons l'IP v6 2001:0db8:0000:85a3:0000:0000:ac1f:8001 :

  • Il est permis d'omettre de 1 à 3 chiffres zéros non significatifs dans chaque groupe de 4 chiffres hexadécimaux, on obtient donc 2001:db8:0:85a3:0:0:ac1f:8001 ;
  • Une unique suite de un ou plusieurs groupes consécutifs de 16 bits tous nuls peut être omise, en conservant toutefois les signes deux points de chaque côté de la suite de chiffres omise, c'est-à-dire une paire de deux-points (::), on obtient donc 2001:db8:0:85a3::ac1f:8001.

CIDR doux ou brute ?

Dans la suite de cet article, j'utiliserai très souvent la notation dite CIDR. Celle-ci est une méthode de notation du masque de sous-réseau.

Un masque de sous réseau késako ? Il s'agit d'un masque binaire appliqué sur une adresse IP v4 ou IP v6 pour savoir si elle fait partie du même réseau qu'une autre. Ils font la séparation entre les bits de l'adresse IP qui désignent le réseau et ceux qui désignent les machines de ce réseau.

Prenons un exemple : Nous avons deux ordinateurs connectés physiquement au même réseau IP v4, ils utilisent les adresses IP v4 192.168.5.4 et 192.168.5.78 et utilisent tous deux le masque de sous-réseau 255.255.255.128.

Traduisons ces IP v4 en binaire :

IP v4 décimale PC1 : 192.168.5.4
Masque décimal PC1 : 255.255.255.128
IP v4 décimale PC2 : 192.168.5.78
Masque décimal PC2 : 255.255.255.128

IP v4 binaire PC1 :  11000000.10101000.00001001.00000100
Masque binaire PC1 : 11111111.11111111.11111111.10000000
IP v4 binaire PC2 :  11000000.10101000.00001001.01001110
Masque binaire PC2 : 11111111.11111111.11111111.10000000

Tout les bits d'adresse IP ayant le même poids qu'un bit de masque de sous-réseau à 1 est dit masqué et désigne le réseau, dans notre cas, nous avons donc les 25 premiers bits en partant du poids fort qui sont assignés au réseau, les 7 autres sont utilisés pour désigner les machines de ce réseau.

                      __________________________
                     /                          \
IP v4 binaire PC1 :  11000000.10101000.00001001.00000100
Masque binaire PC1 : 11111111.11111111.11111111.10000000
IP v4 binaire PC2 :  11000000.10101000.00001001.01001110
Masque binaire PC2 : 11111111.11111111.11111111.10000000
                     \__________________________/
                              Bits réseau

Les bits désignant le réseau doivent être identiques pour que les deux ordinateurs se voient comme faisant partie du même réseau. Dans notre exemple, c'est le cas. Smile

La notation CIDR est une forme raccourcie qui indique le nombre de bits du masque de sous-réseau d'une adresse IP qui sont assignés à la désignation du réseau. Dans notre exemple, la notation CIDR des adresses des ordinateurs PC1 et PC2 est :

  • PC1 : 192.168.5.4/25
  • PC2 : 192.168.5.78/25

Si en IP v4 la notation de masque de sous réseau décimal est très utilisée, elle a été abandonné en IP v6, non seulement parce qu'il n'y a plus de notation décimale en IP v6, mais aussi pour raccourcir la notation.

Pourquoi changer ?

Amélioration de performances

IP v6 apporte diverses améliorations comme la simplification des trames réseau qu'il utilise, l'intégration d'IPSEC qui était une fonctionnalités externe de IP v4 ou la possibilité de joindre une machine plutôt qu'une autre en fonction de ses meilleurs performances réseau (voir Anycast ) et la disparition pur et simple de la diffusion (ou broadcast).

Petit aparté sur les broadcast, anycast, multicast et tout :

  • Unicast : Un équipement d'un réseau discute avec un et un seul autre.
    Exemple IRL : Une discution avec un ami.
  • Multicast : Un équipement réseau parle à plusieurs autres, mais pas à tous. Il émet sur une adresse dite de multicast, tout ceux qui écoutent sur l'adresse multicast sur laquelle il émet recevront les données.
    Exemple IRL : un professeur dans une classe, écouté par une partie des élèves pendant que les autres dorment, discutent ou dessinent dans les marges de leur cahier.
  • Anycast : Un équipement parle avec celui apte à répondre à sa requête le plus efficacement. N'existe pas en IP v4.
    Exemple IRL : Quand vous demandez le sel (ou l'eau) à table, vous le demander à la personne qui va pouvoir vous le (la) passer le plus rapidement.
  • Broadcast : Un équipement réseau parle à tout les autres. N'existe plus en IP v6.
    Exemple IRL : À TAAAABLE !!!!
Vous avez besoin de plus de Gaz Vespene d'adresses IP !

Cependant, dans cet article, nous verrons d'avantage le second problème que IP v6 règle : Le manque d'adresses IP v4.

Évolution d'Internet

IP v4 à sec

Quand IP v4 à été créé dans les années 80, on pensait qu'il y aurait assez d'adresses pour tout le monde ; personne n'avait vraiment vu venir le succès du réseau Internet qui n'était réservé qu'aux universités et structures gouvernementales à l'époque. De plus, on ne pensait pas qu'arriverait un jour des hordes de téléphones portables pouvant s'y connecter.

Vous allez me dire que 4 milliard d'adresses devraient suffire, mais pour être franc, les 2 32 adresses ne sont que théoriques, certaines plages d'adresses ne sont pas utilisables sur Internet, voici lesquelles :

  • De 0.0.0.0 à 0.255.255.255 (0.0.0.0/8) : Réservé
  • De 10.0.0.0 à 10.255.255.255 (10.0.0.0/8) : Réseau privé de classe A
  • De 127.0.0.0 à 127.255.255.255 (127.0.0.0/8) : Adresses locales
  • De 169.254.0.0 à 169.254.255.255 (169.254.0.0/16) : Adresse locales autoconfigurées
  • De 172.16.0.0 à 172.16.255.255 (172.16.0.0/16) : Réseau privé de classe B
  • De 192.0.0.0 à 192.0.0.255 (192.0.0.0/24) : Réservé par l'IETF
  • De 192.0.2.0 à 192.0.2.255 (192.0.2.0/24) : Réseau de test TEST-NET-1
  • De 192.18.0.0 à 192.18.128.255 (198.18.0.0/15) : Tests de performance
  • De 192.51.100.0 à 192.51.100.255 (198.51.100.0/24) : Réseau de test TEST-NET-2
  • De 192.88.99.0 à 192.88.99.255 (192.88.99.0/24) : 6to4 anycast
  • De 192.168.0.0 à 192.168.255.255 (192.168.0.0/16) : Réseau privé de classe C
  • De 203.0.113.0 à 203.0.113.255 (203.0.113.0/24) : Réseau de test TEST-NET-3
  • De 224.0.0.0 à 239.255.255.255 (224.0.0.0/4) : Adresses multicast
  • De 240.0.0.0 à 255.255.255.255 (240.0.0.0/4) : Réservé à un usage ultérieur
  • 255.255.255.255 : Broadcast

Bref, seules 3 707 435 775 adresses sont réellement utilisables.

Comment sont attribués les adresses IP sur internet ?

Il fût un temps, il suffisait de faire une demande pour se voir attribuer une grosse plage d'adresse d'adresses, regarder la cartographie des adresse IP v4 (carte de 2006) vous montrera que nombre de gros emplacements ont été attribués directement à des entreprises ou à des administrations des États-Unis. Cela date des années 1980, quand on ne pensait pas en voir le bout.

Répartition IPv4

Répartition des adresses IPv4 par RIR

Cependant, avec le temps, on s'est rendu compte qu'on ne pourrait pas continuer à gaspiller ainsi et on s'est mis à rationaliser, ceci à mené à la création de l' IANA au niveau mondial et de divers bureaux d'attribution au niveau continental et national nommés Registre Internet Régionaux (ci-après « RIR »).

  • AfriNIC : Afrique
  • APNIC : Asie et Pacifique
  • ARIN : Amérique du Nord
  • LACNIC : Amérique Latine et Caraïbes
  • RIPE-NCC : Europe, Russie et Moyen-Orient.

Actuellement, les plages d'adresses IP, qu'elles soient en v4 ou en v6, sont détenues par l'IANA, elles sont ensuite fournies aux RIR continentaux en fonction de leurs besoins. Une fois entre les mains des RIR continentaux, elles sont fournies aux RIR nationaux, puis enfin, aux entreprises, ou administrations.

Internet va-t-il tomber en panne demain ?

Épuisement IPv4

Plages IP v4 en réserve, en rouge les réserves de l'IANA, en vert, celles des RIR.

En abscisse le temps en année, en ordonnée les plages IP v4 par bloc de 16 777 216 adresses.

Non, tout simplement car les adresses IP ne sont pas du pétrole , même s'il n'y en a plus en réserve, elles ne s'usent pas, de la même façon, il est possible de remettre dans le pot commun les plages d'adresses non utilisées. Enfin, si l'IANA n'a plus une adresse IP v4 en réserve, les RIR en disposent encore un peu par effet de transmission.

Au pire, Internet aura du mal à croître

Mais heureusement, si vous avez suivi, IP v6 va pouvoir prendre la relève et supprimer ce petit problème. Smile

Malheureusement, le changement ne se fera pas d'un claquement de doigt, nombre d'entreprises et de Fournisseurs d'Accès à Internet (ci-après « FAI ») ont traîné les pieds pour y passer, et puisque c'est au pied du mur que l'on voit mieux le mur, peut-être le tarissement des adresses IP v4 au niveau de l'IANA va les pousser à se rendre compatibles IP v6 en vitesse .

2 128 IP v6 et moi et moi et moi…

Oui mais…

Avant tout, répondons à quelques bêtises que l'on trouve régulièrement.

Si je passe à IP v6, je ne pourrai plus accéder aux serveurs qui sont uniquement IP v4.

C'est faux, il est possible d'avoir ce que l'on appel une double pile IP, c'est-à-dire que votre carte réseau aura à la fois une adresse IP v4 et une adresse IP v6, par exemple, voici ce que ça donne chez le FAI auquel je suis abonné .

Sous GNU/Linux

ppp0    Link encap: Protocole Point-à-Point
        inet adr:80.67.176.144 P-t-P:62.4.16.41 Masque:255.255.255.255
        adr inet6: fe80::5043:b090:0:0/10 Scope:Lien
        adr inet6: 2001:910:1090::1/64 Scope:Global
        […]

Sous Microsoft Windows

Carte Ethernet Marvell Yukon 88E8001 Gigabit Ethernet :

        Suffixe DNS propre à la connexion : zergy.lan
        Adresse IP : 192.168.2.2
        Masque de sous-réseau : 255.255.255.0
        Adresse IP : 2001:910:1090:2:c03:256d:9235:62e3
        […]

On voit bien ici que les connexions disposent d'une adresse IP v4 (192.168.2.*) et d'une adresse IP v6 (2001:910:1090:*)

Les connectivités IP v4 et IP v6 sont utilisées selon les besoins.

Les adresses IP v6 en fe80:* sont des adresses de liens locaux, j'y reviendrai par la suite.

IP v6 permet moins d'anonymat que IP v4

On entend souvent cette bêtise à propos de deux choses :

OOo_Firewall

Les systèmes de Translation d'Adresses et Port Réseaux, aussi nommée PAT/NAT, sont un placébo trouvé vers la fin des années 1990 pour permettre à plusieurs ordinateurs d'un réseau local (adresses IP v4 de classes A, B ou C) d'être connecté à Internet avec une seule IP v4 publique.

Certains prêtent à ce système une sécurité puisque les machines à l'intérieur du réseau local ne sont pas directement joignables depuis Internet puisqu'on ne dispose que d'une IP publique.

Cependant, en IP v6, s'il est vrai que tous vos équipement auront une adresse IP v6 publique, les murs de feu de ces machines seront là pour bloquer les attaques, et n'oublions pas qu'un système de PAT/NAT n'empêche pas de se prendre des tuiles, la première faille dans un système informatique étant bien souvent l'utilisateur.

Mais réjouissons-nous, avec la disparition du PAT/NAT fini la redirection de port nécessaire pour jouer correctement. Smile

Pour le problème de l'adresse MAC dans l'adresse IP v6 publique, c'est vrai si l'adresse est réglée automatiquement, et faux si vous la réglez à la main. Et vu qu'en IP v6 votre FAI vous donne gracieusement une plage d'adresses IP, à vous de choisir celle qui vous convient.

Comme les FAI fournissent des plages d'adresses IP v6, on aura encore le même problème

La plage des IP v6 utilisables sur internet vont de 2000:0000:0000:0000:0000:0000:0000:0000 à 9fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff, c'est-à-dire :

  • 1,40737488355327 × 10 14 (140 737 488 355 327) plages en /48
  • 3,6028797018963967 × 10 16 (36 028 797 018 963 967) plages en /56
  • 9,223372036854775807 × 10 18 (9 223 372 036 854 775 807) plages en /64

Que vérifier pour passer à IP v6 chez soit ?

On prend ici le fait que vous souhaitez juste vérifier que vous pouvez vous connecter au réseau Internet en IP v6, il vous faut :

  • Un FAI offrant une connectivité IP v6.
  • Du matériel réseau offrant une connectivité IP v6.
  • Un système d'exploitation avec pile réseau IP v6.
Le FAI

Actuellement, en France, les quatre FAI suivants sont compatibles IP v6 :

  • FDN offre des plages IP v6 en /48 sur demande depuis le 22 septembre 2009, d'office depuis juillet 2011.
  • Free (et donc Alice par la force des choses) offre des plages IP v6 en /61 depuis 2007.
  • Nerim offre des plages IP v6 en /48.
  • Numéricâble semble disposer d'IP v6 depuis 2012.
  • OVH offre des plages IP v6 en /56 depuis mi 2012.
  • SFR offre des plages IP v6 en /64 depuis fin août 2011.

Pour les autres :

  • Orange à rendu les dernières Livebox compatible. Le passage est prévu pour 2014 ou 2015. A noter qu'ils ont fait des essais en 2006, mais depuis, silence radio.
  • Bouygues Telecom avait prévu le passage à fin 2012, mai l'a finalement repoussé.
Le matériel réseau

Les matériels réseaux devant être vérifié pour le passage à IP v6 sont votre routeur -généralement la *box de votre FAI- et votre point d'accès Wifi si celui-ci est un élément à part du routeur.

Si vous utilisez votre *box en mode « Bridge » (mode simple modem ADSL) ou que vous n'avez qu'un simple modem (ADSL ou RTC) pour vous connecter, vous n'êtes pas concerné par cette section, en effet un modem utilise les protocoles PPP et ATM, et n'est donc pas concerné par des problèmes d'IP v4 ou IP v6.

C'est à l'équipement se trouvant derrière de faire la connectivité IP.

Aujourd'hui encore, bon nombre de modems-routeur ou routeurs grand public n'offrent pas de connectivité IP v6, faites attention lors de vos achats.

Pour ce qui est des box des FAI :

  • Freebox et Alicebox : Allez dans l'interface de gestion pour activer la compatibilité IP v6 puis redémarrez-la
  • FDN : Consultez le Wiki de FDN
  • Neufbox : Il vous faut le firmware 3.1.7 au minimum. De là, allez dans l'interface de gestion de votre Neufbox → onglet « Réseau » → « WAN », puis, activez l'option IP v6 et redémarrez votre Neufbox.

Pour tous les équipements et FAI, consultez la documentation fournie et mettez le micro-logiciel (firmware) à jour si besoin.

Le système d'exploitation

Les systèmes d'exploitation récents sont compatibles avec IPv6, par récent on entend :

  • GNU/Linux avec noyau 2.2 ou plus récent, nous sommes au 2.6 depuis 2003.
  • Microsoft Windows XP SP2 ou plus récent
  • Les *BSD et MacOSX sont bien entendu compatibles, mais je ne trouve pas depuis quand.

Quelque soit votre système d'exploitation, le support d'IP v6 doit être activé par défaut, sauf sur Windows XP, voici comment faire pour celui-ci :

  • Panneau de configuration → Connexions réseaux → Clic droit sur l'une des connexion → Sélectionnez « Propriétés » ;
  • Cliquez sur le bouton « Propriété » → Sélectionnez « Réseau » ;
  • Sélectionnez « Microsoft TCP/IP version 6 » ;
  • Cliquez sur « OK » → « OK » → « OK » ;
  • Windows vous demandera de redémarrez pour appliquer les modifications, faites-le.

Tester

Connectez-vous à un site de test , il en existe d' autres .

Les adresses IP v6 que vous utiliserez

Si en IP v4 votre FAI ne vous fournissait qu'une seule et unique adresse IP, en IP v6 vous avez droit à une plage complète, généralement, on vous attribue un /64, certains FAI comme FDN fournissent un /48.

Le problème étant de trouver moyen d'utiliser ces 2 64 (ou 2 72 , ou 2 80 ) adresses. sourire3

Mais outre la plage d'adresse IP v6 publique que vous fournit votre FAI, vous en trouverez d'autres, décrivons-les rapidement :

  • De :: à :ffff:ffff:ffff:ffff:ffff:ffff:ffff (::/8) : Réservé.
  • De 2002:: à 2002::ffff:ffff:ffff:ffff (2002::/64) : Réservé au mécanisme 6to4, il s'agit bien d'adresses publiques, donc, trouvable sur internet, mais non attribuables par votre FAI.
  • De fc00:: à fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff (fc00::/7) : Adresses locales uniques pour les réseaux locaux, non routables sur Internet. Permet par exemple de ne pas rendre disponible hors de son réseau domestique un service de partage de fichiers.
  • De fe80:: à febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff (fe80/10) : Adresses de liens locaux, propres à chaque interface et utilisées pour certaines fonctions du protocole IP v6.
  • De ff00:: à ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff (ff00::/8) Adresses multicast.

Savoir si un serveur utilise IP v6

A présent que votre connectivité IP v6 à Internet est en place, vous pouvez tester si un serveur quelconque est lui aussi compatible, pour cela, il suffit d'avoir quelques petits outils.

Via votre navigateur

Si vous utilisez le navigateur internet Mozilla Firefox, il existe l'extension « SixOrNot » qui vous indiquera si le serveur du site que vous visitez peut être joint en IP v6.

Extension SixOrNot pour Mozilla Firefox

SixOrNot permet facilement de connaître la compatibilité IP v6 d'un site.

Via la ligne de commande

Ceux-ci n'étant pas installés de base sous Microsoft Windows voici la procédure pour les mettre en place :

Installation des outils
  • Déjà, téléchargez-les .
  • Décompressez le fichier .zip dans « C:\dig » (ou tout autre dossier de votre choix)
  • Copiez le fichier « resolv.conf » de ce dossier dans « C:\WINDOWS\system32\drivers\etc\ »

Il faut ensuite ajouter le dossier d'installation à la variable PATH du système, pour plus facilement les utiliser.

dig_path

Ajout du dossier de dig au PATH

Sous Windows XP et 2003 :

  • Clic droit sur « Poste de travail » → « Propriétés » → Onglet « Avancé » → Bouton « Variables d'environnement »
  • Dans la zone « Variables systèmes » choisir la ligne « Path » → Bouton « Modifier »
  • Dans la zone « Valeur de la variable » ajoutez « C:\dig; »
  • Cliquez sur « OK » → « OK » → « OK »

Sous Windows Vista et 7 :

  • Clic droit sur « Ordinateur » → « Propriétés » → « Option avancées » → Onglet « Avancé » → Bouton « Variables d'environnement »
  • Dans la zone « Variables systèmes » choisir la ligne « Path » → Bouton « Modifier »
  • Dans la zone « Valeur de la variable » ajoutez « C:\dig; »
  • Cliquez sur « OK » → « OK » → « OK »
Utilisation

Nous allons ici uniquement utiliser la commande « host » pour interroger un serveur DNS (ceux qui traduisent les adresses IP en nom intelligible et vice-versa) afin de savoir si un serveur dispose d'une IP v6. D'autres commandes comme « dig » sont fournies par ces outils mais ne sont pas décrites ici.

L'utilisation est très simple, il suffit d'ouvrir une invite de commande et de taper la commande :

host nomDuServeur

Exemple avec une machine compatible IP v6 :

host www.zergy.net

www.zergy.net is an alias for enalys.zergy.net.
enalys.zergy.net has address 80.67.176.144
enalys.zergy.net has IPv6 address 2001:910:1090:2::1

La commande nous répond que www.zergy.net est un surnom du serveur enalys.zergy.net et que l'adresse IP v4 ce celui-ci est 80.67.176.144.

Cependant, la réponse nous indique également que enalys.zergy.net dispose d'une adresse IP v6 qui est 2001:910:1090:2::1.

Exemple avec une machine non compatible IP v6 :

host www.aeriesguard.com

www.aeriesguard.com is an alias for aeriesguard.com.
aeriesguard.com has address 78.41.233.87
aeriesguard.com mail is handled by 30 mx2.celeonet.com.
aeriesguard.com mail is handled by 25 mx3-cl.celeonet.fr.

La commande nous répond que www.aeriesguard.com est un surnom du serveur aeriesguard.com et que l'adresse IP v4 ce celui-ci est 78.41.233.87.

Les autres lignes indiquent quels sont les serveurs de messagerie utilisés par le domaine aeriesguard.com, rien ne concerne une quelconque compatibilité IP v6. icon_frown

Ertaï, il va falloir arranger ça ! icon_lol

Bonus

Merci à Ertaï pour les corrections.

Sauvegarder automatiquement ses bases MySQL

Les sauvegardes de base de données ne sont pas toujours simple à effectuer, voici un petit script qui vous mâchera le travail.

S'il est possible de sauvegarder les bases de données de MySQL en se contentant de copier les fichiers contenant les bases, cette méthode est crado et peut se solder par un échec cuisant.
Il est largement recommandé d'utiliser l'utilitaire mysqldump pour cette tâche, cependant, l'utiliser manuellement pour sauvegarder les bases de données une à une n'est pas agréable, un oubli ou une mauvaise manipulation est vite arrivée.

Voici donc un petit script à utiliser avec cron pour sauvegarder toutes vos bases de données MySQL automatiquement.

A modifier selon votre convenance, attention, les droits de root sont nécessaires.

La présence du mot de passe root de MySQL dans ce fichier demande de mettre les droits les plus restrictifs possible.

#! /bin/sh -e

################################################################################
#                                                                              #
# LICENCE                                                                      #
#                                                                              #
# This program is free software: you can redistribute it and/or modify it      #
# under the terms of the GNU General Public License as published by the Free   #
# Software Foundation, either version 3 of the License, or (at your option)    #
# any later version.                                                           #
#                                                                              #
# This program is distributed in the hope that it will be useful, but WITHOUT  #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or        #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for     #
# more details.                                                                #
#                                                                              #
# You should have received a copy of the GNU General Public License along with #
# this program.  If not, see <http://www.gnu.org/licenses/>.                   #
#                                                                              #
################################################################################

################################################################################
#                                                                              #
# DESCRIPTION                                                                  #
#                                                                              #
# Ce script sauvegarde automatiquement les bases de données MySQL/MariaDB en   #
# utilisant la sauvegarde par base.                                            #
#                                                                              #
#                                                                              #
# VARIABLES                                                                    #
#                                                                              #
# - DATE : Date du jour, utilisé pour le dossier de sauvegarde des bases de    #
#   données à sauvegarder.                                                     #
# - MYSQLROOT : Nom de l'administrateur du système de gestion de bases de      #
#   données, root par défaut.                                                  #
# - MYSQLPASSWD : Mot de passe de l'administrateur du système de gestion de    #
#   base de données.                                                           #
# - BACKUP_DIR : Emplacement du répertoire de base pour les sauvegarde, un     #
#   sous-répertoire portant pour nom la variable date sera crée pour contenir  #
#   les sauvegarde du jour.                                                    #
# - LOG_FILE : Fichier utilisé pour la journalisation.                         #
# - LOG_FILE_DATE : Date de journalisation.                                    #
# - RETENTION : Temps de rétention des sauvegardes.                            #
# - MYSQLDUMP_OPTS : Options utilisées par la commande mysqldump.              #
#                                                                              #
#                                                                              #
# FONCTIONS                                                                    #
#                                                                              #
# - logDate() : Ajoute la date aux messages de journalisation.                 #
# - createLog() : Créer un fichier de journalisation et lui donne les droits   #
#   corrects s'il n'existe pas.                                                #
# - createBackupDir() : Vérifie l'existance du répertoire utilisé par les      #
#   sauvegardes du jour, le crée et lui donne les authorisations correctes le  #
#   cas échéant. Voir les variables BACKUP_DIR et DATE.                        #
#   Quitte et retourne l'état de sortie 1 si le dossier n'existe pas et ne     #
#   peut être crée.                                                            #
# - backupPurge() : Utilise la commande tmpreaper pour suprimmer dans le       #
#   dossier de base des sauvegardes -tel que défini par la variable            #
#   BACKUP_DIR- celles dont l'âge est supérieur à celui défini dans la         #
#   variable RETENTION.                                                        #
#   Quitte et retourne l'état de sortie 2 si les sauvegardes les plus          #
#   anciennes ne peuvent être supprimées.                                      #
# - listDB() : Cette fonction liste les bases de données présentes avec la     #
#   commande mysql pour lister les bases de données présentent dans le système #
#   de base de données que l'on souhaite sauvegarder.                          #
#   Quitte et retourne l'état de sortie 3 si les bases de données ne peuvent   #
#   êtres listées                                                              #
#   Quitte et retourne l'état de sortie 4 si aucunes bases de données          #
#   n'existe.                                                                  #
# - backupDB() : Supprime les sauvegardes présente dans le dossier du jour     #
#   s'ils en existes puis utilise mysql afin de sauvegarder les bases de       #
#   données du système de gestion de base de données que l'on souhaite         #
#   sauvegarder.                                                               #
#   Il est possible de spécifier des options à la commande de sauvegarde via   #
#   la variables MYSQLDUMP_OPTS.                                               #
#   Quitte est retourne l'état de sortie 5 si une erreur se produit lors des   #
#   sauvegardes.                                                               #
# - backupCheck() : Cette fonction effectue un test afin de savoir si les      #
#   sauvegardes se sont bien déroulées. Elle vérifie via la commande find      #
#   couplé à la commande wc -l la présence de fichier dans le répertoire de    #
#   sauvegarde du jour, si le résultat de cette commande est est plus grand    #
#   que 0, elle utilise la commande du -ks si la taille totales des fichiers   #
#   sauvegardé est supérieur à quatre kibi-octects, 4 kio étant la taille d'un #
#   dossier vide ou contenant des fichiers de taille nulle.                    #
#   Quitte et retourne l'état de sortie 6 si aucune sauvegarde n'a put être    #
#   effectuée ou si la taille des sauvegardes est nulle.                       #
#                                                                              #
#                                                                              #
# AUTEUR(S)                                                                    #
#                                                                              #
# - Collyer Cédric <collyer.cedric@zergy.net>                                  #
#                                                                              #
#                                                                              #
# DERNIER(S) CHANGEMENT(S) :                                                   #
#                                                                              #
# - 23/10/2010 : Création du script et écriture de la documentation.           #
# - 21/02/2011 : Ajout de la suppression des répertoires vides dans la         #
#   fonction BackupPurge().                                                    #
# - 24/10/2011 : Abandon du GZ, compression des dump en XZ.                    #
# - 25/10/2011 : Mise au format ISO.                                           #
#                                                                              #
################################################################################

# Initialisation de variables
DATE="$(date '+%Y%m%d')";
MYSQLROOT="root";
MYSQLPASSWD="XXXXXXXX";

BACKUP_DIR="/home/shares/sauvegardes/MySQL";
LOG_FILE="/var/log/mysql-dump.log";
RETENTION="7d";

SHELL="/bin/sh";
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin";

MYSQLDUMP_OPTS="--routines --skip-lock-tables --events";

# Routine d'horodatage des logs
logDate() {
        LOG_FILE_DATE="$(date +'%d/%m/%Y %H:%M')";
}

# Mise en place des journaux.
createLog () {
        if [ ! -f "$LOG_FILE" ]; then
                touch "$LOG_FILE";
                chown mysql "$LOG_FILE";
                chgrp adm "$LOG_FILE";
                chmod 640 "$LOG_FILE";
        fi
}

# Mise en place des répertoires.
createBackupDir () {
        if [ ! -d "$BACKUP_DIR/$DATE" ]; then
                mkdir -p "$BACKUP_DIR/$DATE";
                if [ $? != 0 ]; then
                        logDate;
                        echo "$LOG_FILE_DATE : Impossible de créer le dossier \
de sauvegarde." >> "$LOG_FILE";
                        exit 1;
                fi
                chown root "$BACKUP_DIR/$DATE";
                chgrp staff "$BACKUP_DIR/$DATE";
                chmod 770 "$BACKUP_DIR/$DATE";
        fi
}

# Purge des ancienne sauvegardes.
# Utilisation TMPReaper pour supprimer les sauvegardes vielles de plus de 8
# jours (cf $RETENTION pour changer)
backupPurge() {
        tmpreaper "$RETENTION" "$BACKUP_DIR";
        if [ $? != "0" ]; then
                logDate;
                echo "$LOG_FILE_DATE : Impossible de purger les anciennes \
sauvegardes." >> "$LOG_FILE";
                exit 2;
        fi
        for olddir in $(ls "$BACKUP_DIR"); do
                if [ "$(du -ks $BACKUP_DIR/$olddir | awk {'print $1'})" -eq 4 ]
                then
                        rmdir "$BACKUP_DIR/$olddir";
                fi
        done
}

# Listage des bases de données.
listDB() {
        BASE_LIST="$(mysql --user=$MYSQLROOT --password=$MYSQLPASSWD \
--batch --skip-column-names --execute='SHOW DATABASES;')";
        if [ $? != "0" ]; then
                logDate;
                echo "$LOG_FILE_DATE : Erreur dans la commande de sauvegarde." \
>> "$LOG_FILE";
                exit 3;
        fi
        if [ "$BASE_LIST" = "" ]; then
                logDate;
                echo "$LOG_FILE_DATE : Aucune base présente." >> "$LOG_FILE";
                exit 4;
        fi
}

# Sauvegarde des BDD.
backupDB() {
        for db in $BASE_LIST; do
                if [ -f "$BACKUP_DIR/$DATE/$db.sql.xz" ]; then
                        rm -f "$BACKUP_DIR/$DATE/$db.sql.xz";
                fi
                mysqldump $MYSQLDUMP_OPTS --user="$MYSQLROOT" \
--password="$MYSQLPASSWD" "$db" 2>> "$LOG_FILE" | xz -c\
> "$BACKUP_DIR/$DATE/$db.sql.xz";
                if [ $? -ne "0" ]; then
                        logDate;
                        echo "$LOG_FILE_DATE : Attention erreur dans les \
sauvegardes."  >> "$LOG_FILE";
                        exit 5;
                fi
                chown root "$BACKUP_DIR/$DATE/$db.sql.xz";
                chgrp staff "$BACKUP_DIR/$DATE/$db.sql.xz";
                chmod 660 "$BACKUP_DIR/$DATE/$db.sql.xz";
        done
}

# Vérificarion des sauvegardes.
backupCheck() {
        if [ "$(find $BACKUP_DIR/$DATE -type f | wc -l)" -gt 0 -a \
"$(du -ks $BACKUP_DIR/$DATE | awk {'print $1'})" -gt 4 ]; then
                logDate;
                echo "$LOG_FILE_DATE : Sauvegarde des bases terminé avec \
succés." >> "$LOG_FILE";
        else
                logDate;
                echo "$LOG_FILE_DATE : Aucune base sauvegardées ou leur taille \
est de zéro." >> "$LOG_FILE";
                exit 6;
        fi
}

main() {
        createLog;
        createBackupDir;
        listDB;
        backupDB;
        backupCheck;
        backupPurge;
}

main;

exit 0;

© Copyright 2002-2024 Aeriesguard.com - Mentions légales
Aerie's Guard V 7.0
réalisé par Ertaï, designé par Ivaldir, illustré par Izual et Sophie Masure
Famfamfam