103.3. Realitzar tasques bàsiques d'administració de fitxers
De SergiTurWiki
| Certificat | LPIC-1 |
| Examen: | 101 (torneu a la resta de temes) |
| Fitxers: | LPI103.3_TasquesBasiquesAdministracioFitxers.pdf (LPI103.3_TasquesBasiquesAdministracioFitxers.odp), EstandardFHS.pdf |
| 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/103.3 |
| Usuari: | anonymous |
| Paraula de pas: | qualsevol paraula de pas |
Els fitxers són bàsics en sistemes operatius Linux. De fet, normalment un sistema operatiu no és res més que un conjunt de fitxers emmagatzemats en una memòria secundària no volàtil. Normalment el sistema operatiu es guarda al disc dur del sistema, tot i que actualment també podem trobar sistemes Live-CD/DVD o sistemes emmagatzemats en un llapis de memòria USB).
Podem classificar els fitxers que trobem en un sistema en 3 tipologies:
- Fitxers del Sistema Operatiu: Tot sistema operatiu necessita disposar d'un mínim de fitxers per tal de funcionar. Aquests fitxers poden ser fitxers de configuració, executables i aplicacions bàsiques del sistema, etc. Com veurem més endavant, a Linux, TOT acaba sent un fitxer. Per exemple, els dispositius de maquinari del sistema tenen els seus corresponents fitxers a la carpeta /dev.
- Fitxers d'aplicacions: Tal i com hem vist als temes relacionats amb la gestió de paquets, les aplicacions també no són res més que un conjunt de fitxers que s'instal·len al sistema.
- Fitxers d'usuari: Són aquells fitxers que contenen informació pròpia dels usuaris, com documents de text, fitxers multimèdia, fitxers d'aplicacions, etc.
En tots 3 casos, la quantitat de fitxers i tipus de fitxers depèn del tipus de sistema operatiu, de les aplicacions instal·lades i de l'ús que fan del sistema els usuaris.
En temes anteriors (LPI 102.1) hem descrit com preparar un sistema de fitxers mitjançant el particionat del disc dur i preparant, mantenint i muntant el sistema de fitxers escollit. Aquest apartat és la continuació lògica pel que fa la gestió de fitxers del sistema
Com a administrador, saber gestionar els fitxers del sistema és una competència bàsica. En aquest apartat coneixerem les ordres bàsiques per tal de gestionar fitxers en sistema Linux.
Objectius del tema
| 103.3. Realitzar tasques bàsiques d'administració de fitxers | |
|---|---|
|
|
| |
Àrees Clau de Coneixement:
|
|
La següent és una llista parcial de fitxers, termes i utilitats utilitzades: | |
|
Apunts: LPI 103.3. Realitzar tasques bàsiques d'administració de fitxers | |
Plantilla
Altres objectius relacionats
- LPI 104.6. Crear i canviar els enllaços durs i simbòlics
Per coherència, les transparències d'aquest tema inclou l'explicació del objectius indicats en aquest apartat.
| 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 | |
Noms del fitxers i conceptes bàsics
Els noms de fitxers en Linux són força similar al sistemes de noms d'altres sistemes operatius, però amb algunes característiques pròpies que aclarirem en aquest apartat. Les principals característiques dels noms de fitxer a Linux són:
- El nom d'un fitxer no és res més que una seqüència o cadena de caràcters (String) que identifiquen de forma unívoca el fitxer dins del sistema.
- Els noms de fitxer en Linux poden contenir qualsevol caràcter excepte:
- Barra (/ forward slash): aquest caràcter està reservat per indicar l'arrel del sistema de fitxers (root) i també és el separador de directoris.
- Caràcter null: s'utilitza per indicar el final de segments de text
- La mida del noms dels fitxers en sistemes operatius Linux moderns normalment està compresa entre un mínim d'un caràcter i un màxim de 255 caràcters (255 bytes). La mida màxima depèn del sistema de fitxers utilitzat, els més habituals (ext2fs, ext3fs, ReiserFS, XFS, etc.) utilitzant com a mida màxima 255. Als primers sistemes operatius Unix la mida es trobava limitada a 14 caràcters.
- Es distingeix entre majúscules i minúscules (case sensitive)
- Les extensions, tot i que s'utilitzen per comoditat, no són normatives.
- Els directoris a Linux són un tipus especific de fitxer i com a tals se'ls hi aplica les mateixes característiques que als "fitxers normals". Cal tenir en compte però que la carpeta arrel sempre és anomenada /.
El nom d'un fitxer ha de ser únic dins d'una carpeta concreta, però podem tenir múltiples fitxers amb el mateix nom sempre i quan es trobin a carpetes diferents del sistema.
Tot i que tal com podeu veure podem posar noms de fitxers tant complicats com vulguem, normalment s'apliquen les següents recomanacions a l'hora de donar noms als fitxers:
- Utilitzar només caràcters alfanumèrics (a-z i 1-9) en minúscules
- Normalment s'utilitza el guió baix (_ underscore) com a substitut dels espais o alternativament també el guió simple (- hyphen) o el punt (. period)
Com a excepció al comentat anteriorment, alguns noms de fitxers com README, INSTALL, NEWS, AUTHORS, LICENSE s'escriuen típicament en majúscules. Aquest fitxers normalment formen part de la documentació de les aplicacions.
Vegeu Punctuation a la wikipedia per tal d'obtenir més informació sobre els noms del signes de puntuació en anglès.
Altres caràcters com el dolar ($), el percentatge (%), els signes de puntuació, els parentèsis, corxetes, etc, es poden utilitzar però s'eviten per tal d'evitar confusions amb el sentit que tenen aquest per a l'interpret d'ordres.
Els espais estan permesos en els noms de fitxer tot i que sovint no es recomanen per que poden ser incompatibles amb aplicacions antigues o obsoletes.
Tot i que no és obligatori, molts fitxers a Linux tenen extensions. Les extensions permeten identificar a simple vista el tipus de fitxer. Cal tenir en compte que a més, alguns fitxers poden tenir doble extensió, com per exemple:
fitxer_empaquetat_i_comprimit.tar.gz
NOTA: tingueu en compte que el fet de posar una extensió concreta a un fitxer no implica que el fitxer sigui d'aquell tipus. Vegeu l'ordre file, que us permet identificar el tipus de fitxer.
Un fitxer no és res més que un conjunt d'informació relacionada entre si que des de la perspectiva del usuari sembla un sol bloc de dades. Els noms de fitxer serveixen per tal que els usuaris puguin identificar els fitxers i facilita la tasca de tornar a trobar els fitxers en el futur. En certa manera és una mecanisme similar als noms de domini d'Internet, que permeten recordar de forma més fàcil l'adreça d'un servidor d'Internet, en compte d'utilitzar adreces IP. Cal recordar, que el sistema operatiu no treballa realment amb els noms de fitxers sinó que utilitza els Sistemes_de_fitxers#inode inodes.
Recursos:
Fitxers ocults i fitxers de còpia de seguretat
Els fitxers (o directoris) que comencen per punt (.) són tractats pel sistema com fitxers ocults. Aquest fitxers no es mostren per defecte en aplicacions com ls o navegadors gràfics com nautilus a no ser que s'indiqui mitjançant paràmetres o opcions de menú concretes.
Per exemple, en el cas de ls, es pot indicat que ens mostri els fitxers ocults amb l'opció -a (all):
$ ls -la total 371556 drwxr-xr-x 117 sergi sergi 12288 2009-10-27 20:52 . drwxr-xr-x 6 root root 4096 2009-09-10 17:31 .. drwx------ 5 sergi sergi 4096 2009-08-23 11:31 .adobe drwxr-xr-x 3 sergi sergi 4096 2009-05-15 05:57 .ApacheDirectoryStudio -rw------- 1 sergi sergi 198406 2009-10-27 21:33 .bash_history -rw------- 1 sergi sergi 10950 2009-06-07 20:15 .bash_history_backup -rw-r--r-- 1 sergi sergi 220 2009-04-26 10:50 .bash_logout -rw-r--r-- 1 sergi sergi 3216 2009-06-10 10:31 .bashrc -rw-r--r-- 1 sergi sergi 3227 2009-06-10 10:29 .bashrc~ drwxr-xr-x 2 sergi sergi 4096 2009-08-17 20:36 bin drwxr-xr-x 2 sergi sergi 4096 2009-10-24 15:10 .bluefish drwxr-xr-x 17 sergi sergi 4096 2009-10-24 15:10 .cache ...
NOTA: Tingueu en compte que els directoris especials . i .. són un tipus especific de directoris ocults.
Cal tenir en compte que a diferència d'altres sistemes com DOS (8.3 filename) el punt no s'utilitza només com a separador entre el nom del fitxer i la seva extensió. A més podem trobar més d'un punt en el nom d'un fitxer. De fet com heu vist, a l'inici del fitxer indica fitxer ocult, també s'utilitza sovint com a alternativa a l'espai i evidentment també per a indicar la extensió del fitxer.
El directoris ocults són molt utilitzats per tal d'emmagatzemar les configuracions d'usuari a la seva carpeta d'usuari (la HOME).
Per conveni, alguns programes realitzen còpies de seguretat automàtiques de fitxers. Normalment aquestes còpies de seguretat tenen com a nom el nom del fitxer original + el símbol titlla (~).
Algunes aplicacions (per exemple alguns navegadors de fitxers d'entorn gràfic com nautilus), per defecte no ens mostren aquests fitxers ja que són tractats igual que els fitxers ocults. Per mostrar aquest tipus de fitxers cal indicar-lo als menús de l'aplicació.
Escapament de caràcters. Barra invertida (\)
Tot i que es possible utilitzar espais en els noms de fitxer, a l'hora d'escriure el nom de fitxers amb espai a l'interpret d'ordres és necessari escapar l'espai amb la contrabarra (\ backslash) o posar el nom del fitxers entre cometes dobles ("). Per aquest raó, sovint els espais són subtituits per guions baixos, guions simples o punts.
Ajuda en l'acabament dels noms dels fitxers (file completion)
Consulteu:
LPI_103.1#Ajuda_en_l.27acabament_d.27ordres_.28command_completion.29
Caràcters especials i caràcters de substitució (file globbing)
Alguns caràcters tenen un significat especial i s'ha d'evitar el seu ús en noms de fitxers. Aquests caràcters són:
Asterisc (*):
L'asterisc és el caràcter de substitució, comodí o wildcard més utilitzat i coincideix amb qualsevol caràcter o conjunt de caràcters. Per exemple:
$ ls p*a
Els caràcters de substitució són interpretats per l'interpret d'ordres i passat un cop substituïts a l'ordre que estem utilitzant. A aquest procés se l'anomena file globbing.
Coincideix amb qualsevol nom de fitxer que comenci amb p i acabi amb a, com prova, pap, pepa, padasseraerefaea, o qualsevol altre combinació.
Interrogant (?):
L'interrogant (? question mark) és el comodí que coincideix amb qualsevol caràcter. A diferència de l'asterisc, només coincidirà amb un sol caràcter. Per exemple, p?p, coincidirà amb:
pap pep pip pwp
O qualsevol altre combinació similar.
Valors entre claudàtors
Amb els claudàtors podem indicar rangs de caràcters o combinacions OR. Per exemple:
p[ao]p
coincideix només amb pap o pop.
També és possible indicar rangs amb l'ús del guió. Per exemple:
p[a-z]p
Coincideix amb qualsevol paraula de 3 lletres que comencin i cabin amb p i tinguin un caràcter alfabètic en minúscules a la segona posició. Això és diferent de:
p?p
Ja que el comodí ? és substitueix per qualsevol caràcter, ja sigui alfabètic o no i sense fer distinció entre majúscules i minúscules
Barra invertida (\):
Com hem vist en apartats anteriors, serveix per escapar caràcters especials.
També cal incloure en aquesta llista la barra (/) que com hem dit anteriorment es reserva com a nom de l'arrel del sistema i com a separador de noms de carpetes. De fet és l'únic caràcter que no podreu utilitzar, la resta es poden utilitzar però és recomanable no utilitzar-los per tal d'evitar confusions.
Sistemes de fitxers FAT i NTFS
Tal i com hem vist en temes anteriors, és possible muntar i accedir sistemes de fitxers com FAT o NTFS a Linux.
Filesytem type codes!
- msdos: Sistema de noms de fitxers de DOS (8.3)
- vfat: Noms de fitxers llargs a l'estil de Windows
- umsdos: extensió només per a Linux que suporta el noms de fitxers a l'estil Linux.
Ordres de manipulació de fitxers
En aquest apartat veurem les ordres bàsiques que ens permeten llistar, moure, copiar, canviar de nom i eliminar fitxers.
ls. Mostrar els continguts d'un directori
L'ordre ls és una abreviatura de list (llistar) i ens permet mostrar els fitxers d'un directori. Si executem ls sense paràmetres
$ ls bin Documents examples.desktop Imatges Música Plantilles provesn Vídeos workspace.tar.gz.1 Desktop Escriptori highlight.css ies4linux-latest.tar.gz Linkat 3 Musiquetes.pls prova* Públic workspace.tar.gz
ls ens mostra els fitxers no ocults del directori de treball (recordeu que pode saber quin és el vostre directori de treball amb l'ordre pwd o sovint també mitjançant el PROMPT). La següent ordre és idèntica a l'anterior:
$ ls [.]
Com sabeu el punt sempre fa referència al directori de treball actual. La sintaxi completa de ls és:
$ ls [opcions] [fitxers]
és a dir, l'ordre ls suporta un bon grapat d'opcions. Podeu consultar el manual de l'ordre amb:
$ man ls
per obtenir el detall de totes les opcions que suporta ls. Algunes de les opcions més útils es mostren als següents apartats. Podeu obtenir informació extra amb l'ordre info:
$ info coreutils ls
Mostrar tots els fitxers (mostrar els fitxers ocults)
Si voleu que ls us mostri tots els fitxers (ocults i normals) heu d'utilitzar l'opció -a (-all):
$ ls -a . .cache .esd_auth .gnupg ies4linux-latest.tar.gz .mozilla provesn .thumbnails workspace.tar.gz .. .compiz examples.desktop .gstreamer-0.10 Imatges .mplayer Públic .tomboy workspace.tar.gz.1 .adobe .config .fontconfig .gtk-bookmarks .java Música .pulse .tomboy.log .Xauthority .bash_history .dbus .gconf .gvfs .joe_state Musiquetes.pls .pulse-cookie .update-manager-core .xsession-errors .bash_logout Desktop .gconfd highlight.css .kde .nautilus .purple .update-notifier .bashrc .dmrc .gksu.lock .ICEauthority Linkat 3 Plantilles .recently-used.xbel Vídeos .bashrc~ Documents .gnome2 .ies4linux .local .profile .ssh .VirtualBox bin Escriptori .gnome2_private ies4linux-2.99.0.1 .macromedia prova* .sudo_as_admin_successful .wapi
Observeu que també es mostren les carpetes especials . i .. (que com comencen per punt són tractades com a carpetes ocultes).
L'exemple anterior mostra els continguts de la HOME d'un usuari. En aquesta carpeta és habitual trobar directoris ocults amb les configuracions de les aplicacions que utilitza l'usuari, per exemple, la carpeta .mozilla conté les configuracions de les aplicacions de Mozilla (Firefox, thunderbird...).
Si no voleu mostrar les carpetes implicites . i .., podeu utilitzar l'opció -A (--almost-all).
Mostrar colors
El paràmetre --color produeix una sortida amb colors que diferencien entre els diferents tipus de fitxers (directoris, fitxers, enllaços, etc). L'esquema de colors per defecte és el següent:
| Color | Tipus de fitxer |
|---|---|
| Negre | Fitxer normal |
| Blau | Directoris |
| Vermell | Fitxers comprimits |
| Blanc | Fitxers de text |
| Rosa | Imatges |
| Cyan | enllaços |
| Groc | Fitxers especials de dispositiu |
| Verd | executables |
| Vermell que parpadeja | enllaços trencats |
Algunes distribucions, com per exemple Ubuntu, configuren l'entorn de l'interpret d'ordres l'usuari per tal de que per defecte s'utilitzin colors amb l'ordre ls. això es fa afegint una alias com el següent:
alias ls=’ls --color=auto’
Al fitxer /etc/profile o al fitxer .bashrc.
Els colors només funcionen en consoles gràfiques (la majoria d'emuladors de terminal) i en algunes consoles remotes o no gràfiques pot no funcionar.
Mostrar recursivament
L'opció -R (--recursive)) mostra els continguts de la carpeta indicada i de totes les subcarpetes.
Mostrar múltiples directoris al mateix temps
Es pot fer indicant els directoris que volem mostrar
$ ls /home /bin /bin: bash bzip2 cp dir fgrep kbd_mode mknod nc ping run-parts sync uncompress zforce bunzip2 bzip2recover cpio dmesg fuser kill mktemp nc.traditional ping6 sed tailf unicode_start zgrep bzcat bzless dash dnsdomainname fusermount ld_static more netcat ps setfont tar vdir zless bzcmp bzmore date dumpkeys grep ln mount netstat pwd setupcon tempfile which zmore bzdiff cat dbus-cleanup-sockets echo gunzip loadkeys mountpoint ntfs-3g rbash sh touch zcat znew bzegrep chgrp dbus-daemon ed gzexe login mt ntfs-3g.probe readlink sh.distrib true zcmp bzexe chmod dbus-uuidgen egrep gzip ls mt-gnu open rm sleep ulockmgr_server zdiff bzfgrep chown dd false hostname lsmod mv openvt rmdir stty umount zegrep bzgrep chvt df fgconsole ip mkdir nano pidof rnano su uname zfgrep /home: bego bego.old prova sergi
Mostrar les metadades del fitxers
Els fitxers contenen més informació apart del seu nom i el seu contingut. A aquesta informació normalment se l'anomena metadades. Les metadades són informació sobre el fitxer, com per exemple el propietari del fitxer, els permisos, la mida, etc. Per mostrar les metadades cal utilitzar l'opció -l:
$ ls -l total 22576 drwxr-xr-x 2 sergi sergi 4096 2007-01-30 22:52 2 drwxr-xr-x 74 sergi sergi 4096 2006-09-16 11:29 2003 drwxr-xr-x 33 sergi sergi 4096 2006-09-25 19:22 2004 drwxr-xr-x 9 sergi sergi 4096 2006-09-25 20:30 2005 drwxr-xr-x 13 sergi sergi 4096 2007-01-30 22:53 2006 ...
La primera columna són els permisos del fitxer. El primer bit indica el tipus de fitxer i la resta els permisos. La segona i tercera columna són respectivament l'usuari i el grup propietaris del fitxers. A la quarta columna trobem la mida del fitxer en bytes. La cinquena columna conté la data i l'hora de la última modificació del fitxers i l'última columna és el nom del fitxer.
També es pot utilitzar els equivalents:
--format=long --format=verbose
Mostrar els inodes
Com ja hem comentat anteriorment, el sistema operatiu Linux internament utilitza els inodes. El nom de fitxer és una ajuda per als usuaris que utilitzen el sistema operatiu, però el sistema operatiu sempre fa una conversió de nom de fitxer a inode, ja que l'inode és realment l'identificador que utilitza el sistema.
$ ls -i 11470530 2 13320504 boda 11468838 MVI_0059.AVI 11468802 2003 13320506 cursa bombers 12058665 NewYork2005
Abans del nom de cada fitxer es mostra l'inode.
Mostrar les mides del fitxer en format llegible pels humans
Ja hem vist que amb l'opció -l podem mostrar la mida del fitxer. La mida es mostra en bytes. En el cas de fitxers grans pot ser bastant més útil per als usuaris mostrar les mides en múltiples de K (KyloBytes), M(Megabytes), etc. Això es pot fer amb la opció -h' (--human-readable):
$ ls -lh total 23M drwxr-xr-x 2 sergi sergi 4,0K 2007-01-30 22:52 2 drwxr-xr-x 74 sergi sergi 4,0K 2006-09-16 11:29 2003 -rw-r--r-- 1 sergi sergi 22M 2005-10-08 14:06 MVI_0059.AVI ...
Mostrar el tipus (sufix) de fitxer (-F)
Consulteu Tipus de fitxers.
No mostrar els fitxers de còpia de seguretat (~)
L'opció -B (--ignore-backups) no mostra els fitxers acabat en titlla. Aquesta opció és identica a:
--ignore='*~'
o
--ignore='.*~'
Mostrar només els directoris (-d)
???
Mostrar tota la informació
Es poden combinar paràmetres. Per exemple, per mostrar tota la informació podeu escriure:
$ ls -lia
Que és equivalent a executar:
$ ls -l -i -a
Modificar l'ordre i el mode en que es mostra la sortida
L'ordre per defecte en que es mostren els fitxers és per l'ordre de número ASCII. Podem modificar aquest comportament amb el paràmetre --sort i els seus equivalents:
-S o --sort=size: Ordena per mida de fitxer -t o --sort=time: Ordena per data de modificació (mtime de l'inode). Els fitxers nous primer -u o --time=atime: En sortides amb -l ordena per la última data d'accés al fitxer (atime de l'inode) -U o --sort=none: sense ordre. És útil al mostrar carpetes amb molts fitxers, ja que el fet de no ordenar pot fer més ràpida l'execució de l'ordre. -v o --sort=version: Ordena per versió -X o --sort=extension: Ordena per extensió del fitxer.
A més podem utilitzar l'opció -r (--reverse) per invertir l'ordre.
$ touch a $ touch b $ touch c $ touch d $ touch B $ touch Ba $ touch D
L'orde normal és:
$ ls a b B Ba c d D
I l'ordre per data d'última modificació és:
$ ls -l --sort=time total 0 -rw-r--r-- 1 sergi sergi 0 2009-10-11 17:51 D -rw-r--r-- 1 sergi sergi 0 2009-10-11 17:51 Ba -rw-r--r-- 1 sergi sergi 0 2009-10-11 17:51 B -rw-r--r-- 1 sergi sergi 0 2009-10-11 17:51 d -rw-r--r-- 1 sergi sergi 0 2009-10-11 17:50 c -rw-r--r-- 1 sergi sergi 0 2009-10-11 17:50 b -rw-r--r-- 1 sergi sergi 0 2009-10-11 17:50 a
També podem modificar la forma en que es mostren les dades de sortida. Per exemple, podem mostrar la sortida en una sola columna:
$ ls -1 bin Desktop Documents Escriptori examples.desktop highlight.css ies4linux-2.99.0.1 ies4linux-latest.tar.gz Imatges Linkat 3 Música Musiquetes.pls Plantilles prova prova* provesn provesnmil Públic Vídeos workspace.tar.gz workspace.tar.gz.1
O de la forma habitual però en comptes d'ordenar per columnes ordenar per files:
$ ls -x
O mostrar una llista separada per comes:
$ ls -m bin, Desktop, Documents, Escriptori, examples.desktop, highlight.css, ies4linux-2.99.0.1, ies4linux-latest.tar.gz, Imatges, Linkat 3, Música, Musiquetes.pls, Plantilles, prova, prova*, provesn, provesnmil, Públic, Vídeos, workspace.tar.gz, workspace.tar.gz.1
També podem mostrar els noms de fitxers entre comets i combinar paràmetres per per exemple obtenir un fitxer CSV:
$ ls -mQ "a", "b", "B", "Ba", "c", "d", "D"
Consultar les marques de temps
Consulteu l'article touch.
Copiar fitxers. cp
L'ordre cp (copy) permet copiar fitxers (o carpetes). La sintaxi de cp és:
$ cp [opcions] origen destinació
L'origen pot ser un o més fitxers (ja sigui indicant una llista o utilitzant comodins com l'asterisc). La destinació pot ser el nom d'un fitxer o una carpeta. En el cas d'escollir una carpeta el fitxer destinació tindrà el mateix nom que l'origen però es trobarà a la carpeta indicada i en el cas d'un fitxer el nom del fitxer de destinació és l'indicat pel paràmetre destinació.
L'ordre suporta un gran nombre d'ocpcions que podeu consultar amb detall al manual:
$ man cp
O utilitzant l'ordre info:
$ info coreutils cp
Fer una còpia recursiva. Copiar carpetes
Per defecte la comanda cp no copia carpetes:
$ cp bin Documents cp: es descarta el directori «bin»
Cal indicar l'opció -R o -r (--recursive) per tal de copiar la carpeta i tots els fitxers i subdirectoris de la carpeta:
$ cp -r bin Documents
Preservar el propietari i els permisos del fitxer
Normalment un fitxer copiat és propietat de l'usuari que executa l'ordre cp i els permisos són els especificats per la mascara per defecte. L'opció -p (--preserve) manté els permisos i el propietari del fitxer original. Cal tenir en compte que només és realitza l'acció si no entra en conflicte amb els permisos del fitxer d'origen i de la destinació.
Fer una copia exacte (arxiu)
L'opció arxivar (-a o --archive) copia els fitxers tal qual, mantenint els permisos i els propietaris, els enllaços i copia de forma recursiva. És equivalent a:
$ cp -dpR
Copiant enllaços simbòlics
Cal tenir en compte que al utilitzar l'opció -R en comptes de preservar els enllaços simbòlics, es copien els fitxers als quals els enllaços simbòlics apunten.
NOTA: Si el mode no és recursiu, aleshores és manté els enllaç simbòlic.
Podeu utilitzar l'opció -d per tal de preservar els enllaços simbòlics.
Aquesta opció és equivalent a:
--no-dereference (-P)
o
--preserve=links
Altres paràmetres que mantenen els enllaços simbòlics són:
--archive o -a -d o --dereference -L -H
Copiar tot el camí complet
El paràmetre --parents, crea totes les carpetes necessàries per copiar el path complet d'un fitxer.
~$ cp -r --parents /etc/network ~ ~$ ls etc/network/ if-down.d if-post-down.d if-pre-up.d if-up.d interfaces
Especificar la carpeta de destinació (--target-directory)
Es pot utilitzar l'opció --target-directory (-t) per tal d'indicar la carpeta de destinació.
Actualitzar o copiar només si el fitxer origen és més nou que el de destinació (-u update)
L'opció -u (--update) indica a l'ordre cp que només ha de realitzar l'acció si el fitxer original és més nou que el fitxer de destinació. La comparació es fa per data.
Podeu utilitzar l'ordre rsync per a fer copies d'aquest estil de forma més avançada.
Mode interactiu (-i)
Una qüestió molt important a tenir en compte amb l'ordre cp és que si el fitxer destí ja existeix el substitueix sense preguntar. Podem utilitzar l'opció -i (interactiu) per a que pregunti.
$ cp -i a b
Podem crear un alias per forçar que aquest comportament sigui el per defecte. Afegim al fitxer ~/.bashrc les següents línies:
#------------------------------------------------------------------------------ # Security. #------------------------------------------------------------------------------ alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias ln='ln -i'
Per desfer els alias teniu la comanda unalias.
Augmentar la quantitat d'informació mostrada a la sortida (verbose)
Per defecte l'ordre cp és una ordre silenciosa. De fet, si tot va correctament, no es mostra cap missatge (seguint la premisa de Unix: No News Good News).
Podeu mostrar informació de la còpia amb el paràmetre -v (--verbose):
$ cp -rv /etc/network ~ «/etc/network» -> «/home/sergi/network» «/etc/network/interfaces» -> «/home/sergi/network/interfaces» «/etc/network/if-post-down.d» -> «/home/sergi/network/if-post-down.d» «/etc/network/if-post-down.d/wpasupplicant» -> «/home/sergi/network/if-post-down.d/wpasupplicant» «/etc/network/if-post-down.d/avahi-daemon» -> «/home/sergi/network/if-post-down.d/avahi-daemon» «/etc/network/if-post-down.d/wireless-tools» -> «/home/sergi/network/if-post-down.d/wireless-tools» «/etc/network/if-pre-up.d» -> «/home/sergi/network/if-pre-up.d» «/etc/network/if-pre-up.d/wpasupplicant» -> «/home/sergi/network/if-pre-up.d/wpasupplicant» «/etc/network/if-pre-up.d/wireless-tools» -> «/home/sergi/network/if-pre-up.d/wireless-tools» «/etc/network/if-pre-up.d/dhclient3-apparmor» -> «/home/sergi/network/if-pre-up.d/dhclient3-apparmor» «/etc/network/if-down.d» -> «/home/sergi/network/if-down.d» «/etc/network/if-down.d/wpasupplicant» -> «/home/sergi/network/if-down.d/wpasupplicant» «/etc/network/if-down.d/avahi-autoipd» -> «/home/sergi/network/if-down.d/avahi-autoipd» «/etc/network/if-down.d/postfix» -> «/home/sergi/network/if-down.d/postfix» «/etc/network/if-up.d» -> «/home/sergi/network/if-up.d» «/etc/network/if-up.d/ntpdate» -> «/home/sergi/network/if-up.d/ntpdate» «/etc/network/if-up.d/wpasupplicant» -> «/home/sergi/network/if-up.d/wpasupplicant» «/etc/network/if-up.d/avahi-daemon» -> «/home/sergi/network/if-up.d/avahi-daemon» «/etc/network/if-up.d/openssh-server» -> «/home/sergi/network/if-up.d/openssh-server» «/etc/network/if-up.d/avahi-autoipd» -> «/home/sergi/network/if-up.d/avahi-autoipd» «/etc/network/if-up.d/mountnfs» -> «/home/sergi/network/if-up.d/mountnfs» «/etc/network/if-up.d/postfix» -> «/home/sergi/network/if-up.d/postfix»
Quantes més v indiqueu, major serà la quantitat d'informació mostrada per pantalla.
$ cp -rvvv /etc/network ~
cp -al
Aquesta és una opció molt interessant ja que crea una copia d'un fitxer o carpeta amb dos opcions interessants:
- -l: En comptes de fer una còpia crea un enllaç dur.
- -a: opció archive. Manté els permisos, enllaços, propietaris, etc dels fitxers. Permet fer una còpia exacte tant dels fitxers com de les metadades d'aquest fitxer
El resultat és una còpia exacte però sense ocupar dos vegades l'espai original i sense tardar tant en fer la còpia. Per que la còpia sigui bona l'únic que cal fer és que les operacions sobre la copia només siguin d'afegir fitxers o eliminar (millor dic unlink) els fitxers
Si ho combinem amb rsync es poden fer còpies de seguretat incrementals completes amb la següent seqüència de comandes:
$ rm -rf backup.3 $ mv backup.2 backup.3 $ mv backup.1 backup.2 $ cp -al backup.0 backup.1 $ rsync -a --delete source_directory/ backup.0/
Si aquestes comandes s'executen un cop al dia (per exemple amb cron), les còpies backup.0, backup.1, backup.2, i backup.3 són una còpia de seguretat exacte de la carpeta source_directory/ tal i com és avui, ahir, abans d'ahir i 3 dies abans (excepte que els permisos i els propietaris dels fitxers de les còpies antigues tenen els valors actuals)
També es pot des de la versió rsync-2.5.6, utilitzar --link-dest, canviem les últimes 2 comandes per:
$ mv backup.0 backup.1 $ rsync -a --delete --link-dest=../backup.1 source_directory/ backup.0/
Aquest mètode és millor per que si que manté els permisos i els propietaris.
Recursos:
Moure i renombrar fitxers (mv)
L'ordre mv (move) és utilitzada per moure fitxers o directoris de una carpeta a un altre.
IMPORTANT: A Linux no existeix una ordre per canviar el nom d'un fitxer. S'utilitza l'ordre mv
La sintaxi de l'ordre és:
$ mv [opcions] origen destinacio
Per exemple:
$ mv document.txt /home/sergi/Documents/
NOTA: Fixeu-vos que s'ha utilitzat la barra final (/). Això pot ser útil per tal d'evitar errors, ja que ens assegurem que la destinació és una carpeta i no pas un fitxer anomenat Documents. En aquest últim cas el fitxer de destinació seria sobreescrit sense preguntar.
L'ordre mv compateix amb l'ordre cp molts paràmetres com --interactive, --update, --force o --verbose.
Altres paràmetres com --preserve, --recursive o --archive no s'apliquen a l'ordre mv.
Si els fitxers es mouen dins d'un mateix sistema de fitxers, l'ordre mv només modifica els punters als fitxers fet que fa que l'operació sigui força més ràpida. En canvi, per exemple si movem un fitxer del disc dur a un llapis USB, aleshores l'ordre ha de copiar primer els fitxers a la destinació i després esborrar els fitxers origen.
Per canviar el nom d'un fitxer s'utilitza mv:
$ mv nom_original nom_nou
Es pot canviar el nom i canviar la destinació en una mateixa operació:
$ mv document.txt /home/sergi/Documents/nou_nom_document.txt
L'ordre mv i els inodes
La comanda move s'utilitza per canviar el nom del fitxer o la seva situació dins del sistema de fitxers. L'acció de moure no modifica l'inode del fitxer ni el fitxer en si, l'únic que es modifica és la seva posició dins del sistema de fitxers.
NOTA: Hi ha una excepció al comentat anteriorment. Moure un fitxer entre dos particions diferents (cada partició té la seva taula d'inodes.)
$ stat c File: «c» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 806h/2054d Inode: 6242497 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2008-05-10 11:22:58.000000000 +0200 Modify: 2008-05-10 11:22:58.000000000 +0200 Change: 2008-05-10 11:22:58.000000000 +0200 $ ls -lia c 6242497 -rw-r--r-- 1 sergi sergi 0 2008-05-10 11:22 c
$ mv c carpeta
El fitxer és idèntic en metadades:
$ stat carpeta/c File: «carpeta/c» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 806h/2054d Inode: 6242497 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2008-05-10 11:22:58.000000000 +0200 Modify: 2008-05-10 11:22:58.000000000 +0200 Change: 2008-05-10 11:36:59.000000000 +0200
I manté l'inode:
$ ls -li carpeta/c 6242497 -rw-r--r-- 1 sergi sergi 0 2008-05-10 11:22 carpeta/c
Eliminar fitxers. Ordre rm
Per tal d'esborrar un fitxer (o directori) podem utilitzar l'ordre rm (remove). La sintaxi és:
$ rm [opcions] fitxers
L'ordre mv accepta molts dels paràmetres que accepten les ordres cp i mv. Altres com --preserve, --archive, i --update no s'apliquen a l'ordre rm.
Cal tenir en compte que per esborrar un directori (i tot el seu contingut) cal indicar l'opció --recursive (-r o -R):
$ rm -r directori
IMPORTANT: Cal tenir en compte que amb l'ordre rm no s'utilitza cap tipus de paperera que ens permeti recuperar els fitxers esborrats. Algunes eines gràfiques si que envien per defecte els fitxers esborrar a la paperera però rm no. Cal tenir molt de compte amb aquesta ordre sobretot si s'executa com a root, ja que pot inutilitzar el sistema molt fàcilment.
Per esborrar sense preguntar podem utilitzar force -f:
$ rm -rf carpeta1
Cal tenir en compte que al superusuari mai li pregunta res...
Crear un fitxer. touch
Els sistemes Linux mantenen 3 marques de temps (timestamps) per a cada fitxer del sistema:
- Temps de l'últim accés (last acces time o atime): Marca l'últim cop que el fitxer ha estat llegit.
- Temps de l'última modificació (last modification time o mtime): Marca l'últim cop que els continguts del fitxer van ser modificats.
- Temps de canvi (change time o ctime): marca l'últim cop que els permisos del fitxer van ser modificats.
Moltes utilitats es basen en aquests temps, per exemple l'ordre cp i l'opció update o l'ordre make, la qual només torna a compilar aquells fitxers la data del fitxer de codi font és més nova que el fitxer compilat.
L'ordre touch permet modificar les marques de temps d'un fitxer. La sintaxi és la següent:
$ touch [opcions] fitxers
Per defecte, l'ordre touch estableix la data de modificació i de l'últim accés al temps actual. Per tant, serveix per actualitzar la data d'un fitxer sense modificar els seus continguts.
L'ordre touch també s'utilitza per crear un fitxer buit, ja que si el fitxer no existeix es crea un fitxer buit. Si no voleu crear el fitxer podeu utilitzar -c o --no-create.
Les marques de temps d'un fitxer es poden consultar amb l'ordre ls. L'ordre:
$ ls -l
Mostra la data d'última modificació (mtime). Podem mostrar les altres dates amb:
$ ls -lu
Mostra el temps de l'últim accés (atime) i:
$ ls -lc
Mostra el temps de canvi (ctime). Per mostrar el temps complet podeu utilitzar l'opció --full-time:
$ ls -l --full-time / total 96 drwxr-xr-x 2 root root 4096 2009-07-27 11:02:19.000000000 +0200 bin drwxr-xr-x 3 root root 4096 2009-09-01 17:15:16.000000000 +0200 boot lrwxrwxrwx 1 root root 11 2009-07-27 09:31:11.000000000 +0200 cdrom -> media/cdrom drwxr-xr-x 17 root root 4580 2009-10-10 19:37:54.129417446 +0200 dev drwxr-xr-x 147 root root 12288 2009-10-10 19:37:54.000000000 +0200 etc drwxr-xr-x 6 root root 4096 2009-08-11 15:24:41.000000000 +0200 home ...
També podeu consultar les marques de temps amb l'ordre stat:
$ stat a File: «a» Size: 1 Blocks: 8 IO Block: 4096 fitxer ordinari Device: 801h/2049d Inode: 3721307 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2009-10-11 20:16:24.000000000 +0200 Modify: 2009-10-11 20:16:47.000000000 +0200 Change: 2009-10-11 20:16:47.000000000 +0200
L'ordre find ens permet cercar fitxers segons les seves marques de temps.
Modificar només el temps de l'últim accés (-a o --time=atime)
Per modificar només el temps de l'últim accés:
$ touch -a nom_de_fitxer
Per modificar el temps de l'última modificació (-m o --time=mtime)
Per modificar només el temps de l'últim accés:
$ touch -m nom_de_fitxer
Do not create file If you don’t want touch to create any files that don’t already exist, pass
Establir una marca de temps concreta
Es pot establir una marca de temps concreta amb l'opció -t. El valor s'ha d'especificar en el format:
MMDDhhmm[[CC]YY][.ss]
On
- MM: Més
- DD: Dia
- hh: hora
- mm:minutes
- CC[YY]:Any en format 2006 o 06.
- ss: segons
Un altre manera és replicar les marques de temps d'un altre fitxer amb l'opció -r (reffile) o --reference=reffile.
Tipus de fitxers
A Linux, tot són fitxers, fins i tot els directoris. Però no tots els fitxers són iguals. Els tipus de fitxers que podem trobar són:
- Fitxers normals (regular files): són els fitxers normals i corrents (ni directoris, ni enllaços, etc.)
- Directoris: Els directoris a Linux són un tipus especial de fitxers que contenen altres fitxers o directoris.
- Enllaços simbòlics: Són fitxers que apunten a altres fitxers. Consulteu l'article enllaços simbòlics.
- Endolls (Sockets): Alguns fitxers poden ser Unix Domain Sockets. Em podeu trobar exemples a la carpeta /var/run.
- Conductes (Pipes): Són un tipus especific de conductes. Consulteu conductes amb nom.
- Fitxers especials de dispositiu: Normalment són els que trobem a la carpeta /dev i poden ser de dos tipus, dispositius de bloc (b) i dispositius de caràcter (c).
Les opcions -l i -F de l'ordre ls ens permeten saber de quin tipus és un fitxer.
L'opció -F ens mostra una caràcter addicional al final del nom del fitxer. Per exemple, els descriptors de fitxers de les sortides i entrades estàndard, són enllaços simbòlics:
$ ls -F /dev/st* /dev/stderr@ /dev/stdin@ /dev/stdout@
el símbol arrova (@) indica que es tracta d'un fitxer de tipus socket. Els símbols utilitzats per als diferents tipus amb l'opció -F són:
Res Fitxer normal / Directori @ Enllaç simbòlic = Endoll ( (Domain) Socket) | Conducte (Named pipes) * Fitxer executable
Hi ha altres tipus de fitxer, els podeu consultar amb:
$ info coreutils ls
Consulteu l'opció -l del manual.
L'opció -l ens mostra a la primera columna el tipus de fitxer seguit dels permisos. Per exemple:
$ ls -la /dev total 4 drwxr-xr-x 17 root root 4580 2009-10-10 19:37 . drwxr-xr-x 22 root root 4096 2009-10-10 19:27 .. crw------- 1 root video 10, 175 2009-10-10 19:27 agpgart crw-rw----+ 1 root audio 14, 4 2009-10-10 19:27 audio drwxr-xr-x 2 root root 660 2009-10-10 19:37 block drwxr-xr-x 3 root root 60 2009-10-10 19:27 bus lrwxrwxrwx 1 root root 3 2009-10-10 19:27 cdrom -> sr0 lrwxrwxrwx 1 root root 3 2009-10-10 19:27 cdrw -> sr0 drwxr-xr-x 2 root root 4120 2009-10-10 19:37 char crw------- 1 root root 5, 1 2009-10-11 07:44 console
Els caràcters tenen el següent sentit:
- Fitxer normal (Regular File) d Directori l enllaç simbòlic c Fitxer especial de dispositiu de caràcter b Fitxer especial de dispositiu de bloc s endoll ( (Domain) socket) p condute ( Named Pipe)
També cal tenir en compte que si utilitzem ls amb l'opció --color, els colors canviaran segons els tipus de fitxer.
Enllaços
Consulteu l'objectiu:
LPI_104.6.Crear i canviar els enllaços durs i simbòlics
Control d'accés als fitxers
Gestionar els propietaris d'un fitxer
chown
Consulteu chown.
Gestionar els permisos d'un fitxer
olic Modes::). But `ls' combines
multiple bits into the third character of each set of permissions
as follows:
`s'
If the set-user-ID or set-group-ID bit and the corresponding
executable bit are both set.
`S'
If the set-user-ID or set-group-ID bit is set but the
corresponding executable bit is not set.
`t'
If the restricted deletion flag or sticky bit, and the
other-executable bit, are both set. The restricted deletion
flag is another name for the sticky bit. *Note Mode
Structure::.
`T'
If the restricted deletion flag or sticky bit is set but the
other-executable bit is not set.
`x'
If the executable bit is set and none of the above apply.
`-'
Otherwise.
chmod
Consulteu chmod.
Ordres
Ordres bàsiques de manipulació de fitxers
cp
Consulteu cp
ls
Consulteu ls
mkdir
Permet crear un directori. La sintaxi és:
$ mkdir [opcions] directori [mes directoris]
Podeu consultar el manual:
$ man mkdir
o per Internet:
http://linux.die.net/man/1/mkdir
i com forma part del paquet coreutils, podeu consultar info:
$ info coreutils mkdir
Amb la opció -p crea el directori i tota la jerarquia necessària (les carpetes pare que no existeixen també les genera)
$ mkdir -p /carpeta1/carpeta2/carpeta3
També podem indicar amb quina permisos volem crear el directori utilitzant el paràmetre mode. Consulteu l'apartat permisos de fitxers.
mv
Consulteu mv
rm
Consulteu rm
rmdir
Permet eliminar directoris. La sintaxi és:
$ rmdir [opcions] directory-name (directory-name+s)
Per exemple:
$ rmdir carpeta1
NOTA: Només elimina directoris buits.
També té la opció -p (però de totes formes a d'estar buit).
Per esborrar carpetes amb fitxers cal utilitzar la comanda rm amb l'opció -r.
Ordres per arxivar i comprimir fitxers
Algunes comandes permeten arxicar un conjunt de fitxer en un sol fitxer o paquet. Els paquets són útils per mantenir còpies de seguretat, estalviar espai, etc. Linux suporta varies comandes de còpia de seguretat, en aquest apartat veurem les més conegudes: tar i cpio. També veurem ordre que ens permeten comprimir fitxers.
NOTA: Altres formats de compressió i arxivament de fitxer com zip i rar també són suportats amb Linux per ordre com zip, [[unzip], rar o unrar. De totes formes, aquest formats no són important per a la certificació LPI.
bzip2
Consulteu bzip2.
gunzip
Consulteu gunzip.
gzip
Consulteu gzip.
tar
Consulteu l'article Eines per arxivar paquets#tar.
Altres
tree
Consulteu tree.
stat
La comanda stat ens mostra la informació (metadades) d'un fitxer:
Una carpeta:
$ stat / File: `/' Size: 1024 Blocks: 2 IO Block: 4096 directory Device: 801h/2049d Inode: 2 Links: 25 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2006-03-07 16:07:36.851989210 +0100 Modify: 2006-03-02 20:09:23.000000000 +0100 Change: 2006-03-02 20:09:23.000000000 +0100
Com podeu veure l'arrel té un inode fixe (2).
Un fitxer:
$ stat d File: «d» Size: 0 Blocks: 0 IO Block: 4096 fitxer ordinari buit Device: 806h/2054d Inode: 6242498 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ sergi) Gid: ( 1000/ sergi) Access: 2008-05-10 11:23:15.000000000 +0200 Modify: 2008-05-10 11:23:15.000000000 +0200 Change: 2008-05-10 11:23:15.000000000 +0200
Consulteu l'ordre touch per tal de tenir més detalls sobre les marques de temps (timestamps).
cpio
Consulteu cpio.
dd
Consulteu dd.
file
Consulteu file.
find
Consulteu find.
touch
Consulteu touch
Exercicis
Crear una estructura de fitxers complexa. Organització dels apunts del cicle d'informàtica
Estructura de l'arbre de fitxers
+ HOME de l'usuari
|_Informàtica
|_SMX. Sistemes Microinformàtics i Xarxes
|_Mòdul 1. Nom mòdul 1
|_Mòdul 2. Nom mòdul 2
|_Mòdul 3. ...
|_ESI. Explotació de sistemes informàtics
|_Crèdit 1. Nom crèdit 1
|_Crèdit 2. Nom crèdit 3
|_Crèdit 3...
|_DAI. Disseny d'Aplicacions Informàtiques
|_Crèdit 1. Nom crèdit 1
|_Crèdit 2. Nom crèdit 3
|_Crèdit 3...
|_ASI. Administració de sistemes informàtics
|_Crèdit 1. Nom crèdit 1
|_Crèdit 2. Nom crèdit 3
|_Crèdit 3...
Podeu consultar el nom dels mòduls a:
http://acacha.org/mediawiki/index.php/SMX
Pels cicles antics podeu consultar el noms dels crèdits al currículum:
http://www.xtec.cat/fp/famprof/informatic.htm
Conversió d'imatges
Utilitzar openclipart i les comandes de imagemagick (sobretot l'eina convert)
Visualització de vídeos amb subtítols i mplayer
Navegar per un sistema de fitxers FAT32 i/o NTFS
Gravar sessions de treball
Per a un examen?.
Un programa
Vegeu també
- Comandes per a la gestió del sistema de fitxers
- Tema_19_Sistemas_operativos:_Gesti%C3%B3n_de_archivos_y_dispositivos.#Sistema_de_fitxers_Unix
Enllaços externs
Correccions pendents
- A les transparències apareix la paraula harlink en comptes de hardlink


