Radotages d'un papy de l'informatique

Page principale

Répondre à ce message
Auteur: Bernard Cassagne
Date:  
À: guilde
Sujet: Radotages d'un papy de l'informatique
Je viens de lire un thread sur la sauvegarde systeme et j'ai vu que plusieurs
personnes commettent l'erreur de penser que gnu tar n'est pas capable de
sauvegarder /dev. Cette croyance vient du fait que ca a ete vrai a une
certaine epoque, mais c'est faux maintenant. [Merci a Daniel Veillard qui a
ete mon initiateur aux vertus du gnu tar].

Comme je pense que ca peut interesser un certain nombre de personnes, je
me permets de faire le point historique sur les problemes de sauvegarde d'une
arborescence Unix.

Pour sauvegarder convenablement une arborescence Unix, il ne faut pas tomber
dans l'un des panneaux suivants :
 - transformer un lien symbolique en "plain file"
 - transformer un fichier a trou en fichier pleins (car un read d'un trou 
    donne un buffer de zeros qui, si on ne prend pas de precaution, sera
    reecrit sous forme de zeros et non pas d'un trou)
 - faire un open d'un /dev/xxx au lieu de faire un mknod


A l'epoque prehistorique, on savait :
- que cp ne gerait rien de ces difficultes,
- que tar ne gerait que les liens symboliques mais ni les trous, ni les /dev
- et donc qu'une copie de de file system ne pouvait se faire qu'avec un
outil de type dump/restore.

Aujourd'hui :
  - gnu cp a un argument --no-dereference (never follow symbolic links)
    [ je dis bien gnu cp, car je viens de verifier que la commande cp d'un OS
    proprietaire (Solaris pour ne pas le nommer) ne gere toujours pas les
    liens symboliques.]


  - gnu tar (et la aussi je dis bien GNU tar) gere convenablement tous les
    problemes (et en particulier celui des /dev).


J'ai cree pour l'ENSIMAG une installation automatique de machines a base
de kickstart complete par un script de postinstall dans lequel je copie
un root file system dans une seconde partition de facon a avoir plusieurs
systemes bootables (pour des besoins didactiques). Je fais ceci par tar
avec simplement comme precautions :
--exclude dev/pts (je recupere donc tous les autres dev)
--sparse (handle sparse files efficiently)

[Je me rends compte a cette occasion que je n'ai pas fait --exclude /proc
ca aurait certainement ete malin de le faire, en tout cas ca ne m'a pas
pose de probleme]

Quand on fait un tel tar, on peut etre inquiete par quelques messages du
type: "tar: dev/log: socket ignored"
il s'agit d'un socket dans le monde UNIX (donc local) et non pas un socket
dans le monde INET. De tels sockets sont ouverts par le demon lpd par
exemple. Ce n'est qu'un warning et peut etre ignore sans inconvenient.

Donc en resume, pas de pb pour sauvegarder tout un root file system par GNU tar.

[Dans tout ceci je n'ai pas parle de cpio car j'ai une experience tres Unix
Berkeley et pas du tout Unix System V. Si qq peut faire le point sur les
capacites de cpio ca doit sans doute interesser du monde]

Apres ca, quelqu'un a parle de sauvegarde de ce qui est local a la machine par
opposition aux fichiers systeme. Ca c'est un probleme completement different
qui est un probleme d'organisation de la machine. Ca a ete explique plusieurs
fois sur la liste.

--
Amicalement,

-------------------------------------------------------------------------------
Bernard Cassagne                 Laboratoire CLIPS - IMAG
Domaine Universitaire       BP 53         38041 Grenoble CEDEX 9         FRANCE
tel: 04.76.51.46.14     fax: 04.76.44.66.75     e-mail:Bernard.Cassagne@???