Certificat | LPIC-1 |
Examen: | 101 (torneu a la resta de temes) |
Fitxers: | Els trobareu al tema LPI_103.3. |
Objectius: | http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_101_detailed_objectives |
Dipòsit SVN: | https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_101/104.6 |
Usuari: | anonymous |
Paraula de pas: | qualsevol paraula de pas |
104.6. Crear i canviar els enllaços durs i simbòlics | |
---|---|
![]() |
|
![]() |
Àrees Clau de Coneixement:
|
![]() |
La següent és una llista parcial de fitxers, termes i utilitats utilitzades: |
![]() |
Apunts: LPI 104.6. Crear i canviar els enllaços durs i simbòlics |
Els enllaços permeten que un sol fitxer tingui múltiples camins en un sistema de fitxers. El fitxer només existeix un cop i només ocupa l'espai un cop, però pot tenir múltiples camins (paths).
Els enllaços són similars (encara que força més potents) als accessos directes de Windows o els alias de Mac OS. Windows Vista suporta symlinks
Els enllaços tenen múltiples utilitats, com per exemple:
Hi ha dos tipus d'enllaços:
NOTA: Per defecte ln crea enllaços durs. Consulteu l'apartat Enllaços durs (Hard links)
En aquest apartat parlarem dels enllaços simbòlics. L'ordre que ens permet crear enllaços és ln. La sintaxi és la següent:
$ ln [opcions] origen enllaç
On origen és el camí a un fitxer existent al sistema de fitxers i enllaç és el camí de l'enllaç que apunta al fitxer origen.
Els enllaços simbòlics es generen amb el paràmetre -s (--symbolic):
$ mkdir prova $ cd prova $ touch a $ ln -s a b
Com hem explicat a l'apartat tipus de fitxers, els enllaços simbòlics són un tipus especial de fitxer i es poden identificar amb l'ordre ls i l'opció -l:
$ ls -l total 0 -rw-r--r-- 1 sergi sergi 0 2009-10-12 19:33 a lrwxrwxrwx 1 sergi sergi 1 2009-10-12 19:33 b -> a
Els enllaços es mostren en color blau si esta activat l'esquema de colors de ls, s'indiquen amb el caràcter l al principi de la línia, i també es poden identificar per que el nom del fitxer indica cap a quin fitxer s'està enllaçant. Recordeu també que l'opció -F de ls:
$ ls -F a [email protected]
Mostra un suffix per indicar el tipus de fitxer (l'arroba correspon als enllaços).
Els enllaços simbòlics compleixen les següents propietats:
Els enllaços incorrectes apareixen en fons vermell:
$ rm a $ ls -l total 0 lrwxrwxrwx 1 sergi sergi 1 2009-10-12 19:33 b -> a
Podeu consultar totes les opcions al manual de ln:
$ man ln
o a Internet:
http://linux.die.net/man/1/ln
o com l'ordre pertany a coreutils, podeu també consultar info:
$ info coreutils ln
Algunes de les opcions més importants són:
Recursos:
Per defecte ln crea enllaços durs, tot i que a la pràctica són més habituals els enllaços simbòlics.
Els enllaços durs són dos noms de fitxer que apunten al mateix inode. Tots dos fitxers (o noms de fitxer) són igual de vàlids, i cap té més importància.L'única diferència és que un s'ha creat primer i l'altre més tard.
Per esborrar un fitxer (inode) amb múltiples enllaços durs cal esborrar tots els enllaços durs.
NOTA: cal tenir en compte que, per la seva naturalesa i a diferència dels enllaços simbòlics, els enllaços durs han de ser entre fitxers del mateix sistema de fitxers, no poden apuntar a un directori, i aquest ha de suportat enllaços durs (tots els sistemes Linux natius ho suporten).
Diferències entre els enllaços simbòlics i els enllaços durs:
El següent exemple ens mostra com un mateix fitxer pot tenir més d'un enllaç dur i com fins que no s'esborren tots els links no s'elimina definitivament el fitxer:
$ touch a $ stat a File: «a» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 801h/2049d Inode: 57526 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2009-10-12 20:04:46.000000000 +0200 Modify: 2009-10-12 20:04:46.000000000 +0200 Change: 2009-10-12 20:04:46.000000000 +0200 $ ln -s a symlink_b $ stat symlink_b File: «symlink_b» -> «a» Size: 1 Blocks: 0 IO Block: 4096 enllaç simbòlic Device: 801h/2049d Inode: 57528 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2009-10-12 20:05:42.000000000 +0200 Modify: 2009-10-12 20:05:41.000000000 +0200 Change: 2009-10-12 20:05:41.000000000 +0200 $ ln a b $ stat a File: «a» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 801h/2049d Inode: 57526 Links: 2 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2009-10-12 20:04:46.000000000 +0200 Modify: 2009-10-12 20:04:46.000000000 +0200 Change: 2009-10-12 20:08:29.000000000 +0200 $ stat b File: «b» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 801h/2049d Inode: 57526 Links: 2 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2009-10-12 20:04:46.000000000 +0200 Modify: 2009-10-12 20:04:46.000000000 +0200 Change: 2009-10-12 20:08:29.000000000 +0200
Fixeu-vos que el soft-link té un inode diferent (57528) al del fitxer a (57526). En canvi el hardlink b té el matei inode que el fitxer a (fixeu-vos com augmenta el comptador link).
Observeu que els dos fitxers tenen el mateix inode:
$ ls -li 6242474 -rw-r--r-- 2 sergi sergi 5 2008-05-10 11:23 a 6242474 -rw-r--r-- 1 sergi sergi 0 2008-05-10 11:22 b
NOTA: Fixeu-vos també en la tercera columna. El nombre que apareix és el nombre d'enllaços durs del fitxer.
Si continuem fent enllaços...
$ ln b c $ stat a File: «a» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 801h/2049d Inode: 57526 Links: 3 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2009-10-12 20:04:46.000000000 +0200 Modify: 2009-10-12 20:04:46.000000000 +0200 Change: 2009-10-12 20:12:27.000000000 +0200 $ stat b File: «b» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 801h/2049d Inode: 57526 Links: 3 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2009-10-12 20:04:46.000000000 +0200 Modify: 2009-10-12 20:04:46.000000000 +0200 Change: 2009-10-12 20:12:27.000000000 +0200
$ stat c File: «c» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 801h/2049d Inode: 57526 Links: 3 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2009-10-12 20:04:46.000000000 +0200 Modify: 2009-10-12 20:04:46.000000000 +0200 Change: 2009-10-12 20:12:27.000000000 +0200
si esborreu un dels hardlinks:
$ rm c
l'únic que passa es que decrementem el comptador link:
$ stat a File: «a» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 801h/2049d Inode: 57526 Links: 2 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2009-10-12 20:04:46.000000000 +0200 Modify: 2009-10-12 20:04:46.000000000 +0200 Change: 2009-10-12 20:13:31.000000000 +0200 $ stat b File: «b» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 801h/2049d Inode: 57526 Links: 2 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2009-10-12 20:04:46.000000000 +0200 Modify: 2009-10-12 20:04:46.000000000 +0200 Change: 2009-10-12 20:13:31.000000000 +0200
Cal tenir en compte que els enllaços durs són similar a fer una copia amb cp però amb les següents diferències:
NOTA: no es poden fer enllaços durs a directoris:
$ ln prova provan ln: «prova»: no es permet l’enllaç fort cap al directori
Hi ha una explicació interessant de que és un hardlink i com es poden utilitzar per fer còpies incrementals a:
http://www.mikerubel.org/computers/rsync_snapshots/#Incremental.
Consulteu cp -al per a més informació de com fer còpies incrementals.
Recursos:
Es pot fer amb l'ordre find:
$ sudo find / -inum 6242512 /home/sergi/aborrar/prova/linkdurb /home/sergi/aborrar/prova/b
Consulteu ln.
Consulteu stat.
La tercera columna de la llista llarga (long list) de ls (opció -l) mostra el nombre de links durs d'un fitxer.
Consulteu també ls.