Manejo básico de archivos
Conceptos Claves
- 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.
- Usar expansiones y comodines en los comandos.
- Uso de find para localizar y actuar sobre los archivos basándose en el tipo, tamaño o tiempo.
- Uso de tar, cpio y dd.
Términos y Utilidades
- cp
- find
- mkdir
- mv
- ls
- rm
- rmdir
- touch
- tar
- cpio
- dd
- file
- gzip
- gunzip
- bzip2
- file globbing
Introducción
Linux no es mas que una colección de archivos almacenados en el disco duro de la maquina. Otros archivos dentro del sistema pueden contener los datos de usuarios. Saber administrar estos archivos es una tarea importante para el administrador.
¿Cómo son los nombres de archivos en Linux?
Los nombres de archivos en Linux distinguen mayúsculas de minúsculas, esto es, son "case sensitive". Los archivos README, readme, REadme y rEadme son archivos distintos y por lo tanto al ser nombres distintos pueden estar en el mismo directorio.
En Linux los archivos no tienen por qué tener una extensión. La suelen tener a modo orientativo, pero no es en absoluto necesario. Linux sabe qué contiene cada archivo independientemente de cuál sea su extensión. Por comodidad, podremos llamar a todos nuestros archivos de texto con la extensión .texto, o a todos nuestros documentos con la extensión .documento, de esta manera, podremos luego agruparlos más fácilmente.
Los nombres de archivos o directorios pueden ser muy largos, de más de 200 caracteres, lo cual nos da bastante flexibilidad para asociar el nombre de un archivo a lo que contiene. No obstante, hay ciertos caracteres que nunca se deberían utilizar a la hora de nombrar un archivo. Uno de ellos es el espacio, nunca llamaremos a un fichero con un nombre que contenga un espacio. Tampoco son recomendados otros caracteres raros como signos de puntuación (a excepción del punto), acentos o la ñ. En algunos casos Linux ni siquiera nos permitirá usarlos.
Los recomendables son las letras A-Z, a-z, los números (0-9), el punto, el guión (-) y el guión bajo (_) para nombrar un archivo. Los acentos y la ñ tampoco se recomiendan. Los ficheros y directorios ocultos en Linux comienzan su nombre por un punto (.)
Reglas de expansión con uso de comodines
Comodines
- Signo de pregunta ?: Iguala a cualquier carácter particular. Por ejemplo p??o igual a paco, pico y peco.
- Asterisco *: Iguala cualquier carácter o conjunto de caracteres p*o igual po, pozo, paco, pico, peco, piso, pego, etc.
- Signo de exclamación !: Niega el valor.
- Valores entre corchetes[]: Iguala cualquier grupo de caracteres que se indique entre los corchetes p[ai][cz]o. Es posible especificar un rango de valores, como p[a-z]co.
Los comodines se implementan en el shell y se utilizan en cualquier comando que se invoque con estos parámetros. En ingles, el proceso de expansión de comodines también se conoce como globbing o file globbing.
Inodos
La información de identificación para un objeto de un filesystem es conocida como el inodo. Los inodos almacenan información acerca de estos objetos como su ubicación en el disco, la fecha de modificación, parámetros de seguridad, etc. Cada filesystem es creado con un numero finito de inodos, que se calcula en base al tamaño del filesystem, entre otras cosas. Múltiples objetos pueden compartir el mismo inodo, lo que se conoce como vinculación de objetos (directorios u archivos).
Comandos de manejo de archivos
Comando ls
Descripción
Lista los archivos y directorios del directorio donde estemos. También se puede listar otros directorios distintos de donde estamos.
Sintaxis
ls [opciones] [directorio]
Opciones
Opción | Descripción |
---|---|
-l | Muestra la vista en forma de lista |
-h | Muestra MB, GB y TB. |
-a | Muestra archivos ocultos. |
-R | Muestra de forma recursiva el contenido del directorio |
-i | Muestra información acerca de inodos. |
Comando cp
Descripción
Acepta como argumentos una fuente y un destino, de forma que el primer parámetro de cp es el nombre del archivo que hay copiar y el segundo es el lugar donde se desea guardar la copia. Cabe destacar que el comando cp, no borra ningún archivo, así que no hace nada que pueda dañar al sistema.
El comando cp puede copiar múltiples archivos entre directorios si el primer parámetro es un archivo, y el destino es un directorio. En este caso, el nombre destino coincidirá con el original para cada archivo.
Sintaxis
cp [opciones] fuente destino
Ejemplo
$ cp –R carpeta1 carpeta2
Comando rm
Descripción
Se usa para eliminar archivos de un directorio.
Opciones
Opción | Descripción |
---|---|
-f | Elimina todos los archivos en un directorio sin preguntar al usuario. |
-i | Interactivo. Con esta opción, rm pide confirmación antes de eliminar cualquier archivo. |
-r (ó) –R | Elimina directorios y subdirectorios reiterativamente en la lista de argumentos. El directorio será vaciado de archivos y eliminado. Normalmente se pregunta al usuario antes de eliminar cualquier archivo protegido contra escritura que contenga el directorio. |
Comando mv
El comando mv permite mover de lugar y renombrar archivos.
Sintaxis
mv [opciones] fuente destino
Comando touch
Descripción
Se utiliza para cambiar la fecha y hora de última modificación de un archivo. También puede utilizarse para crear un archivo vacío.
Comando mkdir
Descripción
Sirve para crear directorios.
Sintaxis
mkdir [opciones] nombre_directorio
Comando file
Descripción
Me indica que tipo de archivo es un archivo.
Sintaxis
file [opciones]
Código de tipo de archivos
Código | Tipo de Archivo | Descripción |
---|---|---|
- | Archivo normal de datos | Puede ser texto, un programa ejecutable, gráficos, datos comprimidos o cualquier otro tipo de datos. |
d | Directorio | Los directorios son archivos, pero contienen nombres de archivos y punteros a inodos de disco. En los directorios, el bit de ejecución indica que ese directorio se puede usar para buscar dentro de sus contenidos. |
l | Vinculo simbólico | el archivo contiene el nombre de otro archivo o directorio. Cuando Linux accede al Vinculo simbólico, trata de leer el archivo al cual apunta el vinculo. |
p | Tubería nombrada | Una tubería habilita a dos programas en ejecución a comunicarse entre ellos. Uno abre la tubería para lectura y el otro para escritura, permitiendo que se transfieran datos entre los dos programas. |
s | Socket | Es similar a una tubería, pero permite enlaces de red y bidireccionales. |
b | Dispositivo de bloque | Un archivo de corresponde a un dispositivo de hardware al cual y desde el cual se transmiten datos en bloques de mas de un byte. Dispositivos de disco(discos duros, CD-ROMs, etc) son dispositivos de disco comunes. |
c | Dispositivo de caracteres | Un archivo que corresponde a un dispositivo de hardware al cual se transfieren datos en unidades de un byte. Ej: Puerto paralelo, puerto serial RS-232 y dispositivos de audio. |
Comando tar
Es un comando muy utilizado para realizar copias de resguardo. El nombre tar proviene de tape archiver. Los tarballs (archives de tar comprimidos con gzip o bzip2), son muy utilizados para copiar conjuntos de archivos entre computadoras.
Opción | Abreviación | Descripción |
---|---|---|
--create | c | Crea un archive |
--concatenate | A | Agrega archivos tar a un archive. |
--append | r | Agrega archivos normales a un archive |
--update | u | Agrega archivos que son nuevos en un archive |
--diff o --compare | d | Compara un archive con los archivos en disco |
--list | t | Lista los contenidos de un archive |
--extract o --get | x | Extrae archivos de un archive |
Ejemplos
Crear un tar
tar -cf home.tar /home/
Listar los archivos en un archive
# tar -tf home.tar
Extraer un solo archivo (.profile)
tar -xf home.tar .profile
Extraer un tar completo
tar -xf home.tar
Comando cpio
Es similar a tar. cpio necesita que se le provea una lista de archivos. Esta puede ser generada por find o ls y entregada a cpio por medio de una tubería. A diferencia de tar, cpio guarda por defecto los archivos con la ruta absoluta. Lo que significa que a la hora de restaurarlos, lo hará en su locación original.
Modos de operación
Modo | Descripción |
---|---|
Copy-Out Mode | Este modo, que se usa con las opciones --create o -o, crea un archivo y copias archivos en el. |
Copy-In Mode | Se activa el modo copy-in usando las opciones -i o --extract. Este modo extrae datos en un archive existente. |
Copy-Pass Mode: | Este modo es activado por la opción -p o --pass-trough. Combina los modos Copy-Out y Copy-In, permitiendo copiar un árbol de directorios de un lado a otro. |
Ejemplos
Para realizar un backup, se usa la opción - -create o –o . La cual puede ser combinada con otras opciones, como –v (verbose).
$ ls | cpio -ov > /tmp/object.cpio
Para restaurar se usa la opción - - extract o –i. En este caso con la opción –d para crear un directorio en caso que sea necesario.
$ cpio -idv < /tmp/object.cpio
Comando dd
Es una utilidad de copiado de bajo nivel, con la habilidad de aplicar ciertas transformaciones al mismo tiempo. Como herramienta de backup, dd es útil para hacer copias de sistemas de archivos enteros, incluso aquellos no soportados por Linux o gravemente dañados.
bs=tamaño: Opera en bloques del tamaño indicado.
count=bloques: Copia el numero indicado de bloques.
if=archivo: Usa archivo como el input, si se omite, es usa stdin.
of=archivo: Escribe la salida al archivo especificado.
Para resguardar una partición, se especifica el nombre del archivo del dispositivo como if (input file) y una partición, archivo o dispositivo como of (output file).
Ejemplo
dd if=/dev/sda2 of=/media/backups/sda2-back.img
De esta manera se resguarda la partición /dev/sda2 dentro de una archivo de imagen en el disco externo. Para restaurar la copia de resguardo, se invierten los operadores if y of.
Para usar compresión, se puede omitir el of y usar dd en conjunto con un programa de compresión con una tubería:
dd if=/dev/sda2 | gzip -9 > /media/backups/sda2-back.img.gz
gunzip /media/backups/sda2-back.img.gz - | dd of=/dev/sda2
Ventajas de dd
Independencia de FS: Se puede realizar copias cualquier cosa con dd, incluso si el soporte en Linux es limitado para ese determinado sistema de archivos o si se trata de particiones dañadas.
Desventajas de dd
Al realizar todo en una base de byte a byte, desperdicia espacio copiando espacio no utilizado.
Compresión con gzip
Descripción
El comando gzip sirve para comprimir y descomprimir archivos usando un algoritmo de compresión (Lempel-Ziv).
Ejemplos
Para Comprimir
$ gzip home.tar
Para descomprimir podemos usar gunzip.
$ gunzip home.tar.gz
o gzip con la bandera –d.
$ gzip –d home.tar.gz
Compresión con bzip 2
Descripción
Este otro programa de compresión utiliza un algoritmo diferente (Burrows-Wheeler). Las opciones que utiliza el comando son similares al programa gzip.
Sintaxis
bzip2 [opciones] [nombre_archivos]
bunzip2 [opciones] [nombre_archivos]