Este documento presenta una introducción a los fundamentos de GNU/Linux, incluyendo particiones, sistemas de archivos comunes, organización del sistema de archivos, tipos de archivos, y comandos básicos para la administración de archivos. El objetivo es enseñar técnicas avanzadas para el uso y mantenimiento del disco, así como la estructura del sistema de archivos y comandos de administración de archivos.
1. Diplomado en Software Libre
Fundamentos de GNU/Linux
Eudris Cabrera Rodríguez
@eudriscabrera
@eudriscabrera
22 Febrero 2014, Santiago de los Caballeros, R. D.
2. Asuntos Legales
Todas las marcas registradas, así como todos los logotipos, imágenes,
fotografías, audio y vídeos mostrados en esta presentación son
propiedad de sus respectivos propietarios.
Su utilización es solamente para fines ilustrativos y no pretendo dar a
entender cualquier afiliación con esas empresas.
Los conceptos y juicios de valor emitidos en esta presentación son
responsabilidad personal y no se puede entender como una posición
oficial de alguna empresa con la que he tenido relación laboral.
3. Agenda
❏
❏
❏
❏
❏
❏
❏
Particiones
Sistemas de Archivos Más Comunes
Organización del Sistema de Archivos
Tipos de Archivos
Utilidades para el Uso y Mantenimiento del Disco
Comandos Básicos de la Administración de Archivos
Búsqueda de Contenido en Archivos
4. Objetivos
❖
Aprender técnicas avanzadas para el uso y mantenimiento del disco.
❖
Conocer cómo está organizado el sistema de archivo
❖
Aprender comandos básicos para la administración del sistema de
archivos.
6. Partición
Una partición de un disco duro es una división lógica en una unidad de
almacenamiento (por ejemplo un disco duro o unidad flash), en la cual se
alojan y organizan los archivos mediante un sistema de archivos.
Existen dos tipos de particiones para almacenar data, primaria y extendida.
7. Partición Primaria
Una partición primaria es formateada y entonces se puede utilizar para
almacenar archivos.
Además, un computador sólo puede ser arrancado desde una partición
primaria.
Solo puede haber 4 particiones primarias, ó 3 particiones primarias y una
extendida.
8. Partición Extendida
Una partición extendida es otro tipo de partición que actúa como una partición
primaria; sirve para contener múltiples unidades lógicas en su interior.
Fue ideada para romper la limitación de 4 particiones primarias en un solo
disco físico.
Solo puede existir una partición de este tipo por disco, y solo sirve para
contener particiones lógicas.
Por lo tanto, es el único tipo de partición que no soporta un sistema de
archivos directamente.
9. Partición Lógica
Una partición lógica, ocupa una porción de la partición extendida o la
totalidad de la misma, la cual se ha formateado con un tipo específico de
sistema de archivos (FAT32, NTFS, ext2,...) y se le ha asignado una unidad,
así el sistema operativo reconoce las particiones lógicas o su sistema de
archivos.
Puede haber un máximo de 23 particiones lógicas en una partición extendida.
Linux impone un máximo de 15, incluyendo las 4 primarias, en discos SCSI y
en discos IDE 8963.
10. ¿Cuantas y de que Tamaño?
GNU / Linux se ejecuta muy bien con dos particiones: la principal, montada en
el directorio raíz (/) y swap, que se usa para la memoria virtual temporal.
Es el mínimo suficiente en estos sistemas operativos.
Es importante destacar que las particiones de intercambio (swap) pueden
instalarse sin problemas dentro de una partición lógica.
11. A las particiones de intercambio, al igual que a la memoria RAM, no se les asigna un
directorio; este tipo de particiones se usa para guardar ciertas réplicas de la memoria
RAM, para que de esta forma la RAM tenga más espacio para las tareas en primer plano,
guardando las tareas en segundo plano dentro de la partición de intercambio.
12. Fdisk
Permite crear particiones en el disco duro de la misma manera que su
contraparte de MS-DOS.
Cabe señalar que la versión Linux de fdisk es más difícil de usar que la versión
de MS-DOS, por lo que se recomienda crear particiones desde MS-DOS
(Puedes crear un disco de inicio con el fin de dar formato a la partición e
instalar DOS después de haber instalado Linux).
13. Fdisk
El particionamiento con fdisk puede dar lugar a la pérdida de todos los datos
del disco en cuestión.
Para invocar la utilidad debes utilizar el comando fdisk. Cuando fdisk sea
invocado sin argumentos, éste seleccionará la primera unidad de disco que
encuentre.
Pasa el nombre del dispositivo como argumento para seleccionar la unidad /
partición de tu elección (por ejemplo, el segundo disco duro IDE será
seleccionado): $ fdisk /dev/hdb
14. Fdisk
La nomenclatura para los discos duros
En Linux, los nombres de los dispositivos de almacenamiento varían en función
de si son unidades SCSI o IDE.
Para los discos IDE, el primero se llama hda, el segundo se llama hdb, etc.
Para discos SCSI, el primero se llama sda, el segundo se llama sdb y así
sucesivamente.
16. Sistemas de archivos más comunes
El sistema de archivos GNU/Linux organiza los archivos y directorios en una
estructura jerárquica.
Un sistema de archivos provee una forma de almacenar archivos que luego
podrán ser accesados al azar, incluyendo discos duro, disquetes, y CD -ROMs.
Como cintas (tape drives) son accesadas secuencialmente , no contienen un
sistema de archivos real.
17. Sistemas de archivos más comunes
FAT, FAT16, FAT32:
Sistema de archivos de MS-DOS, Windows 95 y Windows 98.
Se sigue utilizando por su sencillez y porque es reconocido por todos los
sistemas operativos.
Es un sistema de archivos muy frágil y no es tolerante a fallos, además de ser
lento con respecto a los otros.
18. Sistemas de archivos más comunes
NTFS:
Sistema de archivos de Windows NT, 2000, XP y 2003.
Es un sistema más sofisticado y rápido que es anterior y el actual estándar
de Microsoft.
Es un sistema de archivos cuya implementación es propietaria y cerrada, por
lo que no es reconocido en su totalidad por todos los sistemas operativos.
19. Sistemas de archivos más comunes
EXT2:
Sistema de archivos estándar de Linux, su organización interna
permite no necesitar defragmentación (fenómeno que se da en otros
sistemas por el cual los archivos se distribuyen de forma que el tiempo
que se tarda en acceder a ellos se incrementa, incrementando el
tiempo de acceso a disco).
20. Sistemas de archivos más comunes
EXT3:
Es la extensión de EXT2, incorpora tolerancia a fallos permitiendo una rápida
recuperación del sistema cuando el ordenador se bloqueó o apagó
inesperadamente.
ReinserFS y XFS:
Sistemas de archivos de alto rendimiento y rapidez que mejoran los sistemas
anteriores.
21. Organización del sistema de archivo
GNU/Linux está organizado en una forma jerárquica.
GNU/Linux considera cada archivo, directorio, dispositivo, y vínculo como
un archivo colocado en esta estructura.
23. Inodes
El sistema operativo GNU/Linux almacena información acerca de cada archivo,
incluyendo:
1.
2.
3.
4.
5.
6.
7.
8.
9.
Puntero a la posición física en el disco
El nombre
La identificación del dueño y grupo
Reglas de acceso
Tamaño
Fecha y tiempo que el archivo fue accedido por última vez
Fecha y tiempo de la última modificación
Fecha y tiempo de la última modificación del inode
Número de vínculos (links) al archivo
24. Inodes
Una estructura de datos, llamada el inode , es usada para almacenar la
información arriba mencionada de cada archivo con la excepción del nombre
del archivo.
El nombre del archivo es almacenado en el directorio y asociado a su propio
inode .
Cada archivo tiene un inode asociado a él, aunque cada archivo puede tener
más de un nombre a través del uso de vínculos, cada archivo tiene sólo un
inode .
25. Tipos de Archivos
GNU/Linux soporta diferente tipos de sistemas de archivos y utiliza el primer
carácter del bloque de permisos para identificar el tipo de archivo.
En su tabla de inode GNU/Linux no diferencia entre archivos y directorios.
El sistema operativo sabe si es un archivo regular o un directorio por el
carácter de tipo.
27. Fsck
fsck es un utilitario usado para verificar la estructura del sistema de archivos y
reparar cualquier inconsistencia en el disco.
Los problemas más frecuentes ocurren como resultado de apagados
incorrectos por razones de energía o programas defectuosos que llevan al
sistema a colgarse .
28. Du
El comando du reporta el monto de espacio que ocupa un archivo o
un directorio y todos los archivos y subdirectorios que él contiene.
Sintaxis:
$ du [opciones] [nombre-archivo]
29. Df
Nos permite obtener información sobre el tamaño de dispositivos como son las
particiones.
Sintaxis:
$ df [opciones] [nombre-archivo]
1.
2.
3.
4.
5.
6.
El comando df retorna los valores de la siguiente información:
Tamaño del dispositivo
Número de bloques Libres en el Dispositivo
Número de bloques ocupados en el dispositivo
Porcentaje del total de bloques Libre
Nombre del Dispositivo
31. Cd
Se utiliza para cambiar de posición en el sistema de archivos.
Al ingresar a su computador, se le coloca automáticamente en el directorio
home.
Para cambiar a otro directorio, usted ejecuta el comando cd (change directory)
seguido por el directorio al cual de se a dirigirse como argumento.
El directorio nuevo se convierte en su directorio actual.
Sintaxis:
$ cd [directorio]
32. Ls
Despliega el contenido del directorio
Este comando tiene un gran número de opciones que alteran su
comportamiento.
Si usted utiliza el shell bash (Bourne Again Shell), puede adquirir un listado de
los archivos del directorio actual (pwd) con uno de los comandos ls o dir.
Sintaxis :
$ ls [opciones] [nombre]
$ dir [opciones] [nombre]
33. File
Un archivo puede ser visto como una colección de información referenciada
por un nombre.
GNU/Linux ve los dispositivos periféricos como archivos, permitiéndole leer y
escribir a ellos así como puede hacerlo a cualquier otro archivo.
Tipos de archivos incluye :
- Archivos Ordinarios (texto o binarios)
- Directorios
- CD -ROM
- Impresoras
- Diskettes Floppy
- Disco Duro
34. File
El utilitario file nos ayuda obtener información acerca del contenidos de un
archivo sin primero tener que examinar el archivo directamente.
La salida clasifica el archivo por tipo.
Aunque el utilitario file nos presenta información sobre cualquier archivo, esta
información no siempre es correcta.
Sintaxis :
$ file [opciones] nombre-de-archivo
35. Cat
El comando cat (concatena archivos) y puede ser utilizado para crear archivos;
es utilizado principalmente para enviar contenido de uno o más archivos a la
pantalla o a otro dispositivo de salida.
Sintaxis:
$ cat [OPCIÓN] [ARCHIVO]
Para crear un archivo nuevo, escriba $ cat > nombre-del-archivo digite
aquí su contenido y cuando termine .... Ctrl-D
Ctrl-D es el carácter end of file (EOF), fin de archivo, y cerrará el archivo.
36. Cat
Para desplegar el contenido de uno o más archivos en la salida estándar,
escriba:
$ cat archivo1 archivo2
37. Funcionalidad del comando cat puede ser incrementada usando los símbolos
de dirección > o > > .
El símbolo > es utilizado para direccionar la salida hacia otro sitio
que no sea la salida estándar, como lo es usualmente la pantalla.
El > puede ser usado para escribir la salida de un comando a un archivo o a
otro dispositivo, como lo es una impresora.
El uso de > > también redirecciona la salida, pero agrega a un archivo
existente en vez de sobrescribir.
38. More y Less
Los paginadores (Pagers) son utilitarios usados para desplegar archivos y que
podamos mover hacia arriba y abajo a través de múltiples páginas una pantalla
a la vez, dentro de su contenido.
También nos permite buscar dentro de los archivos información específica.
More y less son los más comunes. Ambos nos permiten desplazarnos hacia
adelante utilizando la barra espaciadora y hacia atrás con la tecla b. less, tiene
más funciones que more.
39. More y Less
Otras características de less incluyen:
- La capacidad de utilizar las teclas del cursor (flechas) para desplazarse para
atrás y hacia alante.
- La capacidad de navegar con bookmarks, número de líneas, o porcentaje del
archivo.
- El less deja de ejecutarse al final del archivo, more continua
Ambos nos permiten buscar dentro del archivo.
Ambos utilitarios son utilizados con gran frecuencia en desplegar las páginas
del man (manual).
40. Wc
El comando wc nos informa cuántas palabras, líneas, o caractere s contiene un
archivo.
Sintaxis:
$ wc [opciones] [nombre -arch ivo(s)]
Opciones para definir la salida de wc
Opción Salida
-c Número de Caracteres -w Número de Palabras -l Número de Líneas
Si se especifican múltiples archivos en la línea de comando, el número de palabras, líneas,y
caracteres será desplegado para cada archivo seguido por el total de palabras, líneas, y
caracteres para todos los archivos.
41. Head y Tail
Permiten visualizar en principio o el fin de uno o más archivos.
Use la opción -n para designar cuantas líneas desea desplegar; el
número a desplegar por defecto son 10.
También puedes utilizar la opción -v o --verbose para imprimir
siempre el nombre del archivo como cabezal.
42. Touch
El comando touch se usa para cambiar la fecha y hora de acceso y de
modificación del archivo.
Sintaxis:
$ touch [opciones] [fecha] nombre-de-archivo
Si el archivo no existe será creado un archivo vacío. Si no
especificamos ni fecha ni tiempo, el tiempo actual del sistema será
aplicado.
43. Cp
El comando cp copia tanto archivos como directorios.
La acción de copiar puede reemplazar cualquier archivo existente con el
mismo nombre , así que debe ser utilizado con cuidado.
Para evitar esto, tu pue de usar la opción -b (back up del archivo) o -i
(interactivo).
Para copiar recursivamente un directorio y su contenido a otro, use la opción -r
o -R.
Esto también copiará recursivamente la estructura del directorio.
44. Dd
El comando dd (copia de dispositivo a dispositivo) es un utilitario de
copiar especial. Su uso primario es copiar archivos a otros dispositivos
como lo son cintas o floppies.
Es muy útil al copiar desde un sistema operativo a otro cuando otros
métodos fracasan.
Sintaxis:
$ dd [argumentos]
45. Existen varios argumentos disponibles.
Una característica del dd es la capacidad de poderle especificar el
tamaño del block como parte del comando dd, brindándote así un
control superior sobre la operación del copiado.
46. Argumentos más comunes :
if=nombre-del-archivo Especifica el archivo a copiar
of=nombre-de-archivo Especifica el archivo de salida
bs=tamaño del block Especifica cuántos bytes a escribir y leer
simultáneamente
Ejemplo
$ dd if=/dev/fd0 bs=512 of=data.backup
Esta sentencia hace una copia del contenido del diskette a un archivo llamado
data.backup.
47. Mv
El comando mv es usado para renombrar y mover archivos de un lado
a otro en el árbol de directorio.
Sintaxis :
$ mv [Opción] [archivo entrada] [archivo salida]
Debe tener mucho cuidado: Si mueves un archivo con el comando m v
y otro archivo con el mismo nombre ya existe en esa localidad será
sobrescrito.
48. Mv
Una manera de prevenir que se pierda un archivo es usando la opción
-b, el cual le crea un backup del archivo, si va ha ser sobrescrito.
Por ejemplo
$ mv -b prueba1 prueba2
$ ls prueba*
prueba1 prueba2~ prueba2
49. Rm
El comando rm puede ser utilizado para remover archivos individuales
o múltiples y directorios.
Después que un archivo ha sido borrado, ya no es posible recuperarlo,
así es que debes usarlo con cautela.
Cuidado con el comando rm y la cuenta del root, usted puede tornar su
sistema inservible.
50. Rm
Opciones:
-i Requiere una confirmación antes de que los archivos sean
eliminados.
-f Obliga la eliminación de los archivos que se encuentran en modo de
protección contra escritura.
-r Borrará recursivamente archivos y directorios. Se le cuestionara la
confirmación para cada archivo a eliminar.
51. Rm
Para eliminar archivos recursivamente sin confirmación use la
combinación de las dos opciones -rf.
No podrá usar rm para borrar directorios, incluyendo los vacío, sin el uso de la
opción -r.
52. Mkdir
Para crear directorios se usa el comando mkdir. Si se usa sin
opciones, el directorio padre debe estar ya presente para crear uno
dentro que sería el directorio hijo, aquí le damos unos ejemplos:
$ mkdir prueba
$ mkdir prueba/hijo
También se puede crear una jerarquía de directorios de múltiple
padre e hijos en una sola sentencia con la opción -p.
$ mkdir -p prueba/padre/hijo
53. Rmdir
El comando rmdir borra sólo directorio que estén completamente vacío. Use la
opción de padre (-p) para remover jerarquía de directorios. Un ejemplo es:
$ rmdir -p prueba/padre/hijo
Este comando borra el directorio hijo solamente. Si existen más subdirectorios
en el directorio padre , ellos no serán borrados. Pero, si usted escribe :
$ rmdir -p prueba/padre/*
Todos los subdirectorios que se encuentre vacíos serán borrados.
55. Grep
El comando grep (global regular expresion print) busca un patrón o
cadena simple de caracteres dentro del contenido de un archivo.
Sintaxis:
$ grep [Opciones] patrón [listado de archivos]
Hay tres comandos relacionados 'grep, egrep, y fgrep' que pueden
ser usados para buscar en archivos línea por línea.
56. Grep
Las diferencias entres ellos son mínimas.
El grep puede utilizar expresiones regulares.
El egrep, utiliza expresiones extendidas, tiene una sintaxis un poco diferente; y
fgrep utiliza cadenas de caracteres simples en vez de Expresiones Regulares.
57. Sed
El comando sed (stream editor) es un editor de línea no-interactivo.
Los comandos se le pasan a sed todos a la ve z, y entonces sed procesa el o
los archivos una línea a la vez.
Sintaxis:
$ sed [-n] [-e comandos] [-f nombre-de-script] archivo.txt [>
archivo.final.txt]
59. Referencias
Libros:
GNU/Básico : Antonio Perpiñan
http://codigolibre.org/
After the software wars : Keith Curtis
http://keithcu.com
http://es.kioskea.net/faq/10941-linux-el-comando-fdisk