T3 Gestión de Archivos y Almacenamiento PDF
Document Details
Uploaded by Deleted User
Tags
Related
Summary
Este documento presenta una introducción a la gestión de archivos y almacenamiento en sistemas operativos. El tema explora la gestión de información, los sistemas de archivos, y diferentes sistemas como ext4 y NTFS. También se menciona el uso de herramientas para la gestión de archivos y almacenamiento en Windows y Ubuntu.
Full Transcript
INTRODUCCIÓN Al igual que la gestión de procesos y la gestión de usuarios de usuarios, la gestión de los archivos es uno de los pilares fundamentales de cualquier sistema operativo. Los sistemas operativos son capaces de gestionar la información contenida en los medios de almacena...
INTRODUCCIÓN Al igual que la gestión de procesos y la gestión de usuarios de usuarios, la gestión de los archivos es uno de los pilares fundamentales de cualquier sistema operativo. Los sistemas operativos son capaces de gestionar la información contenida en los medios de almacenamiento gracias a los sistemas de archivos. Estos proveen la manera de almacenar la información, así como mecanismos que permitan realizar operaciones sobre ella. Existen multitud de sistemas de archivos que confieren diferentes características al espacio de almacenamiento y repercuten en la seguridad de los datos, su rendimiento o su gestión. En este tema estudiaremos diferentes sistemas de archivos, centrándonos en los más utilizados: ext4 y NTFS. Los sistemas operativos proveen herramientas para la gestión de almacenamiento, ya sea por línea de comandos o por interfaz gráfica, para realizar particiones de los medios de almacenamiento, formatear, montar y desmontar los sistemas de archivos e incluso crear diferentes esquemas RAID. Para trabajar la gestión de archivos y almacenamiento, a lo largo de tema trabajaremos con los sistemas operativos Microsoft Windows a través de su interfaz gráfica y con Ubuntu mediante su interfaz textual. Sobre este último recaerá la mayoría del peso de los aspectos que se van a estudiar, ya que consiste en una herramienta fundamental para usuarios expertos o administradores de sistemas operativos. 2 SISTEMAS DE ARCHIVOS Los sistemas de archivos emplean el archivo (fichero) como la herramienta fundamental de abstracción lógica de información. Se dice que un archivo es, por tanto, la unidad lógica mínima de almacenamiento que contiene información. Los archivos se emplean para evitar que el usuario conozca la estructura interna y las propiedades características de los medios de almacenamiento, facilitando la gestión y organización por su parte. Otro elemento empleado por los sistemas de archivos son los directorios (carpetas). Estos son ficheros que actúan de contenedores lógicos de otros ficheros o directorios. Independientemente del sistema de archivos donde se defina el directorio, este almacena información relativa a la localización física de la información y los atributos propios de cada archivo o directorio que contenga. Los sistemas de archivos tienen como objetivo: o Acceder a la información de los ficheros. o Crear, eliminar y modificar ficheros. o Acceder a los ficheros mediante diferentes protocolos de comunicación en red u otros ficheros. o Facilitar el acceso multiusuario. o Facilitar el acceso a multitud de medios de almacenamiento. o Realizar copias de seguridad. o Utilizar herramientas de recuperación de la información. o Priorizar la eficiencia y seguridad de acceso a la información. o Maximizar el rendimiento de las operaciones sobre los archivos. o Permitir la monitorización y contabilidad sobre ficheros. o Administrar el espacio de almacenamiento, gestionar la asignación de espacio libre y el espacio ocupado de los archivos.3 SISTEMAS DE ARCHIVOS Para administrar el espacio libre (susceptible de ser asignado) y el espacio ocupado, se han de definir espacios de asignación. Estas son las unidades físicas mínimas de almacenamiento gestionadas por los sistemas de archivos. Los sistemas de archivos definen el tamaño del espacio de asignación (también llamado unidad de asignación o clúster) durante la instalación del propio sistema de archivos (formateo). Este espacio determina el tamaño mínimo que ocupará un archivo en el medio de almacenamiento. A nivel físico (hardware), el dispositivo administra sectores, sin embargo, el sistema de archivos gestiona clústeres. La planificación de este espacio es muy importante, siendo ideal un equilibrio entre el promedio del tamaño de los archivos que vaya a alojar el sistema de archivos (evitando así que se desperdicie espacio interno al clúster, también conocido como fragmentación interna) y el tamaño del volumen (facilitando la administración del sistema de archivos). Si el usuario no define el tamaño del clúster, el sistema operativo lo asignará automáticamente, atendiendo al tamaño del disco, el tipo de sistema de archivos y el esquema de particionamiento (MBR o UEFI). 4 SISTEMAS DE ARCHIVOS FAT (File Alocation Table) Es un sistema de archivos creado para el sistema operativo MS-DOS. La administración del espacio del almacenamiento es sencilla, por lo que se convierte en un sistema de archivos muy extendido en la mayoría de los sistemas operativos. De tal manera, que se suele emplear en dispositivos utilizados para intercambiar datos en computadoras con varios sistemas operativos, videoconsolas, televisores, etc. Las principales limitaciones de FAT32 son: Imposibilidad de gestionar particiones superiores a 8TB (32GB en Microsoft Windows) y archivos de más de 4GB. Bajo rendimiento. Inseguro: no permite encriptación, sus atributos y permisos son limitados y no permite journaling* *journaling: es un registro o diario del sistema de archivos. Los sistemas de archivos que hacen uso de este sistema se denominan transaccionales. Consiste en registrar una serie de acciones previas a la operación sobre el sistema de archivos que se vaya a realizar. De tal manera, que si se produce un error durante alguna operación (copiado, borrado, creación, etc), el sistema puede deshacer los cambios y volver a la situación original. Así se evitan muchas situaciones de inconsistencia de ficheros, facilitando la recuperación de datos y chequeos de medios de almacenamiento. 5 SISTEMAS DE ARCHIVOS FAT (File Alocation Table) En FAT, cada fichero se representa con el clúster inicial y final, haciendo uso de una lista enlazada de clúster hasta alcanzar el último. Esquema de una partición con sistema de archivos FAT. 6 SISTEMAS DE ARCHIVOS exFAT Resultado de una evolución del sistema de archivos FAT32, que elimina sus principales limitaciones. Se pueden tratar archivos de hasta 16 EB* y mantiene la ligereza frente a sistemas de archivos más avanzados, como NTFS y APFS. Aunque sigue resultando inseguro, es ideal para medios de almacenamiento FLASH portables con gran capacidad y compatibles entre sistemas operativos. NTFS Se considera el sistema de archivos estándar de Microsoft Windows. Sus mejoras son considerables con respecto a FAT32, primando la seguridad y la confiabilidad. Sus principales ventajas son: o Emplea journaling. Favoreciendo una pronta recuperación ante errores inesperados. o Permite cifrado y comprensión. o Reduce significativamente la fragmentación y aumenta la velocidad de búsqueda de archivos con respecto a FAT32. o Puede llegar a gestionar volúmenes de hasta 16 EB y archivos de hasta 16 TB. o Emplea Unicode para el nombre de los archivos, con hasta 255 caracteres. *EB: Un exabyte es una unidad de medida de almacenamiento de datos cuyo símbolo es el EB. Equivale a 1018 bytes. 7 SISTEMAS DE ARCHIVOS NTFS Esquema de una partición con sistema de archivos NTFS. APFS Sistema de archivos empleado por Apple Inc para sus medios de almacenamiento, que supone una versión mejorada de su predecesora HFS+. Sus características son similares a NTFS y ext4, por lo que permite administrar archivos y volúmenes de hasta 8 EB. Permite encriptación y esta optimizado para almacenamiento Flash. 8 SISTEMAS DE ARCHIVOS ext4 (Fourth extended file system) Sistema de archivos predeterminado para sistemas operativos de tipo Linux en su cuarta versión. Incluye journaling, maneja archivos de hasta 16TB y volúmenes de hasta 1EB. Supera a sus antecesores ext2 y ext3, ya que: o Mejora el rendimiento o Reduce la fragmentación o Permite trabajar con ficheros de mayor tamaño gracias al uso de extents* A diferencia de NTFS, ext4 no emplea extensiones como parte del nombre de los archivos. En Microsoft Windows, un nombre se divide en., donde extensión es un conjunto de caracteres (normalmente tres o cuatro) que se asocian con programas para que el sistema operativo reconozca la manera de ejecutar el archivo. Ejemplos de extensiones utilizadas: .c: fichero fuente en lenguaje de programación C .txt: fichero de texto ASCII .tar: fichero resultado de utilizar el comando tar .html: fichero de lenguaje de marcas de hipertexto *Un extent es un conjunto de bloques físicos contiguos, mejorando el rendimiento al trabajar con ficheros de gran tamaño y reduciendo la fragmentación 9 SISTEMAS DE ARCHIVOS ext4 (Fourth extended file system) No obstante, muchos nombres de archivos en Linux incorporan sufijos separados por un punto en el nombre del fichero por convención, pero no como requisito establecido por el sistema de archivos. Una partición con el sistema operativo ext4 se divide en grupos de bloques. Cada grupo de bloques se divide a su vez en las siguientes partes: a) Superbloque: contiene la información más relevante del grupo de bloques. b) Descriptores de grupos: almacena la información más importante del resto de bloques. c) Bitmap de bloques de datos: contiene un mapa de bits donde se representa cada clúster, así como su estado (libre u ocupado) d) Bitmap de i-nodos: mapa de bits representado a cada i-nodo, que además indica su estado (libre u ocupado). e) Tabla de i-nodos: tabla que contiene una entrada por cada i-nodo. El i-nodo almacena la información propia de cada archivo. f) Bloques de datos: clústeres con información. Cada bloque de datos está asociado con un archivo. La estructura fundamental es el i-nodo o nodo índice. Este almacena toda la meta- información asociada al archivo que representa: tipo de archivo, propietario, tamaño, fechas, numero de bloques de datos, localización de bloques de datos, etc. 10 SISTEMAS DE ARCHIVOS ext4 (Fourth extended file system) En ext4, el i-nodo emplea extents, los cuales intervienen con ficheros grandes. Estos emplean un conjunto de clústers contiguos (en lugar de separados) y se gestionan de manera simple, almacenado: el inicio del bloque dentro del archivo, el número de bloques almacenados y el inicio del numero del bloque físico en disco. Un i-nodo está compuesto por: Un identificador único de i-nodo o numero de i-nodo. Único en el sistema de archivos. Tipo de fichero: regular, enlace simbólico, directorio o dispositivo. Permisos de lectura, escritura y ejecución para el propietario, grupo y otros usuarios. Tamaño del fichero (en bytes). Número de enlaces (duros). Hace referencia al número de veces que el i-nodo es referenciado en el árbol de directorios. Cuando se elimina un fichero de un directorio, decrementa en uno este número y se elimina la entrada correspondiente en dicho directorio. Así, ha de llegar a cero este número para que se elimine el i-nodo. Identificador del propietario del archivo (UID). Numero identificativo único que representa a un usuario. Identificador de grupo (GID): Número identificativo único que representa a un grupo de usuarios. 11 SISTEMAS DE ARCHIVOS ext4 (Fourth extended file system) Fechas de última modificación de la meta- información del i-nodo (ctime), última modificación de su contenido (mtime) y último acceso a su contenido (atime). Cabecera extent. Contiene información asociada a los extents que lo siguen: número válido de entradas que siguen a la cabecera, máximo numero de entradas que siguen a la cabecera y la profundidad del extent actual (valores de 0 a 4). 12 ESTRUCTURA DE DIRECTORIOS EN LINUX Y MICROSOFT WINDOWS Cuando los sistemas operativos GNU/Linux y Microsoft Windows son instalados en medios de almacenamiento, crean un conjunto de directorios donde se despliegan los archivos y subdirectorios del propio sistema operativo en una estructura en forma de árbol invertido del sistema de archivos. Esto es, un directorio del que cuelgan un conjunto de subdirectorios y, dentro de estos últimos, se alojan otro subdirectorios, y así sucesivamente. De esta manera, para hacer referencia a la localización de un directorio dentro de la estructura arbórea, se emplea el término ruta, camino o path. Así se localiza fácilmente un archivo o directorio. Por ejemplo: En Linux podemos hacer referencia a la ruta del directorio como /home/usuario donde “/” es el directorio raíz, “home” es un subdirectorio del directorio raíz y “usuario” es un subdirectorio home. En Microsoft Windows se puede indicar un directorio como C:\Documents and Settings. En Microsoft Windows el directorio raíz se antecede por una letra que simboliza una unidad o volumen: “C:\” indica el directorio raíz de la unidad C. Y “Documents and Settings\” es un subdirectorio del directorio raíz. El directorio de trabajo actual es el directorio donde se encuentra situado actualmente, al ir navegando por los directorios y subdirectorios de una unidad, dentro del árbol de directorios. El directorio de trabajo actual se simboliza por “.”. En Linux podemos mostrar la ruta de trabajo actual mediante el comando pwd (print working directory). 13 ESTRUCTURA DE DIRECTORIOS EN LINUX Y MICROSOFT WINDOWS Por directorio padre de un directorio se conoce al directorio que se encuentra por encima de él en la estructura jerárquica del árbol de directorios. Se simboliza por “..”. De la misma manera, un directorio hijo de un directorio es el directorio que se encuentra por debajo del primero en la estructura jerárquica. La ruta de un archivo o directorio se puede indicar de dos maneras: Ruta absoluta: ruta completa indicada desde el directorio raíz. Ruta relativa: ruta indicada desde el directorio de trabajo actual. Se suele hacer uso de “..” y “.” para desplazarse. El comando cd (change directory) permite cambiar de directorio. Su sintaxis es la siguiente: cd [directorio], si no se indica directorio, cambiará al directorio home del usuario y equivaldría a ejecutar cd ~ Actividad propuesta 3.1 14 ESTRUCTURA DE DIRECTORIOS EN LINUX Y MICROSOFT WINDOWS ESTRUCTURA DE DIRECTORIOS EN GNU/LINUX La mayoría de los sistemas operativos GNU/Linux siguen el estándar FHS (Filesystem Hierarchy Standar) que define el contenido y las funciones de los directorio en la estructura jerárquica del árbol de directorios. Los directorios más importantes son: /: Directorio raíz o root. Todos los directorios y subdirectorios parten de este directorio raíz. /bin: contiene los archivos binario (ejecutables) a nivel de usuario. /boot: almacena los archivos ejecutables y de configuración necesarios para el arranque del sistema. /dev: se encuentran los componentes del sistema y todos los dispositivos de almacenamiento representados por archivos (memorias FLASH, particiones, DVD, etc..). A través de ese directorio podemos acceder a la información propia del medio de almacenamiento. /etc: almacena los archivos de configuración globales del sistema y que afectan a todos los usuarios. /home: directorio que aloja los directorios de los diferentes usuarios del sistema, a excepción del usuario root. /lib: contiene archivos muy importantes para el sistema operativo, como librerías y módulos kernel. /media: directorio que se emplea para montar dispositivos como discos duros o medios removibles como CD o DVD. /mnt: también utilizado para albergar puntos de montaje pero, en este caso, temporales, por ejemplo, un sistema de archivo en red o carpetas compartidas en máquinas virtuales. /proc: directorio empleado por el sistema para guardar información relativa a los procesos y al kernel del sistema. No contiene archivos físicos, sino que se generan sobre la marcha archivos virtuales. /sys: al igual que /proc, almacenan archivos virtuales relativos al kernel del sistema, así como información de los drivers y dispositivos. /sbin: almacena ejecutables que se suelen emplear para tareas administrativas por el superusuario. 15 ESTRUCTURA DE DIRECTORIOS EN LINUX Y MICROSOFT WINDOWS ESTRUCTURA DE DIRECTORIOS EN GNU/LINUX /tmp: las aplicaciones emplean esta carpeta para almacenar archivos temporales. /usr: almacena archivos de solo lectura de la mayoría de las aplicaciones y utilidades instaladas en el sistema. /opt: contiene el resto de aplicaciones no almacenadas en /usr. Normalmente, son aquellas que no son parte de los paquetes instalados con la distribución Linux objeto de uso. /srv: directorio encargado de alojar datos, scripts y carpetas para servidores instalados en nuestro sistema /var: directorio considerado como registro del sistema. En él se incluye información del sistema, logs, información de caché, etc. 16 ESTRUCTURA DE DIRECTORIOS EN LINUX Y MICROSOFT WINDOWS ESTRUCTURA DE DIRECTORIOS EN MICROSOFT WINDOWS En el directorio raíz de una partición con Microsoft Windows instalado dispone del siguiente árbol de directorios: \Archivos de programa (Program Files): en sistemas de 32 bits, se encuentran todos los programas instalados. Sin embargo, en sistemas de 64 bits se almacenarán las aplicaciones de 64 bits. \Archivos de programa (x86): esta carpeta se encuentra en sistemas de 64 bits y contiene las aplicaciones instaladas de 32 bits. \PerfLogs: por defecto, esta vacía, pero puede contener varios registros de rendimiento del sistema. \ProgramData: carpeta oculta que contiene datos de programas genéricos para todos los usuarios del sistema. \Usuarios (Users): carpeta que contienen subcarpetas por cada usuario del sistema, así como la carpeta \Acceso público (\Public) y \Default (carpeta oculta): 1. \Acceso Publico: carpeta compartida por todos los usuarios del sistema donde se definen aspectos comunes a ellos. Por defecto, esta compartida en red. 2. \Default: contiene el perfil base sobre el que se crean nuevos perfiles en el sistema. Así, al crear un nuevo usuario, su carpeta situada en C:\Usuarios, contendrá el perfil y la estructura definida en \Default. 3. \[nombreUsuario]: contiene un conjunto de carpetas que definen el perfil del usuario así como la carpeta oculta AppData Windows: contiene el grueso de la instalación del sistema operativo. Actividad propuesta 3.2 17 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX En entornos domésticos o de oficina se emplea la interfaz gráfica para el manejo y gestión de archivos. No obstante, los administradores de sistemas suelen hacer uso de la interfaz por línea de comandos, ya que su versatilidad y potencia de uso la convierte en una herramienta ideal. Los comandos de Linux siguen una sintaxis: comando [opciones] [argumentos] Cada comando varía el tipo de opciones y argumentos que pueda utilizar, e incluso puede no utilizarse ninguno en caso de ser opcionales. Las opciones pueden ser cortas (una sola letra) o largas (una palabra), antecedidas por uno o dos guiones. Se puede emplear ambos tipos de opciones con un mismo comando, aunque las opciones cortas pueden unirse. Tanto los comandos como las opciones y los argumentos que se usen son sensibles a mayúsculas y minúsculas. Uno de los comandos que más se emplea es ls (list): ls [opciones] [ficheros] Permite listar el contenido de un directorio e información de archivos. Sus opciones más utilizadas son: l: muestra en formato largo t: ordena por fecha de modificación r: invierte el orden de salida R: lista recursivamente el contenido de cada directorio 18 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX i: muestra el número de i-nodo a: muestra los archivos ocultos. En Linux los archivos ocultos son aquellos que empiezan con un “.”. Si no indicamos esta opción, el comando ls no listará los archivos ocultos. h: muestra el tamaño de cada fichero en K,M,G,etc. s: muestra el tamaño de cada fichero en bloques S: lista los archivos ordenados por tamaño Por defecto y sin argumentos, lista el directorio actual ordenado alfabéticamente. Si se indica más de uno, se listará el contenido de cada uno de ellos. Cuando se emplea la opción “-l” , aparecen clasificadas en columnas la información propia de cada fichero: A. La primera columna es la lista de control de acceso o máscara de permisos. A su vez, se divide en dos partes: I. El primer carácter puede ser: “d” indicando un directorio, “l” un enlace simbólico, “-” un archivo regular, “c” un dispositivo de tipo carácter, o “b” un dispositivo de tipo bloque. II. El resto de caracteres son los permisos asociados al usuario, al grupo y a otros, tomados en grupos de tres. 19 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX B. La segunda columna establece el número de enlaces duros asociados al archivo. C. La tercera columna indica el propietario. D. La cuarta indica el grupo. E. La quinta columna hace mención al tamaño que ocupa en bytes. F. La sexta columna se refiere a la fecha de la última modificación de su contenido o de su creación (si no se ha modificado) G. La séptima columna se refiere al propio nombre del fichero. El nombre del fichero no reside en el i-nodo, sino en el directorio. Paginas de interés: https://naps.com.mx/blog/ejemplos-explicados-de-permisos-en-linux/ https://manuais.iessanclemente.net/index.php/Fundamentos_de_Usuarios_e_Permisos 20 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX Cualquier archivo o directorio con el mismo nombre en un mismo directorio. Además, todos los directorios disponen, al menos, de dos entradas ocultas: “.” el directorio actual y “..” el directorio padre. Estas se definen automáticamente cuando se crea un directorio. El directorio actual hace referencia a él mismo y se emplea muy a menudo cuando se trabaja con rutas relativas, y también lo hacen por defecto multitud de comandos. También el directorio padre se utiliza necesariamente para poder moverse por el árbol de directorios. Actividad propuesta 3.4 21 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX TIPOS DE FICHEROS Los tipos de ficheros en Linux son muy importantes. Cualquier elemento físico (discos, impresoras, etc.) o lógico (directorio, enlace, etc.) se representa en Linux mediante un archivo, lo que facilita y estandariza la gestión de todos ellos. Se distinguen cuatro tipos elementales de ficheros: 1. Regulares. Son ficheros ordinarios que contienen información de diversa naturaleza. Dentro de ellos se incluyen los ficheros ejecutables como un tipo de fichero regular que tiene activo algún permiso de ejecución y contienen código ejecutable. 2. Directorios. Almacenan en su bloque de datos el numero de i-nodo y el nombre de los archivos que contiene. Cuando son listados con el comando ls muestra la información accediendo a la estructura interna de cada i-nodo Ejemplo: En la imagen se observa cómo el directorio actual “.” (asociado al directorio /usr) tiene 1048578 como numero de i-nodo con 14 enlaces duros. Y el directorio padre del directorio actual es el directorio raíz que tiene como número de i-nodo 2 con 20 enlaces duros. 22 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX Actividad propuesta 3.6 TIPOS DE FICHEROS 3. Enlaces. Existen de dos tipos: Enlaces duros: Son asociaciones de nombres de ficheros a i-nodos. Es decir, se trata de reutilizar un i-nodo asignándole nombres distintos y localizándose en diferentes directorios del mismo. Los enlaces duros se establecen sobre ficheros regulares y no sobre directorios. Además, pueden hacer referencia solo dentro del mismo sistema de archivos. Para crear enlaces duros, se emplea el comando ln, y su sintaxis es la siguiente: ln fichero fichero_enlace Enlaces simbólicos o enlaces blandos: El directorio que contiene un enlace simbólico almacena un i-nodo (diferente al i-nodo del archivo que enlaza) y un nombre de fichero. Para acceder al fichero con el que enlaza, el i-nodo del enlace simbólico almacena en un campo la ruta de acceso al archivo destino, si esta es inferior a 60 bytes y, si es superior, se almacenará en el bloque de información de un extent. De esta manera se pueden referenciar archivos de otros sistemas de archivos, particiones y equipos en red. Para crear enlaces simbólicos, se debe incluir la opción –s con ln: ln –s fichero fichero_enlace Paginas de interés: https://geekland.eu/inodos-dentires-sistema-archivos/ https://redessy.com/como-crear-enlaces-duros-y-blandos-enlace-simbolico-en- sistemas-linux/ 23 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX TIPOS DE FICHEROS 3. Dispositivos. Son archivos que representan a dispositivos físicos. En el directorio /dev se localiza la mayoría de ellos. Se distinguen dos tipos de archivos de dispositivos: Dispositivos por caracteres: suelen ser aquellos que no disponen de sistema de archivos, como impresoras, teclados, terminales de texto, etc. Transfieren los datos de carácter a carácter. Dispositivos por bloques: almacenan la información en bloques de datos físicamente, como, por ejemplo: discos duros, cintas magnéticas, unidades flash, etc. Además, existen dispositivos virtuales, los cuales tienen un tratamiento especial, como dev/null, también conocido como cubeta de bits, puesto que se suele emplear para eliminar o descartar toda la información que sea enviada a él. La propia orden ls dispone de la opción -- color, que se encuentra activada por defecto en Ubuntu que permite discriminar el tipo de archivo según el color: Blanco: archivo regular Verde: archivo ejecutable Azul: directorio Cian: enlace simbólico Actividad propuesta 3.5 Rojo: enlace roto 24 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX ELIMINACIÓN DE FICHEROS Actividad propuesta 3.7 Se pueden eliminar ficheros mediante la orden rm. Su sintaxis es la siguiente: rm [-irf] lista_de_ficheros Sus opciones más utilizada son las siguientes: i: solicita confirmación son las siguientes r o R: eliminación recursiva sobre los directorios f: fuerza la eliminación aun estando protegido el archivo contra escritura Además, también se pueden emplear diferentes caracteres comodín, como * o ?. Estos caracteres permiten generar patrones de identificación de ficheros. * hace referencia a cualquier cadena de caracteres ? referencia un único carácter cualquiera El interprete de comandos, antes de ejecutar la orden donde se incluyan los caracteres comodines, realiza una acción llamada expansión de comodines, donde traduce estos comodines a todas las posibles combinaciones de caracteres, según el patrón aportado. De esta manera se pueden referir varios archivos a la vez. 25 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX CREACION Y ELIMINACIÓN DE DIRECTORIOS Se pueden crear directorios mediante la orden mkdir. Su sintaxis es la siguiente: mkdir lista_de_directorios La eliminación de directorios se puede efectuar mediante la orden rm –r, si dispone de contenido, o empleando el comando rmdir, si el directorio se encuentra vacío. Ejemplos: mkdir scripts: crea el directorio rmdir scripts: elimina el directorio vacío scripts rm –ri./trabajo: elimina, pidiendo confirmación, todos los archivos del directorio trabajo y el propio directorio. Actividad propuesta 3.8 26 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX COPIA DE ARCHIVOS El comando utilizado para copiar información de un archivo es cp. Su sintaxis es la siguiente: cp [-irR] lista_archivos_origen destino Por defecto se sobrescribirá en el destino la lista de archivos de origen, en caso de equivalencia en los nombres. Sus opciones más utilizadas son: i: solicita confirmación antes de sobrescribir un archivo con el mismo nombre en el destino. r o R: copia de forma recursiva en los directorios. Ejemplos: cp –i /etc/passwd./passwd.bck: copia el archivo passwd, solicitando confirmación, a otra ubicación (desde /etc al directorio actual) cp –r../backup/ : copia el directorio actual a./backup/ directorios completos. 27 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX RENOMBRADO O MOVIMIENTO DE ARCHIVOS Se emplea la orden mv para mover o renombrar archivos. Su funcionamiento es similar a la orden cp, salvo que los archivos de origen desaparecen: mv [-iu] lista_archivos_origen destino Sus opciones más utilizadas son: i: se emplea para asegurarse para asegurarse que en el destino no exista un archivo con el mismo nombre, ya que se sobrescribiría u: solo mueve archivos o directorios con el mismo nombre entre origen y destino si estos son más actuales en el origen. Ejemplo: mv passwrd.bck./backup/ 28 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX IMPRESIÓN DE ARCHIVOS La interfaz de comandos dispone de multitud de comandos para poder inspeccionar el contenido de los ficheros. Para que este pueda ser correctamente interpretado, ha de encontrarse en forma ASCII. En caso contrario, aparecerá un conjunto de caracteres no legibles. Los principales comandos empleados para mostrar el contenido de ficheros en la interfaz textual son: cat [lista_archivos] [ { > | >> | < | sobrescribe si existe el archivo o, en caso contrario, lo crea. >> añade al contenido de un fichero existente o, en caso contrario, lo crea. Por tanto, se emplea la orden cat para crear archivos de escaso contenido de forma rápida. Para ello, se emplea el comando cat, seguido de > o >> y de un archivo. De esta manera, el intérprete de comandos espera que introduzcamos texto hasta que pulsemos la combinación de teclas CTRL+D. Actividad propuesta 3.9 29 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX IMPRESIÓN DE ARCHIVOS Otros comandos muy utilizados son: more [lista_archivos] less [lista_archivos] Permiten visualizar el contenido de ficheros por páginas. A diferencia de cat, se puede navegar entre páginas. El comando less es más versátil y potente que el more, resultando ideal para ficheros de gran tamaño. Existen otras órdenes que ayudan a obtener el principio o el final de archivos: head [-n] lista_ficheros tail [-n] lista_ficheros Se emplean para visualizar las n primeras líneas (head) o las ultimas (tail) de uno o varios ficheros de texto. Por defecto, mostrará diez líneas. Ejemplos: head -5 /etc/passwd : muestra las cinco primeras líneas del fichero tail -3 /etc/passwd: muestra las tres ultimas líneas del fichero 30 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX CUENTEO DE UN FICHERO La orden wc permite mostrar, por defecto, el número de líneas, palabras y número de bytes de un fichero. Su sintaxis es la siguiente: wc [-lwcL] lista_ficheros Podemos seleccionar algunos contadores de manera aislada o conjunta: l: número de líneas w: número de palabras c: número de bytes L: longitud de la línea más larga Ejemplos: wc texto1.txt texto2.txt fusión_textos.txt: muestra las líneas, palabras y número de bytes de cada uno de los ficheros indicados. wc -l texto1.txt: solo imprime por pantalla el número de líneas de texto1.txt 31 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX ORDENACIÓN DE UN FICHERO La orden sort permite mostrar, de forma ordenada, las líneas de un fichero. Por defecto, ordena siguiendo el orden establecido por los caracteres en ASCII, donde las letras minúsculas tienen un orden mayor que las mayúsculas. sort [-fnru] [-t ] [-k ] lista_archivos Las opciones más importantes son: f: ignora las mayúsculas y las minúsculas r: invierte el orden n: ordena numéricamente en lugar de alfabéticamente u: elimina entradas repetidas t delimitador: indica un delimitador o separador de campos k: indica el número de campo por el que se va a realizar la ordenación. Por defecto, toma los espacios, tabuladores y carácter de fin de línea como delimitadores de campo Actividad propuesta 3.10 32 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX ENTRADAS Y SALIDAS ESTÁNDAR. REDIRECCIONES. El sistema operativo asigna automáticamente a cada comando entradas y salidas estándar asociadas a los flujos de entrada y salida, respectivamente. Por defecto se asocian tres ficheros, que suelen identificarse con un número o descriptor del fichero: Entrada estándar (stdin) 0 Salida estándar (stdout) 1 Salida de errores estándar (stderr) 2 La entrada estándar nutre al comando de información para su ejecución, la salida estándar trasmite el resultado y, si durante la ejecución de un comando ocurre algún error o un aviso, este se enviará a la salida de errores estándar. Normalmente la entrada estándar se asocia con el teclado y la salida estándar y la salida de errores con la pantalla. Pero este comportamiento estándar se puede alterar mediante operadores que redireccionan su flujo a otros comandos, dispositivos o ficheros. 33 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX REDIRECCIONES DE LA SALIDA ESTÁNDAR Podemos emplear el operador > para volcar la salida de una orden sobre un fichero en lugar de a la salida estándar: orden > fichero Si el fichero no existe, se crea un nuevo fichero y, si existe, sobrescribe su contenido. También se puede utilizar 1 >, puesto que 1 hace referencia al descriptor del fichero. También se puede emplear el operador >> para realizar la misma acción, pero, a diferencia del operador >, añade su contenido al fichero sin sobrescribirlo. Ejemplos: Ejecutar cat /etc/passwd: La entrada estándar del fichero es /etc/passwd y la salida estándar y de error es la pantalla. Ejecutar cat > notas.txt: La entrada estándar es el teclado y la salida estándar se redirecciona al fichero notas.txt Ejecutar ls /usr >> notas.txt: La entrada estándar es el resultado de la ejecución del comando ls /usr, el cual no se muestra por pantalla, ya que se redirecciona al fichero notas.txt, donde se añade al contenido existente de este. 34 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX REDIRECCIONES DE LA ENTRADA ESTÁNDAR También podemos redireccionar un fichero como entrada de una orden , en lugar de la entrada estándar. Para ello se debe emplear el operador < : orden < fichero Existe una redirección particular que permite introducir texto hasta que se encuentre una línea únicamente con el delimitador establecido. fichero Del mismo modo, se puede emplear el operador 2>> para añadir contenido al fichero. Ejemplos: Ejecutar ls s (dado un archivo s inexistente). El archivo s no existe en el directorio actual. Por tanto, al listarlo, el terminal ofrece un mensaje de error por la salida estándar. Si ejecutamos la orden redireccionando la salida de error estándar al fichero error.txt, se almacenará en este el mensaje de error y no será mostrado por pantalla: ls s 2> error.txt. Ejecutar ls –R /usr > salida.txt 2 > salida_err.txt: El comando ls –R usr /usr almacena su salida en el fichero salida.txt y los errores o avisos se almacenarán en salida_err.txt 36 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX REDIRECCIÓN DE LA SALIDA ESTÁNDAR Y SALIDA ERROR ESTANDAR AL MISMO DESTINO Ambas salidas se pueden redireccionar al mismo destino mediante el comando &> o &>>. El primero sustituye y el segundo añade contenido al fichero. orden & > fichero orden & >> fichero Ejemplo: ls –R / &> listado_y_errores.txt 37 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX REDIRECCIÓN DE LA SALIDA ESTÁNDAR Y LA SALIDA ERROR ESTANDAR DE UNA ORDEN CON LA ENTRADA DE OTRA ORDEN Es muy común emplear el operador tubería o pipe, | para concatenar salidas estándar con entradas estándar entre órdenes. ordenA | ordenB Al igual que antes, con el operador |& podemos redireccionar la salida estándar y la salida error estándar de una orden a la siguiente: ordenA |& ordenB Además podemos emplear el operador pipe a la vez que enviamos la información a un fichero mediante la orden tee: ordenA | tee fichero | orden Ejemplos: Ejecutar ls -1 /usr | wc -l. La orden ls -1 /usr lista en una columna una línea por cada fichero o directorio. Su salida estándar se redirecciona a la entrada estándar de wc –l que a su vez envía a su salida estándar (pantalla) el resultado obtenido. Ejecutar ls -1 /urs | tee listado | wc –l. La salida estándar de ls -1 /usr se envía a la orden tee que almacena en el fichero un listado del resultado de la orden anterior, a la vez que envía esta a la siguiente orden. 38 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX REDIRECCIÓN DE LA SALIDA ERROR A LA SALIDA ESTANDAR Se suele emplear el operador 2>&1 para que la salida de error se dirija al mismo lugar que la salida estándar. Ejemplo: ls –R / > listado_y_errores.txt 2 > &1 Actividad propuesta 3.11 39 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX PROCESAMIENTO DE TEXTOS Existen dos comandos ampliamente utilizados para extraer información sobre textos generados por otros comandos, ficheros o cadenas de caracteres en general. Estos son cut y grep. El comando cut se emplea para obtener información a partir de la división de un fichero o cadena de caracteres en columnas. Estas columnas se pueden establecer por caracteres o por campos delimitados por un delimitador de campo. Su sintaxis es la siguiente: cut –c | -f [] fichero_texto Donde: -c : corta por caracteres especificados por lista_caracteres. -f []: corta por campos establecidos por lista_columnas. Por defecto, los delimitadores son: espacio, tabuladores o espacio fin de línea, a menos que se especifique otro mediante la opción –d. No se pueden ejecutar conjuntamente las opciones –c y –f Ejemplo: Obtener los caracteres 1º, 2º, 3º, 4º y 20º del fichero /etc/passwd: cut –c1-4, 20 /etc/passwd 40 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX PROCESAMIENTO DE TEXTOS Por otro lado, el comando grep localiza un patrón en uno o varios ficheros, mostrando las líneas donde se encuentra. Su sintaxis es la siguiente: grep [-nvlicw] patron fichero_texto [fichero_texto..] Las opciones más empleadas son: l: solo muestra los ficheros que contienen un patrón especificado. i: elimina la distinción entre mayúsculas y minúsculas. c: muestra el número de líneas totales que cumplen con el patrón para cada fichero. w: localiza el patrón como palabra y no como parte de una cadena de texto. n: imprime el número de línea del patrón localizado. v: busca líneas que no contengan el patrón especificado. 41 Actividad propuesta 3.13 GESTIÓN DE ARCHIVOS POR LINEA DE COMANDOS EN LINUX PROCESAMIENTO DE TEXTOS Además, grep permite emplear expresiones regulares básicas. Las más utilizadas se muestran en la siguiente tabla: Símbolo Significado Ejemplos. Cualquier carácter, excepto el carácter de fin de línea. Cas. * Cero o más repeticiones del carácter que le precede. C* [lista] Coincide con uno de los caracteres presentes en la lista [aCgh] Se puede indicar la negación de la coincidencia de un patrón [^aCgh] Se pueden indicar rangos de caracteres, si se incluyen guiones y estos [0-9] caracteres se especifican de mayor a menor [^0-9] ^ Comienzo de línea ^C $ Fin de línea a$ Los símbolos que tiene un significado especial se pueden emplear si se anteceden con el carácter “\” en los patrones. Como, por ejemplo, “\*” o “\^” 42 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX PARTICIONAR Existen varias herramientas para crear y manipular particiones en Linux, siendo las más conocidas: fdisk, gdisk, parted y Gparted. Todas trabajan con esquemas de particionamiento MBR y GPT, a excepción de gdisk, que solo lo hace con GPT. Ubuntu con escritorio GNOME, incorpora la herramienta de partición de discos GNOME-disks a la que podemos acceder como “discos”. Dentro de ella podemos seleccionar distintos tipos de particiones. Además, permite desmontar, eliminar y establecer opciones adicionales de la partición de forma sencilla: o Formatear. o Editar la partición. o Redimensionarla. o Comprobar y repara el sistema de archivos. o Crear y restaurar una imagen. o Probar el rendimiento de la partición. 43 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX PARTICIONAR La herramienta Gparted es un clásico entre los gestores de particiones de Linux, aunque no viene instalada por defecto. Podemos descargar la aplicación a través de “Software Ubuntu”. Puede trabajar con MBR y GPT y permite formatear las particiones. Tiene un entorno muy intuitivo. A la derecha se selecciona el disco y en la parte central aparece un esquema grafico con las dimensiones de las particiones y el espacio ocupado por cada una de ellas. Marcando una partición o en el espacio no particionado, podemos realizar sobre ella multitud de acciones como: o Formatear. o Asignar un nombre. o Crear nuevas particiones en espacio no particionado. o Redimensionar o mover particiones. o Copiar y pegar particiones en otros discos. o Eliminar o crear nuevas particiones. 44 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX PARTICIONAR Los discos deben de disponer de una tabla de particiones para poder gestionar las particiones que en él se establezcan. Si el disco esta “limpio”, se ha de crear previamente la tabla de particiones. En el menú “Dispositivo”, podemos seleccionar la opción Crear tabla de particiones y, a continuación, seleccionar el tipo de tabla de particiones, siendo las más conocidas msdos (MBR) o gpt. Para crear una nueva partición, marcamos el espacio sin asignar o no particionado, y en el menú “Partición” seleccionamos “Nueva”. Es entonces donde se establecen todos los parámetros de la partición, como el tamaño, el sistema de archivos para implantar, la etiqueta o el tipo de partición (primaria, extendida o lógica) que, en el caso de GPT, solo puede ser primaria. Además, se pueden redimensionar las particiones, reduciendo su tamaño desde el principio de la misma o por el final, e incluso, si hay espacio sin asignar en el disco, también se pueden ampliar. 45 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX FORMATEAR Existen muchas herramientas de particionamiento, como GNOME-disks, Gparted y parted, que permiten formatear las particiones creadas. Pero existen otras en modo texto que se encargan únicamente de realizar esa función. El comando mkfs presenta la siguiente sintaxis: mkfs [-t tipo_sistema_archivos] [opciones] dispositivo Donde dispositivo es normalmente una partición, y las opciones más comunes son: t tipo_sistema_archivos: tipo de sistema de archivos que se desea implantar como ext2, ext3, vfat o ntfs, entre otros. opciones: se pueden especificar otras muchas opciones, como etiquetas, formato rápido, tamaño del clúster, etc. Estas opciones varían según el constructor, al que llama mkfs. Para formatear una partición, el dispositivo ha de estar montado Ejemplo: mkfs –t ntfs /dev/sdc1 46 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX DESFRAGMENTACIÓN La fragmentación de un sistema de archivos se entiende como la disgregación o esparcimiento de datos, relacionados entre sí, en el medio de almacenamiento. En principio, este hecho no presenta problema alguno, puesto que el sistema de archivos conoce y gestiona los bloques de datos de cada archivo. Sin embargo, los discos duros mecánicos sí que se ven penalizados por esta característica. Cuando existe mucha fragmentación en un disco, se generan multitud de huecos donde se pueden almacenar, o no, bloques de archivos distintos. Al proceso de unión de estos bloques de datos de un mismo archivo se le denomina desfragmentación. La fragmentación y sus características dependen de cada sistema de archivos. En sistemas de archivos NTFS y FAT la desfragmentación es común para mejorar su rendimiento. Los sistemas de archivos Linux, en general, no necesitan desfragmentarse, puesto que emplean sistemas inteligentes de asignación de bloques a ficheros, de manera que raramente estos se han de desfragmentar. Sin embargo, sistemas de archivos Linux con dispositivos con poco espacio en disco y mucho movimiento, creación y eliminación frecuente de ficheros es posible que se deba desfragmentar. 47 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX DESFRAGMENTACIÓN Por ello, el sistema de archivos ext4 puede emplear la utilidad de e4defrag para este propósito. El comando e4defrag presenta la siguiente sintaxis: e4defrag [-cv] objetivo Donde objetivo puede ser un archivo, un directorio o un dispositivo con un sistema de archivos ext4 que emplea extents. Las opciones mas comunes son: c: muestra un recuento de la fragmentación actual con respecto a la fragmentación ideal. Si se combina con la opción v, lo muestra para cada archivo. Con esta opción no se hace efectiva la fragmentación. v: muestra el recuento para cada archivo antes y después de la fragmentación. 48 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX CHEQUEO El componente más importante en cualquier sistema informático son los datos. Estos tienen un valor incalculable y, si se pierden, sin tener una copia de los mismos, los resultados pueden tener resultados catastróficos. Los discos duros, a lo largo de su vida útil, suelen ser fuente de diversos problemas, originados internamente o por agentes externos. Nos referimos a: Malware. Fallos en componentes electrónicos del disco duro. Fluctuaciones de tensión en el suministro de energía. Ya sean por picos de tensión, bajadas de esta, fluctuaciones periódicas o cortes de luz. Daños físicos, como caídas o simplemente elementos deteriorados por el uso. Errores firmware o de actualización de drivers. La monitorización del sistema de archivos se ha de realizar continuamente o chequearse periódicamente dependiendo de la importancia de los datos que almacene el disco, por lo que es muy recomendable instalar una aplicación de monitorización del estado de los discos duros. En cuanto a utilidades propias de Linux, este dispone principalmente de los comandos fsck y e2fsck. 49 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX RAID Es una de las maneras más eficaces de evitar la perdida de datos y aumentar el rendimiento en tareas de lectura y escritura en los discos duros. RAID (Redundant Array of Independent Disks) consiste en establecer un modo de trabajo, nivel o configuración de un grupo de discos para aumentar la integridad, la capacidad de almacenamiento, la velocidad de transferencia o disminuir el riesgo a fallos. Para establecer esta configuración, se puede realizar mediante software o mediante un hardware específico. La forma de realizar un nivel RAID es distribuyéndolo o redundando los datos entre varios discos de diferentes maneras. 50 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX RAID. TIPOS DE RAID Los niveles de RAID más empleados son: A. RAID 0. Se encarga de dividir o distribuir los datos entre dos discos o más sin duplicar la información, es decir, no existe redundancia de datos. Por este motivo, no se considera una configuración propia RAID, pero aumenta la velocidad de lectura y escritura. B. RAID 1. Establece una copia exacta entre dos o más discos. Esto permite aumentar la fiabilidad de los datos al quedar estos duplicados en tantos discos como se desee. Además, aumenta la velocidad de lectura. Es conocido como espejo o mirroring. C. RAID 5. Al igual que RAID 0, realiza una distribución de los bloques de datos y genera información de paridad que se distribuye en todos los discos (al menos tres). Los bloques de paridad permiten reconstruir un disco en caso de fallo. Para ello, han de realizar cálculos de los datos, generando dicha paridad, también llamada código de detección de error o CRC. De este modo, no se desaprovecha tanto espacio redundante, como en RAID 1 y mejora la velocidad de lectura. 51 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX RAID. TIPOS DE RAID D. RAID 6: Se necesitan como mínimo 4 discos. Puede tolerar dos fallos de discos duros a la vez. El RAID 6 es similar al RAID 5 e incluye un disco de reserva que entra en funcionamiento una vez que uno de los discos se estropea. Proporciona por tanto una elevada redundancia de datos y rendimiento de lectura. Resulta aconsejable cuando queramos soportar varios fallos de unidades y ofrece una mayor redundancia para la protección de datos. 52 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX RAID. TIPOS DE RAID E. COMBINACIONES RAID: RAID 1+0, RAID 0+1, RAID 5+0, RAID 6+0. También se pueden establecer combinaciones de niveles RAID anidando estos y aprovechando las ventajas de varias configuraciones. Así, destacamos los siguientes niveles anidados: 53 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX RAID. ADMINISTRACION DE RAID En Linux, la administración de RAID se realiza mediante mdadm (Multiple Device Administrator), el cual podemos instalar mediante la instrucción: sudo apt install mdadm Antes de proceder, podemos comprobar si existe algún dispositivo RAID en el sistema, para lo que visualizamos el archivo /proc/mdstat mediante cat /proc/mdstat y en su resultado podemos comprobar en la línea personalities los tipos de niveles RAID soportados por el núcleo Linux actualmente. La creación del RAID se puede hacer sobre los dispositivos o sobre particiones, y no necesariamente del mismo tamaño. En el caso de ser de distinto tamaño, al ejecutar la instrucción se utilizará por defecto la capacidad de menor tamaño. Los comandos más empleados para la gestión de RAID en Linux son los siguientes: 1. Creación del RAID: mdadm --create /dev/mdX --level=Y --raid-devices=Z dispositivos Donde Create /dev/mdX indica la creación del multidispositivo, siendo X un número. level=Y es el nivel RAID para aplicar, pudiendo ser Y: linear para RAID lineal. raid0, 0 o stripe para RAID0. mirror, raid1 o 1 para RAID1. raidX o X, siendo X el valor 4,5,6 o 10 para crear los respectivos RAID4, RAID5, RAID6 o RAID10. raid-devices=Z dispositivos, donde Z implica el numero de dispositivos asociados al RAID. 54 GESTIÓN DE ALMACENAMIENTO POR LINEA DE COMANDOS EN LINUX RAID. ADMINISTRACION DE RAID 2. Establecer un disco como defectuoso de un RAID: mdadm /dev/mdX --fail /dev/sdY 3. Eliminar un disco de un RAID: mdadm /dev/mdX --remove /dev/sdY 4. Añadir un disco a un RAID: mdadm /dev/mdX --add /dev/sdY 5. Comprobar el estado de todos los multidispositivos: cat /proc/mdstat 6. Obtener información de todos los multidispositivos: mdadm --detail --scan 7. Obtener información de un multidispositivo: mdadm --detail /dev/mdX y mdadm /dev/mdX --scan 8. Examinar el estado de un dispositivo asociado a un RAID: mdadm --examine /dev/sdX 9. Detener un RAID: mdadm --stop /dev/mdX 10. Eliminar el superbloque de un dispositivo asociado a un RAID: mdadm --zero-superblock /dev/sdY Sobre el archivo fstab: https://blog.carreralinux.com.ar/2020/04/el-archivo-fstab-al-descubierto/ 55 BÚSQUEDA DE INFORMACIÓN POR LINEA DE COMANDOS EN LINUX Los sistemas de archivos han de ofrecer herramientas para localizar archivos por diferentes criterios (fecha de creación, fecha de modificación, tamaño, nombre, etc) y búsqueda de información en el contenido de estos. Uno de los comandos más empleados en Linux es find. Este comando permite multitud de opciones para localizar cualquier fichero en el sistema de archivos. Su sintaxis en la siguiente: find [ruta] [criterio] [acción] El comando find realiza una búsqueda sobre la ruta dada. Si no se especifica ruta, la búsqueda se realiza sobre el directorio actual. El resultado y los errores se envían a las salidas estándares por defecto. En caso de no indicar criterio alguno, no se hará ningún tipo de filtro. Además, la acción permite tratar los ficheros encontrados mediante alguna acción. 56 BÚSQUEDA DE INFORMACIÓN POR LINEA DE COMANDOS EN LINUX CRITERIOS DE BÚSQUEDA Los criterios más importantes de búsqueda son los que se exponen a continuación: A. Por nombre de fichero: Están las siguientes opciones: name patrón: permite buscar ficheros permitiendo la búsqueda con patrones. iname patrón: actúa del mismo modo que name, pero sin distinguir mayúsculas de minúsculas. Ejemplos: find. –name texto.txt: Busca en el directorio actual recursivamente archivos con el patrón “texto.txt” find. –iname texto.txt: Busca en el directorio actual recursivamente archivos con el patrón “texto.txt” sin distinguir mayúsculas de minúsculas. B. Nivel de profundidad en subdirectorios: Por defecto, find busca recursivamente en directorios a partir de la ruta especificada, pero podemos limitar el nivel de profundidad máximo y mínimo (por donde empieza/termina la búsqueda). maxdepth n: especifica hasta qué subdirectorios se realiza la búsqueda. La ruta especificada se encuentra en el nivel 1, un subdirectorio dentro de este en el nivel 2 y así sucesivamente. mindepth n: se especifica desde qué nivel comienza la búsqueda. Si se indica el nivel 2, buscará desde los subdirectorios de la ruta especificada recursivamente. Ejemplos: find. –maxdepth 1 –name texto.txt: Limita la búsqueda de ficheros con nombre “texto.txt” en el directorio actual sin entrar en subdirectorios. find. –maxdepth 2 –mindepth 2 –name texto.txt: Limita la búsqueda de ficheros con nombre “texto.txt” únicamente a subdirectorios del directorio actual. 57 BÚSQUEDA DE INFORMACIÓN POR LINEA DE COMANDOS EN LINUX CRITERIOS DE BÚSQUEDA C. Tiempos de acceso, modificación y cambio: Podemos hacer búsquedas atendiendo a la fecha de la última fecha de modificación del i-nodo (c), última modificación de su contenido (m) y ultimo acceso a su contenido (a). Para cualquiera de ellos, se puede especificar el tiempo en minutos (min) o en días (time). De tal manera que podemos especificar las siguientes opciones: cmin, mmin, amin, ctime, mtime y atime. Los valores numéricos que acompañan a las opciones pueden ser: +n indicando mayor que, -n indicando menor que y n indicando igualdad. Ejemplos: find. –amin -1: Localiza archivos que se accedieron hace menos de un minuto. find. –mtime -1: Localiza archivos que se modificaron hace menos de un día. D. Comparación de ficheros: También se puede localizar ficheros comparándolos con otro fichero. A saber: newer fichero: busca ficheros que se modificaron mas recientemente que fichero. anewer fichero: busca ficheros accedidos mas recientemente que fichero fue modificado. cnewer fichero: busca ficheros en los que el estado del i-nodo se modificó más recientemente que fichero fue modificado. Ejemplo: find. –anewer notas.txt: Busca ficheros cuya fecha de acceso fue más reciente que la modificación de notas.txt 58 BÚSQUEDA DE INFORMACIÓN POR LINEA DE COMANDOS EN LINUX CRITERIOS DE BÚSQUEDA E. Tamaños: Podemos especificar comparaciones con tamaños. Para lo que podemos emplear la siguiente opción: -size [+-] n [bckMG] Donde cada parámetro indica: +n indica mayor que n, -n indica menos que -n y n indica igualdad, siendo n un valor numérico. b bloques de 512 bytes c bytes k kilobytes M megabytes G gigabytes Ejemplos: find. –size +1M: Busca archivos mayores de 1 megabyte. F. Tipo de fichero: Se pueden realizar búsquedas por el tipo de fichero mediante la opción –type con alguno de los siguientes modificadores: l (enlace simbólico), d (directorio), f (fichero regular), b (dispositivo de tipo bloque) y c (dispositivo de tipo carácter). Ejemplo: find. /nivel2 –type d: Busca directorios a partir del subdirectorio nivel2. 58 BÚSQUEDA DE INFORMACIÓN POR LINEA DE COMANDOS EN LINUX CRITERIOS DE BÚSQUEDA G. Permisos: Las búsquedas se pueden efectuar sobre los permisos mediante la opción perm [-/] permisos. Se pueden establecer los permisos en octal o de manera simbólica. El signo – indica que el fichero debe contener al menos los permisos dados y / indica que debe tener alguno de los permisos que se dan. Si no se indica ninguno de estos dos signos los permisos deben ser idénticos a los especificados. Ejemplos: find./nivel2 –perm 777: Busca archivos que tengan todos los permisos posibles en la carpeta nivel2. find./nivel2 –perm -644: Busca archivos que tengan al menos uno de los permisos especificados en la carpeta nivel2. Actividad propuesta 3.15 58