Migration

D'un système à un autre, d'un distribution à une autre, d'une publication (site) à un autre, encodage, disque dur.

alain Adelmar
aadelmar@numericable.fr beuuh c est quoi ca

La migration d'une distribution à une autre comme d'un site à un autre peut être la cause de certains soucis voir la perte de données. J'ai eu les deux, donc si je peut aiguiller quelques débutants pour éviter cela et aussi en guise de pense bête pour moi même, voici quelques conseils en la matière, pour limiter la casse.
Bien sûr on le répète partout la sauvegarde est le chemin le plus sûr.  Mais il faut pouvoir le faire à temps, avoir la place et encore plus malin anticiper les problèmes.

Les pires ennemies dans ces situations sont : Le raz le bol,  l'emportement (le coup de sang), la facilité (l'illusion de simplicité).
Les meilleurs cartes: La doc, Le net, Le sang froid, (et de savoir que... bien sûr c'est possible).


  • Choses communes à faire, avant tout changements importants:
  • Migration d'une distribution à une autre:
  • Migration d'un système de fichiers à un autre:
  • Migration d'une publication (d'un site) à un autre ou update:
  • Migration d'encodage:

  • Choses communes à faire, avant tout changements importants

    Avant tout changements importants il y a toujours quelques petites choses à faire, ça prend moins de 5 minutes, et ça peut éviter bien des déboires. 
    D'abord il faut ce poser et ne rien faire dans l'urgence, qui est mauvaise conseillère.   Puis si vous avez une imprimante, un graveur, une clé USB, un compte (page-perso), les CD d'installation d'une distribution (Linux ou Windows ou un live CD) ça sera beaucoup plus facile. Mais si vous n'avez rien de tous ça , c'est pas grave,  munissez vous d'un carnet ou de quelques feuilles blanches et d'un stylo, ça fera l'affaire.  Je vais faire comme si vous aviez en guise de pré-requis une imprimante et un accès à internet.


    Prendre les informations de ce qui est avant changement

    La première des choses à faire, c'est de savoir ce que l'on a maintenant sur son(ses) système(s) et comment votre environnement le perçoit. (Il faut 5 min avec une imprimante).
    On croit toujours savoir, mais en être sûr c'est mieux (et puis si on a besoin d'aide... c'est pas quand tout est planté qu'on ce renseigne ...  bien que...) .
    Donc pour faire, vite fait le tour de sa bécane, on ce placera en root sur la console et l'on entrera les commandes:
    les périphériques et leurs caractéristiques:
    fdisk -l > mes_disques-4juin2009.log 
      # c'est un "petit L" comme dans liste , vous donnera la liste des partitions, leurs taille, leurs type et le placera dans un fichier nommé "mes_disques-date.log". Je vous affiche le mien à titre d'exemple.

    [root@localhost miroir]# fdisk -l

    Disque /dev/sda: 500.1 Go, 500107862016 octets
    255 heads, 63 sectors/track, 60801 cylinders
    Units = cylindres of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x6e8bb5bd

    Périphérique Amorce    Début        Fin      Blocs    Id  Système
    /dev/sda1     *           1         255     2048256   82  Linux swap / Solaris
    /dev/sda2               256        1267     8128890   83  Linux
    /dev/sda3              1268        2159     7164990   83  Linux
    /dev/sda4              2160       60801   471041865    7  HPFS/NTFS

    Disque /dev/sdb: 15.3 Go, 15367790592 octets
    255 heads, 63 sectors/track, 1868 cylinders
    Units = cylindres of 16065 * 512 = 8225280 bytes
    Disk identifier: 0xa3c5a3c5

    Périphérique Amorce    Début         Fin      Blocs    Id  Système
    /dev/sdb1     *           1         1867    14996646    7  HPFS/NTFS

    Disque /dev/sdc: 12.9 Go, 12997361664 octets
    255 heads, 63 sectors/track, 1580 cylinders
    Units = cylindres of 16065 * 512 = 8225280 bytes
    Disk identifier: 0xa3e3a3e3

    Périphérique Amorce    Début        Fin      Blocs    Id  Système
    /dev/sdc1     *           1          25      200781   83  Linux
    /dev/sdc2                26        1580    12490537+  83  Linux


    Bon mais la on ne sais pas a quoi cela correspond donc pour parfaire on ajoutera le fichier /etc/fstab qui nous renseigne sur le nom de ces partitions:
    donc on ajoutera au fichier /etc/fstab en tapant:
    cat /etc/fstab >> mon_matos4juin2009.log


    #
    # /etc/fstab
    # Created by anaconda on Tue Mar 10 22:32:09 2009
    #
    # Accessible filesystems, by référence, are maintenu par '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or vol_id(8) for more info
    #
    UUID=df4c144a-ccbb-423e-8d33-535baf398aa0    /                    ext3     defaults        1 1
    UUID=6b88d7b6-69e3-4bb2-a7d8-bc7e9246c27d    /home                ext3     defaults        1 2
    UUID=6C58D2E73ED40D63                        /media/Igor          ntfs-3g  defaults        0 0
    UUID=8C7C926F7C925434                        /media/MAX           ntfs-3g  defaults        0 0
    UUID=05fd16c1-7ad9-4cd2-9e2c-95ff40be277e    /home/commun         ext3     defaults        1 2
    UUID=3be3318c-0e4e-49a1-9f07-b890e9c095b0    /boot                ext3     defaults        1 2
    UUID=C430-8275                               /mnt/cle_usb         vfat     defaults        0 0
    tmpfs                                        /dev/shm             tmpfs    defaults        0 0
    devpts                                       /dev/pts             devpts   gid=5,mode=620  0 0
    sysfs                                        /sys                 sysfs    defaults        0 0
    proc                                         /proc                proc     defaults        0 0
    UUID=92127689-f32c-4fbc-b852-603578d17925    swap                 swap     defaults        0 0

    Bon mauvais exemple, avant c'était plus pratique vu qu'il n'y avait pas d'identifiant partition on savait donc que (dans mon cas) /dev/sda3 était /home, donc on va ajouter toujours à notre fichier /etc/mtab qui reste encore lisible même avec les distributions de maintenant, donc :
    cat /etc/mtab >> mes_disques-4juin2009.log

    [root@localhost atelier]# cat /etc/mtab
    /dev/sda2        /                         ext3                  rw                                  0 0
    /proc            /proc                     proc                  rw                                  0 0
    sysfs            /sys                      sysfs                 rw                                  0 0
    devpts           /dev/pts                  devpts                rw,gid=5,mode=620                   0 0
    /dev/sda3        /home                     ext3                  rw                                  0 0
    /dev/sda4        /media/Igor               fuseblk               rw,allow_other,blksize=4096         0 0
    /dev/sdb1        /media/MAX                fuseblk               rw,allow_other,blksize=4096         0 0
    /dev/sdc2        /home/commun              ext3                  rw                                  0 0
    /dev/sdc1        /boot                     ext3                  rw                                  0 0
    tmpfs            /dev/shm                  tmpfs                 rw                                  0 0
    none             /proc/sys/fs/binfmt_misc  binfmt_misc           rw                                  0 0
    sunrpc           /var/lib/nfs/rpc_pipefs   rpc_pipefs            rw                                  0 0
    gvfs-fuse-daemon /home/aadelmar/.gvfs      fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=aadelmar       0 0
    /dev/sr0         /media/Expansion          iso9660               ro,nosuid,nodev,uhelper=hal,uid=503 0 0


    Bon voila maintenant on sait quelle partitions fait quoi, leur taille, leur type, comment elles se nome et même UUID que l'on peut avoir par
    Quand on cherche UUID d'une partition il faut taper :
    sudo /lib/udev/vol_id -u /dev/sda4
    6C58D2E73ED40D63


    Bon on peut imprimer le fichier mes_disques-date.log, pendant ce temps on peut prendre le détail de grub.conf (surtout si on a un multiboot au démarrage) qui peut être sur /boot/grub/grub.conf ou ailleurs suivant la distribution. Si on sait pas:
    find / -type f -name grub.conf -print mon_grub.log

    et donc toujours pareil pour avoir le fichier:
    cat /boot/grub/grub.conf >> mon_grub.log

    [root@localhost atelier]# cat /boot/grub/grub.conf >> mon_grub-4juin2009.log
    [root@localhost atelier]# cat mon_grub-4juin2009.log
    # grub.conf generated by anaconda
    #
    # Note that you do not have to relancer grub après making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd1,0)
    #          kernel /vmlinuz-version ro root=/dev/sdc2

    #          initrd /initrd-version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd1,0)/grub/splash.xpm.gz
    hiddenmenu
    title Fedora (2.6.27.24-170.2.68.fc10.i686)
        root (hd1,0)
        kernel /vmlinuz-2.6.27.24-170.2.68.fc10.i686 ro root=UUID=df4c144a-ccbb-423e-8d33-535baf398aa0 rhgb quiet "linux nomodset"
        initrd /initrd-2.6.27.24-170.2.68.fc10.i686.img
    title Fedora (2.6.27.21-170.2.56.fc10.i686)
        root (hd1,0)
        kernel /vmlinuz-2.6.27.21-170.2.56.fc10.i686 ro root=UUID=df4c144a-ccbb-423e-8d33-535baf398aa0 rhgb quiet "linux nomodset"
        initrd /initrd-2.6.27.21-170.2.56.fc10.i686.img
    title Fedora (2.6.27.19-170.2.35.fc10.i686)
        root (hd1,0)
        kernel /vmlinuz-2.6.27.19-170.2.35.fc10.i686 ro root=UUID=df4c144a-ccbb-423e-8d33-535baf398aa0 rhgb quiet "linux nomodset"
        initrd /initrd-2.6.27.19-170.2.35.fc10.i686.img
    title Other
        rootnoverify (hd0,0)
        chainloader +1

     Maintenant pour compléter mes renseignements on fait pareil pour l'affichage avec /etc/X11/xorg.conf donc
    cat /etc/X11/xorg.conf > mon_affichage.log
    et alors pour vraiment tout savoir sauvez les données de dmesg en tapant:
    dmesg > mon_tosma.log
     
    et la vous aurai vraiment une vue de l'ensemble de votre matos, comment sont vues les périphériques, la carte mère, la RAM, les entrées/sorties, leurs noms les contrôles qui les régisses, tout quoi. C'est bon d'avoir ça. Je donne pas le mien parce que ça prend trop de place quand même.
    Voilà une bonne chose de faite. On peut déjà mieux envisager les changements.
    Maintenant on sera ce qu'on peut faire et ce que l'on ne peut pas faire.

    retour


    Mesure préventives

    La prévention ou l'anticipation de ce que vous serez amené à faire vaut mieux que tout les remèdes.
    Qu'est ce qui ce passe lors d'une migration ou d'un crash ou d'un changement de distribution ou autre?
    Vos précieuses données risques d'être détruites ou perdues ou simplement éparpillés et dures à centraliser.
    Heureusement Linux est bien conçu (structurer) justement pour pallier à ce genre d'inconvénient.
    Chaque répertoire est partitionnable, il faut en profiter.
    /home reçoit les comptes utilisateurs, pourquoi ne pas faire une partition /home/commun si possible sur un
    disque dur à part, avec un nom de groupe commun à tout les utilisateurs, de manière à ce que tous stock
    leur travail dessus. Et que si il arrive quoi que ce soit, vous pouvez le mettre en lecture seule, le copier, etc...
    Il ne fera parti de votre système que parce qu'il ce trouve dans /home mais il pourra ce démonter au moindre
    coups de grisou.
    C'est très avantageux lors d'un changement de distribution ou de disque dur, ou dans l'hypothèse d'un bug.
    Je garde toujours mes vieux disques de 12-15G il font très bien l'affaire, un comme /home et un comme
    /home/commun et si il y a de l'eau dans le gaz vos deux disque contiennent toutes vos données et votre travail.
    Le reste ça peut ce ré-installer, c'est pas grave.
    Si on a Windows (pour jouer, sur un autre gros disque, c'est souvent le cas) on peut toujours envoyer,
    ou sauver ou archiver dessus.
    Donc si possible installez les partitions /home/commun et /home sur disques différents.
    Après mettre fait avoir plusieurs fois, maintenant j'apprécie cette tranquillité de savoir mon travail à l'abri.


    Migration d'une distribution à une autre




    Migration d'un système de fichiers à un autre




    Dans le cas du ajout ou changement de disque durs




    Dans le cas d'une migration temporaire sur un autre OS




    Migration d'une publication (d'un site) à un autre ou update

    Pour migrer d'une publication vers une autre, (en général c'est pour améliorer et/ou le réparer) la clé c'est l'organisation.
    Plus votre site sera conséquent, plus vous aurais intérêt à avoir recours à des modèles.  Et quoi de plus pratique que le css pour modéliser.
    Pour avoir un script qui remette vos pages en état (réparer les liens défectueux, appliquer les modèles css à certaines pages, contrôler et refaire si il le faut toutes les entêtes correctement, contrôler l'intégrité du code) j'ai créé plusieurs script Perl, que je compte bien placer dans un seul et même script.
    Mais il y a du travail, je les ai fait à plusieurs années d'intervalle (donc pas écrit pareil) et ils sont assez conséquents, donc beaucoup de boulot.
    Donc j'explique ce que mes script font:
            d'ailleurs c'est incroyable, quand on y regarde de près... du fait que Windows et insensible à ce codage baroque (et au Maj, min) il ce permet de tout saloper.
            ces quelques mots édités sont à voir juste à titre d'exemple, fête n'a rien à faire là. donnerons:
            ces quelques mots édités sont à voir juste à titre d'exemple, fête n'a rien à faire là.
            Il est trés pratique et s'ouvre avec le fichier que vous voulez modifier en guise d'argument.
            usage:  accents2ascii.pl [-bo] [fichier.html]
    1. le shebang (la première ligne) de façon à bien commencer par <!DOCTYPE et finir par transitional/en"> . Vous pouvez bien évidement modifier suivant vos préférences.
    2. la ligne ouverture HTML   <html>
    3. la ligne d'ouverture <head>
    4. le codage soit charset=iso-8859-1 soit utf-8 le contrôler s'assure de votre choix et préviendra dans un log (voir plus bas)
    5. le titre <title>(.*)</title>  $titre = $1;
    6. la ligne d'auteur <author>(.*)</author> $auteur = $1; et si incorrecte s/$auteur/$moi/
    7. le générateur <meta name="GENERATOR" content=" , que vous adapterez suivant...
    8. la ligne de lien vers le fichier de style, style.css <link href="style.css" type="text/css" rel="stylesheet"> , ou pointant vers le votre.
    9. la ligne de fermeture de head: </head>
    10. le menu top fait de <ul>\n<li class="mu"><a class="neolink" href="FrenchDate.html">Pr&eacute;c&eacute;dant</a></li> ou le créer
    11. le menu du bas fait de <li class="mu"><a class="neolink" href="FrenchDate.html">Pr&eacute;c&eacute;dant</a></li> ou le créer
    12. petit cartouche en bas de page en commentaire pour donner la date  et le script qui à modifier tout ceci (voir)
    13. fermeture html </html>

    donc ce fichier donnera ./newsite ou il copiera les fichiers html rectifié et un log ce présentant comme ceci:

    **************************************************
    script:      ./ctrl_la_pub.pl
    écris par:   Adelmar alain (aadelmar@numericable.fr)
    le:          Dimanche 20 Septembre 2009 23:42:01
    exécuter le: Dimanche 20 Septembre 2009 23:42:04
    **************************************************

        389octets - 19Sep2009-15:09:23 - ./test_pub/fo_titre.html               
        Titre -  exemple faux titre        
        Cheban -      Fixed
         Html -         Ok
        Cheban -  In-Out-ok
        Encodage -   Latin1       
        Titre -     Absent
         Css -     Absent
         Menu_mu -  Incorrect
         Ancre_top -  Incorrect
         2367octets - 19Sep2009-15:09:47 - ./test_pub/menu_top_naze.html          
         Titre -   exemple menu top naze      
         Cheban -      Fixed
         Html -         Ok
         Cheban -  In-Out-ok
         Encodage -  utf-8 (à revoir)       
         Titre -     Absent
         Css -     Absent
         Menu_mu -  Incorrect
         Ancre_top -  Incorrect
         2646octets - 19Sep2009-15:09:47 - ./test_pub/menus_sans_mu.html          
         Titre -    exemple menu sans mu     
         Cheban -      Fixed
          Html -         Ok
         Cheban -  In-Out-ok
         Encodage -  fixed        
         Titre -     Absent
         Css -     Absent
         Menu_mu -  Incorrect
        Ancre_top -  Absente




    Migration d'encodage