Comandos de Linux relacionados con el sistema de archivos

Linux trata a todos los dispositivos como si fuesen archivos. Es decir, para él, la configuración de una impresora, una pantalla, un teclado o un disco duro es un archivo que tiene una entrada correspondiente de dispositivo en el sistema.

Cada distribución de Linux o de UNIX, en general, tiene sus propias características. Esto quiere decir que un expero en AIX no necesariamente tiene por qué saber de HP-UX o de RedHat.

No obstante, existe un estandar respecto al sistema de archivos que se cumple en todos los UNIX.

  • /dev: Contiene todos los ficheros de dispositivos, tal y como comentaba anteriormente.
  • /var: Es un filesystem que contiene información variable.
    • adm: Información de administración del sistema.
    • log: Guarda archivos con información del sistema y otras aplicaciones que van guardando ahí su actividad, errores, etc.
    • run: Encontraremos información sobre los procesos que están en ejecución.
[[email protected]]# ll
total 100
drwxr-xr-x. 2 root root 4096 Jun 24 2016 account
drwxr-xr-x. 15 root root 4096 Jun 24 2016 cache
drwxr-xr-x. 2 root root 4096 Oct 20 2016 crash
drwxr-xr-x. 2 root root 4096 Jun 24 2013 cvs
drwxr-xr-x. 4 root root 4096 Jun 24 2016 db
drwxr-xr-x. 3 root root 4096 Jun 24 2016 empty
drwx------. 3 hpeserviceaccount hpeserviceaccount 4096 Oct 18 2016 hpesm
drwx--x--x. 3 root root 4096 Oct 19 2016 install
drwxr-xr-x. 37 root root 4096 Oct 13 03:29 lib
drwxr-xr-x. 2 root root 4096 Jun 28 2011 local
drwxrwxr-x. 6 root lock 4096 Oct 13 03:29 lock
drwxr-xr-x. 21 root root 4096 Oct 13 11:51 log
drwx------. 2 root root 16384 Jun 24 2016 lost+found
lrwxrwxrwx. 1 root root 10 Jun 24 2016 mail -> spool/mail
drwxr-xr-x. 2 root root 4096 Jun 28 2011 nis
drwxr-xr-x. 10 root sys 4096 Oct 19 2016 opt
drwxr-xr-x. 2 root root 4096 Jun 28 2011 preserve
drwxr-xr-x. 28 root root 4096 Jul 19 22:28 run
drwxr-xr-x. 15 root root 4096 Jul 6 18:28 spool
drwxrwxrwt. 3 root root 4096 Oct 13 12:15 tmp
drwxrwxrwt. 2 root root 4096 Mar 22 2017 VRTSat_lhc
drwxr-xr-x. 8 root root 4096 Jul 12 2016 www
drwxr-xr-x. 2 root root 4096 Jun 28 2011 yp
[[email protected]]#
  • /usr: Directorios de trabajo de las aplicaciones.
  • /proc: Tenemos información sobre el sistema (tipo de CPU, uso de memoria, modelos de disco, etc.).

Ejemplo:

[root]# cat /proc/cpuinfo 
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-4650 v3 @ 2.10GHz
stepping : 2
microcode : 46
cpu MHz : 2097.570
cache size : 30720 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 15
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase smep cqm_llc cqm_occup_llc
bogomips : 4195.14
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
  • /opt: Directorio de instalación de las aplicaciones.
  • /etc: Ficheros de configuración del sistema operativo y aplicaciones.
  • /bin y /sbin: Ficheros binarios, es decir, son los ejecutables de las aplicaciones.

Hay más directorios pero, para empezar, con estos ya nos manejamos.

A continuación, voy a explicar algunas de las tareas más sencillas para aprender a manejarse por el sistema de archivos:

Consultar el contenido de un directorio en Linux

Utilizaremos el comando ls. En el siguiente ejemplo, además muestro los permisos y el propietario de cada archivo y directorio e incluyo los ficheros ocultos:

[[email protected] ~]# ls -l
total 148
drwxr-xr-x 5 root root     66 Sep 11 17:18 amzn-drivers
-rw-r--r-- 1 root root   3840 Jan 16  2018 binance_all_asks_venta_BNB_sort.html
-rw-r--r-- 1 root root   4025 Jan 16  2018 binance_all_bids_compra_BNB_sort.html
-rwxr--r-- 1 root root   5271 Dec 10 09:41 drop_tables.sh
-rw-r--r-- 1 root root   2822 Dec 10 13:01 drop_tables.sql
-rw-r--r-- 1 root root 112019 Dec 17 10:02 index.html
-rw-r--r-- 1 root root   5816 Dec 10 08:37 rename_tables_puerto53.sql
-rwxr--r-- 1 root root   4510 Dec 10 08:34 rename_tables.sh
[[email protected] ~]#

Mostrar los archivos ocultos

Con el comando anterior hemos sacado un listado de los archivos de un directorio, pero no muestra los archivos ocultos. Para ello, tenemos que añadir el parámetro «a» al comando «ls». Veamos un ejemplo:

[[email protected] ~]# ls -la
total 220
dr-xr-x---.  8 root root   4096 Jan 26 06:47 .
dr-xr-xr-x. 22 root root   4096 Oct 15 10:47 ..
drwxr-xr-x   5 root root     66 Sep 11 17:18 amzn-drivers
drwxr-xr-x   2 root root     39 Oct  2 21:31 .aws
-rw-------.  1 root root  18987 Jan 25 21:32 .bash_history
-rw-r--r--.  1 root root     18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root    176 Dec 29  2013 .bash_profile
-rw-r--r--   1 root root    179 Jan 14  2018 .bashrc
-rw-r--r--   1 root root   3840 Jan 16  2018 binance_all_asks_venta_BNB_sort.html
-rw-r--r--   1 root root   4025 Jan 16  2018 binance_all_bids_compra_BNB_sort.html
drwx------   3 root root     17 Sep 22  2017 .cache
-rw-r--r--.  1 root root    100 Dec 29  2013 .cshrc
-rwxr--r--   1 root root   5271 Dec 10 09:41 drop_tables.sh
-rw-r--r--   1 root root   2822 Dec 10 13:01 drop_tables.sql
drwx------   2 root root     99 Oct  7 08:05 .gnupg
-rw-r--r--   1 root root 112019 Dec 17 10:02 index.html
-rw-------   1 root root    272 Oct 25 15:56 .lesshst
-rw-------   1 root root  13940 Jan 21 08:37 .mysql_history
drwxr-----.  3 root root     19 Sep 19  2017 .pki
-rw-r--r--   1 root root   5816 Dec 10 08:37 rename_tables_puerto53.sql
-rwxr--r--   1 root root   4510 Dec 10 08:34 rename_tables.sh
-rw-------   1 root root   1024 Jan  9 06:53 .rnd
drwx------.  2 root root     48 Oct 11  2017 .ssh
-rw-r--r--.  1 root root    129 Dec 29  2013 .tcshrc
[[email protected] ~]#

Como podemos ver, todos los archivos que empiezan por punto son archivos ocultos.

Crear un directorio en Linux

Un directorio sirve para agrupar ficheros y otros subdirectorios en un lugar del sistema operativo. Si lo comparamos con Windows, sería una carpeta.

[[email protected] ~]$ mkdir contactos 
[[email protected] ~]$ ls -l total 0
 drwxrwxr-x 2 usuario1 usuario1 6 oct 27 19:40 contactos
[[email protected] ~]$

Para eliminar un directorio de manera recursiva, ejecutaremos el comando rm -r directorio.

Entrar y salir de un directorio

  • Entrar
[[email protected] ~]$ cd contactos
[[email protected] contactos]$ ls vocales.txt
[[email protected] contactos]$
  • Salir
[[email protected] contactos]$ cd ..
[[email protected] ~]$

Mostrar el directorio en el que estamos

[[email protected] contactos]$ pwd
/home/usuario1/contactos
[[email protected] contactos]$

Crear un fichero en Linux

El comando touch fichero creará un fichero vacío en Linux.

Con el comando vi crearemos o editaremos un fichero de texto.

Ver el contenido de un fichero

Utilizaremos los comandos cat, morevi:

[[email protected] contactos]$ cat vocales.txt
a, e, i, o, u 
[[email protected] contactos]$

Copiar archivos de un directorio a otro en Linux

Con el comando cp copiamos archivos de un origen a un destino. El destino puede ser otro directorio o el mismo pero con un nombre de archivo diferente.

Si añadimos el parámetro «-p», clonaremos los permisos del fichero.

[[email protected] contactos]$ cp -p vocales.txt /home/usuario1/letras
[[email protected] contactos]$ ls /home/usuario1/letras/ 
vocales.txt 
[[email protected] contactos]$

Borrar archivos y directorios en Linux

Usaremos el comando «rm archivo» a «rm -r directorio» para eliminar directorios de manera recursiva.

Si queremos borrar un directorio que está vacío, ejecuteremos el comando rmdir directorio.

Mover y renombrar ficheros en Linux

El comando mv mueve un fichero de un directorio a otro o renombra el archivo.

  • Mover
[[email protected] contactos]$ mv vocales.txt /home/usuario1/letras/ 
[[email protected] contactos]$ ls /home/usuario1/letras/ vocales.txt 
[[email protected] contactos]$
  • Renombrar
[[email protected] contactos]$ cd ../letras/ 
[[email protected] letras]$ mv vocales.txt vocales1.txt 
[[email protected] letras]$ ls -la total 4 drwxrwxr-x 2 usuario1 usuario1 25 oct 27 20:01 . drwx------ 6 usuario1 usuario1 132 oct 27 19:57 .. 
-rw-rw-r-- 1 usuario1 usuario1 14 oct 27 19:50 vocales1.txt 
[[email protected] letras]$

Creación de enlaces a archivos en Linux

Podemos crear dos tipos de enlaces a archivos:

  • Blandos (soft link): Crean un enlace simbólico a un fichero para que podamos acceder a él desde una ubicación diferente sin que tengamos que copiarlo a ese sitio.
[[email protected] letras]$ ln -s vocales1.txt vocales.txt
[[email protected] letras]$ 
total 4
drwxrwxr-x 2 usuario1 usuario1 43 oct 27 20:34 . 
drwx------ 6 usuario1 usuario1 132 oct 27 19:57 .. 
-rw-rw-r-- 1 usuario1 usuario1 14 oct 27 19:50 vocales1.txt 
lrwxrwxrwx 1 usuario1 usuario1 12 oct 27 20:34 vocales.txt -> vocales1.txt 
[[email protected] letras]$ cat vocales.txt
a, e, i, o, u 
[[email protected] letras]$
  • Duros (hard link): Crean un nuevo fichero en el sistema con el nombre que indiquemos pero compartiendo el mismo inodo, lo que significa que cada enlace duro que creemos es una copia exacta de el resto de enlaces duros asociados al mismo fichero. Por lo tanto, si realizamos algún cambio en alguno de los enlaces como, por ejemplo, un cambio de permisos, éstos también se verán reflejados en el resto de enlaces duros.
$ ln test hard-link
$ ls -li
13592 -rw-r--r-- 2 david martinez 5 2011-04-27 19:09 hard-link
13592 -rw-r--r-- 2 david martinez 5 2011-04-27 19:09 test

No podemos crear enlaces duros sobre directorios.

Sincronizar filesystems con rsync

Con rsync sincronizaremos el contenido de un sistema de archivos origen a un destino sin tener que copiar todo el contenido de nuevo, ya que solamente copiaremos los cambios, ganando mucho tiempo cuando el volumen de datos es muy grande.

Ejemplo de uso:

rsync –delete –recursive –times -og –links –perms –hard-links\ /tmp/rsync/ [email protected]_remoto:/tmp/rsync

–delete: Elimina ficheros que existen en el destino pero no en el origen.
–recursive: Copia directorios de manera recursiva
–times: Envía la información de las fechas y horas de modificación de los ficheros.
-og: No modifica ni el usuario ni el grupo de los ficheros.
–links: Copia los enlaces simbólicos.
–perms: Copia los permisos.
–hard-links: Copia los enlaces duros, siempre que estén dentro del diretorio que se está copiando.

También podemos utilizarlo para sincronizar dos filesystems locales:

nohup rsync -avzhr --delete /filesystem_origen /filesystem_destino &

Es recomendable utilizar nohup cuando tenemos que sincronizar una cantidad grande de datos.

Búsqueda de archivos en Linux con el comando find

Con el comando find buscaremos archivos por nombre, fechas, propietarios, tamaño, etc.

Ejemplos:

  • Búsqueda por nombre:
[[email protected] ~]$ find . -name voc*.txt -exec ls -la {} \; 
-rw-rw-r-- 1 usuario1 usuario1 14 oct 27 19:50 ./letras/vocales1.txt 
[[email protected] ~]
  • Búsqueda por fechas:

-mtime 0: Busca archivos modificados entre ahora mismo y las últimas 24 horas.
-mtime -1: Busca archivos modificados hace menos de 24 horas.
-mtime 1: Busca archivos modificados entre las últimas 24 y 48 horas.
-mtime +1: Busca archivos modificados desde hace más de dos días.
-mmin +5 -mmin -10: Busca archivos modificados entre los 6 y los 9 últimos minutos.

[[email protected] ~]$ find . -mtime +15 
./.bash_profile 
./.gnome2 
./.bashrc 
./.mozilla 
./.mozilla/extensions 
./.mozilla/plugins 
./.bash_logout 
[[email protected] ~]$

Con la ayuda del comando (man find), veremos todos los parámetros disponibles de este comando para optimizar nuestra búsqueda.

Empaquetar archivos con tar

Hay muchas aplicaciones capaces de empaquetar múltipes archivos y directorios en un solo fichero en formato tar. Sin embargo, tar es un estándar muy utilizado en todos los sitemas UNIX. Particularmente, es muy útil porque conserva los permisos y propietarios de los archivos originales, por lo que viene muy bien a la hora de hacer restauraciones.

El funcionamiento de este comando es muy simple.

  • Empaquetar: tar cvf mifichero.tar midirectorio
  • Desempaquetar: tar xvf mifichero.tar

Comprimir y descomprimir un archivo con tar y gzip

En Linux es muy frecuente utilizar gzip para comprimir un archivo, es decir, para tener una copia de seguridad del mismo que ocupe menos en el sistema.

Ejemplo:

[[email protected] letras]$ gzip vocales1.tar 
[[email protected] letras]$ ll total 4 
-rw-rw-r-- 1 usuario1 usuario1 153 oct 27 20:13 vocales1.tar.gz 
[[email protected] letras]$

Para descomprimir, simplemente, utilizaremos gunzip vocales.tar.gz.

Conocer cuánto espacio disponible tenemos en los filesystems de Linux

El espacio de un filesystem se mide por dos parámetros:

  • El tamaño de los archivos.
  • La cantidad de inodos utilizados.

Si cualquiera de las dos métricas llega al 100% de ocupación, no podremos escribir más archivos en el filesystem.

Para revisarlo, utilizaremos el comando «df»:

[root]# df -hP /root
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-rootvol 6.0G 3.7G 2.0G 66% /
[root]# df -i /root
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg00-rootvol 393216 91386 301830 24% /
[[email protected] ~]#

Averiguar cuáles son los archivos que más ocupan en Linux

Esta información es vital para saber qué archivos son los que nos están llenando un filesystem. Cuando se llene, es posible que deje de funcionar alguna aplicación porque ya no podrá escribir datos en él.

En el siguiente ejemplo, averiguamos en KB, cuáles son los 30 archivos o directorios que más espacio están ocupando:

[root var]# du -xk |sort -rnk1 |head -30
4769572 .
3053292 ./opt
2123036 ./opt/OV
2008900 ./opt/OV/installation
2006376 ./opt/OV/installation/temp
652932 ./spool
652840 ./spool/mail
507116 ./opt/osit
500732 ./opt/osit/ESAR
495048 ./opt/osit/ESAR/portmon
461860 ./log
369320 ./tmp
367884 ./tmp/patchtool.oC5AtV
211024 ./opt/opsware
210060 ./opt/opsware/yum
210056 ./opt/opsware/yum/plugins
209808 ./opt/opsware/yum/plugins/cache
209804 ./opt/opsware/yum/plugins/cache/opsware
172368 ./lib
113368 ./opt/erm
112772 ./opt/erm/save
93152 ./opt/perf
92556 ./opt/perf/datafiles
92240 ./lib/rpm
83240 ./opt/OV/log
82552 ./opt/OV/log/OpC
61616 ./lib/rear
59596 ./lib/rear/output
46476 ./cache
44900 ./cache/yum
[root var]#

Saber qué procesos están utilizando un sistema de archivos

A veces nos interesa saber si un filesystem está siendo utilizado por alguna aplicación porque queramos hacer alguna acción sobre él. Si quisiéramos modificar algún aspecto de la estructura del FS que requisiese desmontarlo, no podríamos mientras esté en uso, así que necesitaremos saber qué proceso lo está utilizando. Lo podremos hacer con los comandos fuserlsof:

[[email protected] ~]$ /sbin/fuser /home/usuario1
/home/usuario1: 5694c 10469c 10612c
[[email protected] ~]$ ps -ef |grep 10612
usuario1 10612 5694 0 21:13 pts/0 00:00:00 vi prueba.txt

[root]# lsof /var |head
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vmtoolsd 1526 root 4w REG 253,9 5 131437 /var/run/vmtoolsd.pid
rsyslogd 1735 root 1w REG 253,9 1431 134767 /var/log/messages
rsyslogd 1735 root 2w REG 253,9 391269442 134768 /var/log/secure
rsyslogd 1735 root 4w REG 253,9 0 134766 /var/log/maillog
rsyslogd 1735 root 5w REG 253,9 22458 131165 /var/log/cron
rpcbind 1765 rpc 3r REG 253,9 0 131798 /var/run/rpcbind.lock
python 1808 root cwd DIR 253,9 4096 133424 /var/opt/opsware/agent
python 1808 root 1w FIFO 253,9 0t0 131808 /var/opt/opsware/agent/daemonbot.fifo
python 1808 root 2w FIFO 253,9 0t0 131808 /var/opt/opsware/agent/daemonbot.fifo
[root]#

Averiguar el tipo de archivo

El comando file nos dirá si un archivo es de tipo texto o binario.

[[email protected] ficheros]$ file fichero.txt 
fichero.txt: ASCII text 
[[email protected] ficheros]$

Ahora que ya has aprendido los comandos más básicos de Linux relacionado con el sistema de archivos, te interesará saber cómo funciona Logical Volume Manager o LVM, ya que la mayoría de los sistemas Linux lo utilizan. También deberás saber cómo asignar, modificar o eliminar los permisos de cada archivo y directorio.

Te puede interesar

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

SUSCRÍBETE A PUERTO53

Recibe un email periódico con los artículos más interesantes de Puerto53.com

Antes de suscribirte lee los términos y condiciones. Gracias.

Contenido Relacionado

Este es un blog de informática. ¿Qué necesita un informático?

Portátiles

Rebajas
Lenovo S145-15IIL - Ordenador portátil 15.6" FullHD (Intel Core i5-1035G1, 8GB RAM, 512GB...
  • Pantalla de 15.6" FullHD 1920x1080 pixeles 220nits Anti-glare
  • Procesador Intel Core I5-1035G1, QuadCore, 1.0-3.6GHz
  • Memoria RAM de 4GB Soldered + 4GB DIMM DDR4-2666
Lenovo S145-15AST - Ordenador portátil 15.6" FullHD (AMD A9-9425, 8GB de RAM, 512GB SSD,...
  • Pantalla de 15,6"fullhd 1920x1080 pixeles
  • Procesador amd a9-9425, dualcore 3.1ghz hasta 3.7ghz, 1m
  • Memoria ram de 8gddr4, 2133mhz
Rebajas
HP 15s-eq0004ns - Ordenador portátil de 15.6" HD (AMD Ryzen 3 3200U, 8 GB RAM, 256 GB,...
  • Procesador AMD Ryzen 3 3200U (2 núcleos, 5 MB de Caché, 2.6 GHz hasta 3.5 GHz)
  • Memoria RAM de 8 GB DDR4, 2400 MT/s
  • Disco SSD de 256 GB PCIe NVMe M.2
Rebajas
Lenovo S145-15AST- Ordenador portátil 15.6" FullHD (AMD A9-9425, 8GB RAM, 256GB SSD, AMD...
  • Pantalla de 15.6" FullHD 1920x1080 pixeles 220nits Anti-glare
  • Procesador AMD A9-9425, DualCore, 3.1GHz-3.7GHz
  • Memoria RAM de 8GB DIMM DDR4, 2133Mhz

Monitores PC

HP 22w - Monitor 21.5" (Full HD, 1920 x 1080 pixeles, tiempo de respuesta de 5 ms, 1 x...
  • Regálale a tu escritorio un toque de elegancia
  • Esta pantalla IPS de 53.61 cm (21,5 pulgadas) en diagonal dispone de 178 ángulos de visualización para ofrecer una experiencia de entretenimiento...
  • Con los puertos VGA y HDMI, esta pantalla hace que conectar tu ordenador portátil o pc de sobremesa sea una tarea sencilla y fluida
Rebajas
Samsung LC24F390FHU - Monitor para PC Desktop de 24'' (1920 x 1080 pixeles, Full HD, HD...
  • Pantalla de 24 pulgadas con una resolución de 1920 x 1080 píxeles
  • Brillo de pantalla: 250 cd / m²
  • Interfaz de montaje VESA 75 x 75 mm
Rebajas
BenQ GW2470HL - Monitor para PC Desktop de 23.8" Full HD (1920x1080, VA, 16:9, 2x HDMI,...
  • Los niveles ajustables de baja luz azul eliminan la luz azul peligrosa y mantienen la luz beneficiosa para una comodidad de visualización prolongada
  • Disfruta de gráficos nítidos con una resolución de 1920 x 1080
  • Minimiza las distracciones y crea una configuración de varios paneles con monitores de bisel estrecho

NAS

Rebajas
Western Digital My Cloud Home - Almacenamiento En Red NAS de 3 TB, 1 Bahía, Blanco y...
  • Configuración sencilla y rápida desde el teléfono
  • Acceso desde cualquier lugar con la aplicación para móviles o para ordenadores de My Cloud Home, o bien desde MyCloud.com
  • Copia de seguridad automática de las fotos y los vídeos del teléfono
Synology Diskstation DS218+ - Memoría externa DS218+ NAS 2bay
  • Procesador de doble núcleo con aceleración de cifrado AES-NI
  • No lleva disco
  • Admite la transcodificación 4K en tiempo real
Synology DS218J Diskstation
  • A versatile entry-level 2-bay NAS for home and personal cloud storage
  • Over 113 MB/s reading, 112 MB/s writing
  • Dual-core CPU with hardware encryption engine
Synology diskstation ds120j.
  • Almacenamiento de 1 bahía fácil de usar en una nube personal para usuarios de nas inexpertos
  • Rendimiento secuencial más de 112 mb/s de lectura, 106 mb/s de escritura
  • Plataforma para compartir archivos y sincronización entre dispositivos

Deja un comentario

About Author