Re: J'ai récupérer mon /bin [was:BACKUP AGAIN !!]

Page principale

Répondre à ce message
Auteur: Olivier_Allard-Jacquin
Date:  
À: guilde
Sujet: Re: J'ai récupérer mon /bin [was:BACKUP AGAIN !!]


> Tout d'abord merci à tous!
>
> En mode rescue j'ai réussi à dégunzippé-détarré mon bin_bkp.tar.gz.
> Mais voilà mon bin maintenant et moitié moins gros.
> J'ai eu des erreurs sur mon détarrage:
> tar: bin/gawk: Cannot create hard link to '/bin/gawk-3.1.0': No Such File

or
> directory
> tar: bin/zcat: Cannot create hard link to '/bin/gzip': No Such File or
> directory
> tar: bin/gunzip: Cannot create hard link to '/bin/gzip': No Such File or
> directory
> tar: Error exit delayed from previous errors


      Sous Linux/Unix, il existe 2 type de liens:
- Les liens SYMBOLIQUES (que l'on crée avec la commande "ln -s")
- les liens HARD (commande "ln")


      Leur interet sont très différents:
- un lien HARD, c'est en fait un fichier (une suite d'octets quoi ...),
sur lequel pointe physiquement 2 noms de fichiers /repertoires.
Par exeple:
    /bin/toto
    /usr/bin/toto
pointent sur le même paquet d'octets.
Si tu supprimes un nom de fichier (n'importe lequel), il restera toujours
l'autre.


Au niveau du système de fichier lui même (ext2, reiserfs, etc ...), chaque
"paquet d'octets" à une entrée dans la table de fichiers, avec un compteur
qui indique combien de "chemins" (comme "/bin/toto") pointent sur lui.
Quand ce
nombre est égale à zero (aucun chemin ne pointe sur le fichier), l'espace
disque du fichier est considéré comme libéré

L'inconveniant d'un tel système de lien est évident: On ne peux pas faire
de
liens hard entre 2 partitions différentes. Exemple: /bin/toto ->
/mnt/tata/titi,
avec "/mnt/tata" qui est un point de montage d'une autre partition du DD
Je crois qu'il y a un équivalent sous Windows 2K/XP, mais c'est un truc
pour
les WinGreek :=)

- le lien hard est lui une sorte de "pointeur", vers un autre fichier du
disque dur, voir d'un autre média (CDROM, floppy), ou même un disque réseau
(NFS, Samba, etc ...). En général, c'est ce que l'on utilise le plus, car
c'est très pratique. Par contre, son usage est très différent du lien hard.

Supposons que l'on ait /bin/toto -> /usr/bin/tutu
- Si tu supprimes "toto", "tutu" ne sera pas impacté
- Si tu supprimes "tutu", "toto" sera complètement inutile, et il
clignotera
lorsque tu feras un "ls"

Alors que, je me repète, avec un lien hard, que tu supprimes "toto" ou
"tutu",
ca n'aura pas d'influence sur l'autre fichier (respectivement "tutu" ou "
toto")

La structure de ce "pointeur" est différente de la
technique utilisé sous Windows 9x pour faire des liens (avec leur ###### de
fichier *.LNK).


> Apparement il s'agit ici de création de liens symbolique... ????
> maintenant j'ai mon /bin/awk qui clignote rouge et qui se sent seul
> (pas lié à gawk).


      Non, ce n'est pas un lien SYMBOLIQUE, mais un lien HARD:

> tar: bin/gawk: Cannot create HARD link to '/bin/gawk-3.1.0'




> En fait j'ai un peu triché (je te l'accorde hervé), j'ai déplacé
> mon .tar.gz à la racine puis fait l'extraction... or je pense qu'il

faudrait
> que
> je détarre depuis là où j'ai fait la sauvegarde c'est à dire
> /home/myUser/Backup/bin_bkp.tar.gz


      Oui, tar/gtar sont un peu ennuyeux car ils n'accèptent pas en
paramètre
le nom du répertoire de destination (contrairement à certains de leurs
"concurrents" sous DOS/Windows). Un truc comme
"gtar xzvf /home/myUser/Backup/bin_bkp.tar.gz /"
ne marchera donc pas.


      Mais, il exist une astuce (sh/bash/csh/etc ... ): les parenthèses
....
Si tu tapes ca (depuis n'importe quel endroit de ton DD):
     "(cd / ; gtar xzvf /home/myUser/Backup/bin_bkp.tar.gz)"
Tu vas en fait lancer un process qui va:
  - changer de répertoire: cd /
  - décompresser l'archive: gtar xzvf /home/myUser/Backup/bin_bkp.tar.gz


Un autre exemple un peu plus complexe (que tu trouveras dans pas mal de
HOWTO,
etc ...):
  - tu es dans "/home/ismae"
  - tu veux compresser "/mnt/toto"
  - l'archive doit être placée dans /tmp
  - tu n'as pas gtar, mais "tar" et "gzip"
Tu devras donc lancer:
     (cd /mnt ; gtar cvf - | (cd /tmp/ ; gzip > toto.tar.gz)
qui est equivalent en plus simple à:
     (cd /mnt ; gtar cvf - | gzip > /tmp/toto.tar.gz


      A plus !


                                                Olivier