103.3 - Administración básica de archivos
Importancia
4
Descripción
El candidato debe ser capaz de usar comandos básicos de Linux para la administración de archivos y directorios.
Áreas de conocimiento clave:
Copiar, mover y eliminar archivos y directorios de forma individual.
Copiar múltiples archivos y directorios de forma recursiva.
Eliminar archivos y directorios de forma recursiva.
Utilizar especificaciones de comodines simples y avanzadas en los comandos.
Usar find para localizar archivos y actuar sobre ellos en base a su tipo, tamaño o marcas de tiempo.
Uso de tar, cpio y dd.
Contenidos
Moverse entre ficheros
Para moverse entre ficheros usaremos cd
y para listarlos ls
. Este último tiene algunos parámetros interesantes:
Para que se listen los ficheros por defecto en oculto, ósea los que empiezan con " . "
Para que se listen archivos ignorando con " . " (directorio actual) y " .. " (directorio anterior)
La diferencia la podemos comprender contando el numero de líneas que aparecen:
Para mostrar los tamaños de archivo en un formato legible para humanos:
Para movernos por directorios y ficheros, como ya hemos indicado, usaremos el comando cd (change directory). Por ejemplo:
Crear, mover y eliminar archivos
El comando touch
es la forma más fácil de crear archivos nuevos y vacíos o para cambiar las marcas de tiempo (el timestamp es decir, la hora de modificación) de los archivos y directorios existentes:
Vamos a usar cp
(copy) para todas las tareas de copia, es muy sencillo:
Se puede usar con rutas absolutas o relativas pero ten cuidado por que sino te informará de errores.
El comando para mover y renombrar archivos es mv
(move). La operación de mover es análoga a la operación de cortar y pegar que generalmente se realiza a través de una GUI y es parecido a cp
en su sintaxis:
rm
(remove) se usa para eliminar archivos, esta acción suele ser irreversible, por lo que este comando debe utilizarse con precaución.
Crear y eliminar directorios
Crear directorios es fundamental para organizar sus archivos y carpetas ya que los archivos se pueden agrupar de manera lógica manteniéndolos dentro de un directorio.
Para crear un directorio, usamos mkdir
:
Para borrar un directorio si está vacío usamos rmdir:
FILE GLOBBING
El globbing es una característica proporcionada por el shell para representar múltiples nombres de archivo mediante el uso de caracteres especiales llamados wildcards, son esencialmente símbolos que pueden usarse para sustituir uno o más caracteres y que permiten, por ejemplo, mostrar todos los archivos que comienzan con la letra A
o todos los archivos que terminan con las letras .conf
.
Los wildcards son muy útiles ya que pueden usarse con comandos como cp
, ls
o rm
. Esto no recoge los archivos ocultos.
*
-> cualquier carácter de 0 a N veces, por lo tanto que no aparezca nada también sirve.?
-> cualquier carácter pero 1 vez solo.[A-B]
-> rango de valores.!
-> invertimos o negamos
Algunos ejemplos:
Como encontrar archivos
A veces se hace difícil localizar un archivo en particular pero afortunadamente, Linux proporciona el comando find
para buscar y localizar archivos rápidamente, este usa la siguiente sintaxis:
STARTING_PATH define el directorio donde comienza la búsqueda.
OPTIONS controla el comportamiento y agrega criterios específicos para optimizar el proceso de búsqueda.
EXPRESSION define la consulta de búsqueda.
Por ejemplo:
Vamos a ver algunos de sus parámetros más importantes para usar criterios de búsqueda:
Una vez que se realiza una búsqueda, es posible realizar una acción en el conjunto resultante utilizando -exec
:
Esto filtra cada objeto en el directorio actual y dentro de éste para los nombres de archivo que terminan en *.conf
y luego ejecuta el comando chmod 644
para modificar los permisos de archivo en los resultados. Por ahora, no se preocupe con el significado de '{}'; ya que se discutirá más adelante.
Podemos usarlo tambien para buscar una palabra clave en un archivo:
Esto buscaría solo archivos (
-type f
) en la jerarquía de directorio actualEjecutaria el comando
grep
buscando la palabra "lpi
" para cada archivo que satisfaga las condicionesLos archivos que coinciden con estas condiciones se imprimirán en la pantalla (
-print
).Las llaves (
{}
) son un marcador de posición para los resultados de la búsquedafind
.Los {} están encerrados entre comillas simples (
'
) para evitar pasar archivosgrep
con nombres que contengan caracteres especiales.
El comando -exec
se termina con un punto y coma (;
), que se debe escapar (\;
) para evitar la interpretación por parte del shell.
Además, agregar la opción -delete
al final de una expresión eliminaría todos los archivos que coincidan, obviamente no hace falta decir que esta opción debe usarse cuando esté seguro de que los resultados solo coinciden con los archivos que desea eliminar.
En el ejemplo a continuación, find localiza todos los archivos en la jerarquía comenzando en el directorio actual y luego elimina todos los archivos que terminan con los caracteres .bak:
Empaquetar y comprimir
No es lo mismo y no necesariamente van de la mano
Puedo crear un fichero vacío que ocupe con dd como ya vimos
Empaquetar -> tar
Comprimir -> gzip, bzip2, xz
Para comprimir un fichero no hace falta empaquetar. Pero empaquetar es meterlo dentro de un paquete, ajuntarlo, puede ayudar a optimizar el espacio
Empaquetando con tar
El comando tar
, abreviatura de “tape archive (r)”, se utiliza para crear archivos tar
convirtiendo un grupo de archivos en un archivo que se crean para mover o respaldar fácilmente un grupo de archivos. Por si mismo, también tiene la capacidad de extraer archivos tar
, mostrar una lista de los archivos incluidos en el archivo y agregar archivos adicionales a un archivo existente.
Acepta los tres estilos de llamada (unix, tradicional, GNU)
Para extraer archivos:
Se puede comprimir con tar
tambien:
Al revisar con file podemos ver el tipo de compresión
Para la compresión hay tres métodos gzip, bzip2 y xz vamos a verlos:
Como ya hemos visto previamente, los cat
sirven para leer archivos de texto comprimidos, por ejemplo los logs antiguos además permite pasarle cosas del estandar otuput:
Los comandos cpio y dd
cpio
significa “copy in, copy out” (copiar dentro, copiar fuera). Se utiliza para procesar archivos de almacenamiento como archivos *.cpio
o *.tar. cpio
realiza las siguientes operaciones:
Copiar archivos a un archivo.
Extraer archivos de un archivo.
Toma la lista de archivos de la entrada estándar (principalmente salida de ls).
Para crear un archivo cpio
, utilizamos:
La opción -o
indica a cpio
que cree una salida llamada archive.cpio
. El comando ls
lista el contenido del directorio actual que se archivará. Para extraer el archivo utilizamos:
La opción -i
se usa para realizar el extracto. La opción -d
crearía la carpeta de destino. El caracter < representa la entrada estándar. El archivo de entrada a extraer es archive.cpio.
Respecto a dd
copia datos de una ubicación a otra. La sintaxis de la línea de comandos de dd difiere de muchos otros programas de Unix, utiliza la sintaxis option=value más parecido a Windows para sus opciones de línea de comandos en lugar de los formatos estándar GNU -option value o --option=value:
El comando dd normalmente no mostrará nada en la pantalla hasta que el comando haya finalizado. Al proporcionar la opción status=progress
, la consola mostrará la cantidad de trabajo que realiza el comando. Por ejemplo:
Este comando copiará el contenido de oldfile en newfile, donde of=
se refiere al archivo de salida (outfile
).
dd
también se utiliza para cambiar datos a mayúsculas/minúsculas o escribir directamente en dispositivos de bloque como /dev/sdb
:
Esto copiaría todo el contenido de oldfile en newfile y capitalizaría todo el texto. El siguiente comando hará una copia de seguridad de todo el disco duro ubicado en /dev/sda
en un archivo llamado backup.dd:
Last updated