Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:ln [23/03/2011 15:11] smolski |
doc:systeme:ln [15/12/2012 06:07] martin_mtl [Créer un lien physique] |
||
---|---|---|---|
Ligne 26: | Ligne 26: | ||
== Les liens symboliques (symlink) == | == Les liens symboliques (symlink) == | ||
- | Les liens symboliques (symlink) peuvent lier | + | Les liens symboliques (symlink) peuvent lier : |
* des fichiers | * des fichiers | ||
Ligne 38: | Ligne 38: | ||
== Les liens physiques (hardlink) == | == Les liens physiques (hardlink) == | ||
- | Les liens physiques (hardlink) ne peuvent lier | + | Les liens physiques (hardlink) ne peuvent lier : |
- que des fichiers | - que des fichiers | ||
- | - et que dans le même système de fichier (une partition par exemple, ou un même systeme de fichier en reseau...), | + | - et que dans le même système de fichiers (une partition par exemple, ou un même système de fichiers en réseau...), |
- | car ils sont eux gérés au niveau du FS (File System = Système de fichier). | + | car ils sont eux gérés au niveau du FS (File System = Système de fichiers). |
**Nota :** \\ | **Nota :** \\ | ||
Ligne 54: | Ligne 54: | ||
Débutant - À savoir : | Débutant - À savoir : | ||
- | * [[commande:mkdir | La commande MKDIR]] | ||
- | * [[commande:cd | La commande CD]] | ||
- | * [[commande:touch | La commande TOUCH]] | ||
- | * [[commande:echo | La commande ECHO]] | ||
- | * [[commande:cat | La commande CAT]] | ||
* [[commande:> | La commande chevron ">"]] | * [[commande:> | La commande chevron ">"]] | ||
- | * [[commande:echo | La commande ECHO]] | ||
* [[commande:ls | La commande LS]] | * [[commande:ls | La commande LS]] | ||
* [[commande:rm | La commande RM]] | * [[commande:rm | La commande RM]] | ||
Ligne 66: | Ligne 60: | ||
* [[commande:mv | La commande MV]] | * [[commande:mv | La commande MV]] | ||
* [[commande:pwd | La commande PWD]] | * [[commande:pwd | La commande PWD]] | ||
- | * [[commande:editeur:nano | La commande d'édition NANO]] | + | * [[manuel:nano | La commande d'édition NANO]] |
//Et oui, tout ça cher Débutant ! Il reste que la plupart de ces commandes sont les commandes en ligne principales __usuelles__ à utiliser dans un terminal.// :-) | //Et oui, tout ça cher Débutant ! Il reste que la plupart de ces commandes sont les commandes en ligne principales __usuelles__ à utiliser dans un terminal.// :-) | ||
Ligne 73: | Ligne 67: | ||
==== Créer les répertoires et fichiers tests que nous allons utiliser ==== | ==== Créer les répertoires et fichiers tests que nous allons utiliser ==== | ||
- | + | Dans ''/home/votre_user/'', créez un répertoire nommé //test_lien// avec [[commande:mkdir|mkdir]] et s'y positionner avec [[commande:cd | cd]] : | |
- | Dans ''/home/votre_user/'', créez un répertoire nommé //''test_lien''// et s'y positionner : | + | |
$ cd ~ | $ cd ~ | ||
Ligne 83: | Ligne 76: | ||
test_lien$ | test_lien$ | ||
- | Créer dans ce répertoire deux fichier **test1.txt** rempli de la ligne //Bonjour toto// et test2.txt laissé vide : | + | Créer dans ce répertoire un fichiers vide, //test1.txt//, avec [[commande:touch|touch]], puis ajoutez-y le texte //Bonjour toto// avec la commande [[commande:echo|echo]]. |
- | test_lien$ touch test2.txt | + | test_lien$ touch test1.txt |
- | test_lien$ echo Bonjour toto > test1.txt | + | test_lien$ echo Bonjour Jojo > test1.txt |
+ | |||
+ | On vérifie avec la commande [[commande:cat|cat]] que notre texte est bien écrit dans le fichier test1.txt : | ||
test_lien$ cat test1.txt | test_lien$ cat test1.txt | ||
- | Bonjour toto | + | Bonjour Jojo |
==== Créer un lien symbolique (symlink) : ==== | ==== Créer un lien symbolique (symlink) : ==== | ||
+ | |||
+ | Situation de départ : | ||
+ | <code> | ||
+ | martin@madebian:~/test_lien$ ls -l | ||
+ | total 4 | ||
+ | -rw-r--r-- 1 martin martin 13 déc 14 22:02 test1.txt | ||
+ | </code> | ||
+ | |||
+ | On crée le lien symbolique : | ||
test_lien$ ln -s test1.txt lien1.txt | test_lien$ ln -s test1.txt lien1.txt | ||
- | Visualisez le résultat : | + | Ce qui nous fait maintenant : |
<code> | <code> | ||
- | test_lien$ $ ls -l | + | martin@madebian:~/test_lien$ ls -l |
total 4 | total 4 | ||
- | lrwxrwxrwx 1 votre_user votre_user 9 jun 21 07:23 lien1.txt -> test1.txt | + | lrwxrwxrwx 1 martin martin 9 déc 14 22:05 lien1.txt -> test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user 13 jun 21 07:22 test1.txt | + | -rw-r--r-- 1 martin martin 13 déc 14 22:02 test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user 0 jun 21 07:22 test2.txt | + | |
</code> | </code> | ||
- | //**l**rwxrwxrwx 1 votre_user votre_user **8** jun 21 07:23 lien1.txt **-> test1.txt**// | + | Attardons-nous un peu sur la ligne : |
+ | **l**rwxrwxrwx 1 martin martin **9** déc 14 22:05 lien1.txt **->** test1.txt | ||
- **l** indique un lien symbolique sur ce fichier | - **l** indique un lien symbolique sur ce fichier | ||
- | - **8** indique l'occupation réelle du fichier sur le disque | + | - **9** indique l'occupation réelle du fichier sur le disque |
- **-> test1.txt** indique le fichier pointé par le lien symbolique | - **-> test1.txt** indique le fichier pointé par le lien symbolique | ||
- | Nous pouvons en déduire : | + | Précisons aussi que : |
* Un //fichier symbole// créé avec la commande ''ln'' ne contient pas l'occupation disque affichée qui est contenue dans le fichier cible. | * Un //fichier symbole// créé avec la commande ''ln'' ne contient pas l'occupation disque affichée qui est contenue dans le fichier cible. | ||
Ligne 130: | Ligne 135: | ||
<code> | <code> | ||
- | test_lien$ $ ls -l | + | martin@madebian:~/test_lien$ ls -l |
total 4 | total 4 | ||
- | lrwxrwxrwx 1 votre_user votre_user **9** jun 21 07:23 lien1.txt -> test1.txt | + | lrwxrwxrwx 1 martin martin 9 déc 14 22:05 lien1.txt -> test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user **30** jun 21 07:22 test1.txt | + | -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user 0 jun 21 07:22 test2.txt | + | |
</code> | </code> | ||
Ligne 148: | Ligne 152: | ||
À l'aide de la commande ''ls -li'', nous pouvons voir l'occupation disque générée par un lien //symlink// en constatant les chiffres indiquant les index respectifs des inodes de chacun des fichiers liés : | À l'aide de la commande ''ls -li'', nous pouvons voir l'occupation disque générée par un lien //symlink// en constatant les chiffres indiquant les index respectifs des inodes de chacun des fichiers liés : | ||
<code> | <code> | ||
- | test_lien$ ls -li | + | martin@madebian:~/test_lien$ ls -li |
- | 604494 - rw- r-- r-- 2 admijoel admijoel 32 jun 21 11:04 lien2.txt | + | total 4 |
- | 604493 - rw- r-- r-- 2 admijoel admijoel 32 jun 21 11:04 test2.txt | + | 8667148 lrwxrwxrwx 1 martin martin 9 déc 14 22:05 lien1.txt -> test1.txt |
+ | 8667139 -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | ||
</code> | </code> | ||
Ligne 162: | Ligne 167: | ||
<code> | <code> | ||
- | test_lien$ $ ls -l | + | martin@madebian:~/test_lien$ ls -l |
total 4 | total 4 | ||
- | - rw- r-- r-- 1 votre_user votre_user **30** jun 21 07:22 test1.txt | + | -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user 0 jun 21 07:22 test2.txt | + | |
</code> | </code> | ||
Ligne 174: | Ligne 178: | ||
<code> | <code> | ||
- | test_lien$ $ ls -l | + | martin@madebian:~/test_lien$ ls -l |
total 4 | total 4 | ||
- | l rwx rwx rwx 1 votre_user votre_user **9** jun 21 07:23 lien1.txt -> test1.txt | + | lrwxrwxrwx 1 martin martin 9 déc 14 22:13 lien1.txt -> test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user **30** jun 21 07:22 test1.txt | + | -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user 0 jun 21 07:22 test2.txt | + | |
</code> | </code> | ||
Ligne 187: | Ligne 190: | ||
<code> | <code> | ||
- | test_lien$ $ ls -l | + | martin@madebian:~/test_lien$ ls -l |
total 4 | total 4 | ||
- | l rwx rwx rwx 1 votre_user votre_user **9** jun 21 07:23 lien2.txt -> test1.txt | + | lrwxrwxrwx 1 martin martin 9 déc 14 22:13 lien2.txt -> test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user **30** jun 21 07:22 test1.txt | + | -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user 0 jun 21 07:22 test2.txt | + | |
</code> | </code> | ||
Tout reste fonctionnel et en place. :-) | Tout reste fonctionnel et en place. :-) | ||
- | <note>Pour pousuivre cette illustration dans la clarté, remettons le nommage du fichier symbole ''lien2.txt'' en ''lien1.txt''.</note> | + | <note>Pour poursuivre cette illustration dans la clarté, remettons le nommage du fichier symbole ''lien2.txt'' en ''lien1.txt''.</note> |
test_lien$ mv lien2.txt lien1.txt | test_lien$ mv lien2.txt lien1.txt | ||
=== Modifier le nom du fichier cible === | === Modifier le nom du fichier cible === | ||
- | Modifions le nommage du fichier cible ''test1.txt'' : | + | Modifions le nom du fichier cible ''test1.txt'' : |
- | test_lien$ mv test1.txt test3.txt | + | test_lien$ mv test1.txt test2.txt |
<code> | <code> | ||
- | test_lien$ $ ls -l | + | martin@madebian:~/test_lien$ ls -l |
total 4 | total 4 | ||
- | lrwxrwxrwx 1 votre_user votre_user **9** jun 21 07:23 <del>lien1.txt</del> -> <del>test1.txt</del> | + | lrwxrwxrwx 1 martin martin 9 déc 14 22:13 lien1.txt -> test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user 0 jun 21 07:22 test2.txt | + | -rw-r--r-- 1 martin martin 30 déc 14 22:08 test2.txt |
- | - rw- r-- r-- 1 votre_user votre_user **30** jun 21 07:22 test3.txt | + | |
</code> | </code> | ||
- | //Patatras !// Nous voyons alors que le fichier cible ''lien1.txt'' se met en carafe (surligné et en rouge dans le terminal bash) dès le //rafraîchissement// du terminal ouvert. | + | //Patatras !// Nous voyons alors que le fichier cible ''lien1.txt'' se met en carafe - il devient écrit en rouge dans le terminal bash) dès le //rafraîchissement// du terminal ouvert. |
Il suffit : | Il suffit : | ||
- | - de renommer le fichier cible ''test3.txt'' en ''test1.txt'', | + | - de renommer le fichier cible ''test2.txt'' en ''test1.txt'', |
- | - ou bien de recréer le fichier symbole ''lien1.txt'' en le pointant sur le fichier cible ''test3.txt'' par reformulation de la commande : | + | <del> - ou bien de recréer le fichier symbole ''lien1.txt'' en le pointant sur le fichier cible ''test2.txt'' par reformulation de la commande : |
- | test_lien$ ln -s test3.txt lien1.txt | + | test_lien$ ln -s test2.txt lien1.txt</del> |
Et tout redevient effectif. | Et tout redevient effectif. | ||
Pour la suite du tuto, choisir de remettre le fichier en test1.txt | Pour la suite du tuto, choisir de remettre le fichier en test1.txt | ||
- | test_lien$ mv test3.txt test1.txt | + | test_lien$ mv test2.txt test1.txt |
==== Modifications des droits des fichiers liés : ==== | ==== Modifications des droits des fichiers liés : ==== | ||
Ligne 235: | Ligne 236: | ||
=== Modification des droits d'un fichier symbole === | === Modification des droits d'un fichier symbole === | ||
- | En terminal root, exécutez la commande : | + | Situation de départ : |
+ | <code> | ||
+ | martin@madebian:~/test_lien$ ls -l | ||
+ | total 4 | ||
+ | lrwxrwxrwx 1 martin martin 9 déc 14 23:00 lien1.txt -> test1.txt | ||
+ | -rw-r--r-- 1 martin martin 13 déc 14 22:59 test1.txt | ||
+ | </code> | ||
+ | |||
+ | En terminal root, changez les droits sur le fichier avec la commande [[commande:chmod|chmod]] : | ||
test_lien# chmod 700 lien1.txt | test_lien# chmod 700 lien1.txt | ||
+ | |||
+ | On obtient alors : | ||
<code> | <code> | ||
- | test_lien$ $ ls -l | + | martin@madebian:~/test_lien$ ls -l |
total 4 | total 4 | ||
- | l rwx rwx rwx 1 votre_user votre_user 9 jun 21 07:23 lien1.txt -> test1.txt | + | lrwxrwxrwx 1 martin martin 9 déc 14 23:00 lien1.txt -> test1.txt |
- | - rw- --- --- 1 votre_user votre_user 13 jun 21 07:22 test1.txt | + | -rwx------ 1 martin martin 13 déc 14 22:59 test1.txt |
- | - rw- r-- r-- 1 votre_user votre_user 0 jun 21 07:22 test2.txt | + | |
</code> | </code> | ||
- | Nous voyons que le fichier symbole ''lien1.txt'' n'est pas affecté par cette modifications des droits : \\ | + | Nous voyons que le fichier symbole ''lien1.txt'' n'est pas affecté par cette modifications des droits : |
- | ''l **rwx rwx rwx** 1 votre_user votre_user 9 jun 21 07:23 lien1.txt -> test1.txt'' | + | lrwxrwxrwx 1 martin martin 9 déc 14 23:00 lien1.txt -> test1.txt |
- | et que le fichier cible ''test1.txt'' s'en trouve directement rectifié par cette commande exécuter sur le fichier symbole ''lien1.txt'' : \\ | + | et que le fichier cible ''test1.txt'' s'en trouve directement rectifié par cette commande exécuter sur le fichier symbole ''lien1.txt'' : |
- | ''- **rw- --- ---** 1 votre_user votre_user 13 jun 21 07:22 test1.txt'' | + | rwx------ 1 martin martin 13 déc 14 22:59 test1.txt |
==== Créer un lien physique (hardlink) : ==== | ==== Créer un lien physique (hardlink) : ==== | ||
Ligne 262: | Ligne 272: | ||
==== Créer un lien physique ==== | ==== Créer un lien physique ==== | ||
- | Supprimons les fichiers liés symboliquement : | + | Commençons par supprimer les fichiers liés symboliquement et créer un fichier de départ vide, test2, : |
test_lien$ rm *1.txt | test_lien$ rm *1.txt | ||
+ | touch test2.txt | ||
- | Pour créer un lien physique, on utilise la commande ''ln'' sans l'option ''-s''. | + | Au départ, nous avons donc la situation suivante : |
<code> | <code> | ||
- | test_lien$ ln test2.txt lien2.txt | + | martin@madebian:~/test_lien$ ls -l |
- | test_lien$ ls -l | + | total 0 |
- | total 2 | + | -rw-r--r-- 1 martin martin 0 déc 15 00:02 test2.txt |
- | - rw- r-- r-- 2 admijoel admijoel 0 jun 21 11:04 lien2.txt | + | |
- | - rw- r-- r-- 2 admijoel admijoel 0 jun 21 11:04 test2.txt | + | |
</code> | </code> | ||
+ | |||
+ | Pour créer un lien physique, on utilise la commande ''ln'' sans l'option ''-s''. | ||
+ | <code> | ||
+ | martin@madebian:~/test_lien$ ln test2.txt lien2.txt | ||
+ | martin@madebian:~/test_lien$ ls -l | ||
+ | total 0 | ||
+ | -rw-r--r-- 2 martin martin 0 déc 15 00:02 lien2.txt | ||
+ | -rw-r--r-- 2 martin martin 0 déc 15 00:02 test2.txt</code> | ||
Ah ! Plus de lettre "''l''" ni de "//flèches//" pour indiquer le lien physique. \\ | Ah ! Plus de lettre "''l''" ni de "//flèches//" pour indiquer le lien physique. \\ | ||
+ | |||
Nous pouvons toutefois distinguer un changement dans le listage des droits des fichiers liés physiquement : | Nous pouvons toutefois distinguer un changement dans le listage des droits des fichiers liés physiquement : | ||
Le chiffre ''1'' devient ''2'' dans la ligne du fichier cible test2.txt : | Le chiffre ''1'' devient ''2'' dans la ligne du fichier cible test2.txt : | ||
- | |||
- | <code> | ||
- | - rw- r-- r-- 1 admijoel admijoel 0 jun 21 11:04 test2.txt (avant) | ||
- | - rw- r-- r-- 2 admijoel admijoel 0 jun 21 11:04 test2.txt (après) | ||
- | </code> | ||
Pareillement dans la ligne du fichier symbole physique lien2.txt créé : | Pareillement dans la ligne du fichier symbole physique lien2.txt créé : | ||
<code> | <code> | ||
- | - rw- r-- r-- 2 admijoel admijoel 0 jun 21 11:04 lien2.txt | + | -rw-r--r-- **2** martin martin 0 déc 15 00:02 lien2.txt |
</code> | </code> | ||
- | Une autre différences est le partage des droits qui sont là __tout à fait identiques__ entre les fichiers liés physiquement. | + | Une autre différence est le partage des droits qui sont là __tout à fait identiques__ entre les fichiers liés physiquement. |
- | <code> | + | |
- | - rw- r-- r-- 2 admijoel admijoel 0 jun 21 11:04 lien2.txt | + | |
- | - rw- r-- r-- 2 admijoel admijoel 0 jun 21 11:04 test2.txt | + | |
- | </code> | + | |
==== Modifions le contenu des fichiers liés physiquement ==== | ==== Modifions le contenu des fichiers liés physiquement ==== | ||
Ligne 375: | Ligne 384: | ||
Créer le répertoire ''stock'' : | Créer le répertoire ''stock'' : | ||
- | # mkdir /media/stock | + | <code bash> |
+ | mkdir /media/stock</code> | ||
Vérifier la création du répertoire stock et les droits d'accès : | Vérifier la création du répertoire stock et les droits d'accès : | ||
<code bash> | <code bash> | ||
- | # ls -l /media | + | ls -l /media |
total 8 | total 8 | ||
drwxr-xr-x 2 root root 4096 jan 12 19:18 stock</code> | drwxr-xr-x 2 root root 4096 jan 12 19:18 stock</code> | ||
- | Éditer le fichier /etc/fstab avec [[NANO]] : | + | Éditer le fichier /etc/fstab avec [[manuel:nano|Nano]] : |
<code bash> | <code bash> | ||
- | # nano /etc/fstab</code> | + | nano /etc/fstab</code> |
Aller par les flèches du clavier sur /media/sda5 et remplacer sda5 par stock soit : | Aller par les flèches du clavier sur /media/sda5 et remplacer sda5 par stock soit : | ||
Ligne 432: | Ligne 442: | ||
Démonter la partition à lier : | Démonter la partition à lier : | ||
- | # umount /dev/sda5 | + | <code bash> |
+ | umount /dev/sda5</code> | ||
Vérifier que /media/sda5 n'est plus monté: | Vérifier que /media/sda5 n'est plus monté: | ||
- | # ls /media/sda5 | + | <code bash> |
- | total 0 | + | ls /media/sda5 |
+ | total 0</code> | ||
=== Créer le nouveau répertoire symblink === | === Créer le nouveau répertoire symblink === | ||
- | # rmdir /media/sda5 (cela détruit le répertoire vide sda5) | + | <code bash> |
- | # ln -s /media/stock /media/sda5 (cela créé le répertoire stock en mettant un lien | + | rmdir /media/sda5 (cela détruit le répertoire vide sda5)</code> |
- | symbolique entre l'ancien répertoire sda5 et le nouveau répertoire stock) | + | <code bash> |
+ | ln -s /media/stock /media/sda5 (cela créé le répertoire stock en mettant un lien | ||
+ | symbolique entre l'ancien répertoire sda5 et le nouveau répertoire stock)</code> | ||
=== Remonter la partition === | === Remonter la partition === | ||
Pour réactiver la partition sda5. | Pour réactiver la partition sda5. | ||
- | # mount /dev/sda5 | + | <code bash>mount /dev/sda5</code> |
- | # ls -l /media | + | <code bash>ls -l /media</code> |
=== Tester === | === Tester === |